> ## Documentation Index
> Fetch the complete documentation index at: https://docs.remyx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Automated discovery PRs

> Automatically discover and validate ideas that fit your codebase and draft PRs for the most actionable changes or file issues for ideas worth watching.

**Set up from:** Discover > Feed (create an interest from a repo) or the [`remyxai` CLI](/cli) | **Runs in:** your repo's GitHub Actions

<Frame>
  <img src="https://mintcdn.com/remyxai/tS6N-7o4_P3JC8jD/images/outrider/outrider-v1.gif?s=9eb79d628cb6b9e29599cb7705f76dd1" alt="A scheduled action opening a draft PR that wires a paper into an existing call site" width="800" height="450" data-path="images/outrider/outrider-v1.gif" />
</Frame>

The success of an AI application depends on continuously adopting the right improvements. Identifying what to build next requires constant monitoring and evaluation of new ideas found in papers, repositories, models, benchmarks, and community discussions. Outrider automates that process by discovering new ideas, validating them against your codebase, and proposing actionable pull requests and issues—so your team can focus on building instead of scouting.

On a schedule you set, Outrider:

* **Surfaces** new work relevant to your repo from the sources Remyx indexes, ranked against what your team has actually shipped.
* **Validates fit** against your real codebase — is there a call site, and is the change architecturally aligned (a refactor, a new technique, an upgrade)?
* **Drafts the most actionable candidate** into a reviewable PR, wired into an existing module with code and tests.
* **Files an Issue instead** for ideas worth watching that aren't a clean fit yet, or that need input from the team or the source.

Outrider helps push development in the most fruitful directions without paying the upfront cost of finding and vetting each idea manually. Spend your time reviewing concrete proposals.

<Note>
  **Human-reviewed by design.** Outrider proposes changes as draft PRs and Issues, but every decision to merge remains with your team.
</Note>

***

## Quickstart

<Warning>
  You'll need to connect Remyx to your GitHub account via the [Connectors](/platform/manage/connectors) view. The [**GitHub**](/platform/manage/connectors#github) connector will install the Remyx GitHub App in your account or organization. Make sure to include access to your desired repo(s).

  Connecting [**Claude Code**](/platform/manage/connectors#claude-code) is required to draft implemented PRs (billed to your Anthropic account).

  For the CLI, also generate a [Remyx API key](/platform/admin/account#api-access).
</Warning>

Either path provisions the workflow and fires the first run. A draft PR or Issue lands in minutes.

### From the CLI

```bash theme={null}
pip install remyxai

# authenticate the CLI with your Remyx API key
export REMYXAI_API_KEY=<your-remyx-key>

# install Outrider on the repo and auto-create a Research Interest from it
remyxai outrider init --repo owner/name --auto-interest
```

`--auto-interest` creates a Research Interest from the repo; drop it and pass `--interest <uuid>` to use an existing one. If the GitHub App isn't installed yet, the command prints the install link.

**No GitHub App?** `setup-local` provisions with your own authenticated `gh` CLI instead; PRs then come from your account, not `remyx-ai[bot]`. ([details](/cli#install-without-the-github-app))

```bash theme={null}
remyxai outrider setup-local --repo owner/name --auto-interest --anthropic-key sk-ant-...
```

### From the UI

<Frame>
  <img src="https://mintcdn.com/remyxai/tS6N-7o4_P3JC8jD/images/outrider/outrider-setup-UI.gif?s=990b9eaa37bc5f2bff971bd84708f029" alt="Creating a Research Interest from a repo and choosing Set it up for me in Remyx Studio" width="800" height="450" data-path="images/outrider/outrider-setup-UI.gif" />
</Frame>

[Create a Research Interest from your repo](/platform/discover/feed#research-interests-from-a-repo) and choose **Set it up for me** — no terminal required.

***

## How it works

A run has two stages. The Remyx engine ranks a candidate pool server-side, then Outrider validates candidates against a clone of your repo and decides what to open.

**Ranking.** The pool is ranked from three inputs: your interest's context, your team's shipping history (extracted from the merge log), and a learned preference model. Candidates that match the direction your team has shipped rank above topically similar ones.

**Validation and decision.** A high relevance score does not mean a candidate is implementable; the top-ranked paper often has no call site in your repo. A selection pass checks each candidate against the codebase (code search and file reads) and picks the most implementable; if none fit, the run skips. Filters that do not call the model run first, so a run that cannot produce a useful result exits before any LLM cost. Each run ends in one of three outcomes: a draft PR, an Issue, or a skip.

```mermaid theme={null}
flowchart TD
    A["Rank candidates against<br/>your repo and its history"] --> B{"Candidate fits<br/>the codebase?"}
    B -->|"no"| SKIP["Skip<br/>no artifact, logged status"]
    B -->|"yes"| C{"Wires into an<br/>existing call site?"}
    C -->|"no"| ISSUE["Open an Issue<br/>relevant, not implementable"]
    C -->|"yes"| D["Implement<br/>code + tests"]
    D --> E{"Validators pass?<br/>integrates · no stubs · reachable"}
    E -->|"no"| ISSUE
    E -->|"yes"| PR["Open a draft PR<br/>for review"]

    classDef skip fill:#f3f4f6,stroke:#9ca3af,color:#374151;
    classDef issue fill:#fef3c7,stroke:#d97706,color:#92400e;
    classDef pr fill:#dcfce7,stroke:#16a34a,color:#166534,font-weight:bold;
    class SKIP skip;
    class ISSUE issue;
    class PR pr;
```

<CardGroup cols={3}>
  <Card title="Draft PR" icon="code-pull-request" color="#16a34a">
    The candidate integrates into an existing call site and passes the validators (tests, stub density, reachability). Outrider opens a draft PR with code and tests.
  </Card>

  <Card title="Discussion Issue" icon="message" color="#d97706">
    The candidate is relevant but not directly implementable (no call site, too many stubs, or unreachable code). Outrider opens an Issue with the attempted diff.
  </Card>

  <Card title="Skip" icon="circle-minus" color="#9ca3af">
    No candidate cleared the confidence, dedup, or fit gates. No artifact is created; the run records a [status](#run-outcomes).
  </Card>
</CardGroup>

***

## Configuration

The defaults are conservative; most repos only touch `interest-id` and the schedule.

| Input                     | Default      | What it does                                                                                                                                                                                                                 |
| ------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `interest-id`             | *(required)* | The Research Interest UUID the run draws candidates from                                                                                                                                                                     |
| `min-confidence`          | `moderate`   | Skip recommendations below `high` / `moderate` / `low`                                                                                                                                                                       |
| `draft-mode`              | `always`     | `always` (draft), `on_test_failure` (ready if tests pass), or `never` (skip on test failure)                                                                                                                                 |
| `rate-limit-days`         | `7`          | Skip the run if any Remyx PR **or** Issue landed within this window. `0` disables                                                                                                                                            |
| `lookback`                | `week`       | Candidate pool window: `today` / `week` / `month`                                                                                                                                                                            |
| `candidate-pool`          | `25`         | How many candidates the selection pass chooses from                                                                                                                                                                          |
| `test-integration-policy` | `strict`     | `strict` demotes to an Issue if new tests don't import an existing module; `soft` opens a draft with a warning; `off` skips the gate. Use `soft` for component/library repos where a standalone module *is* the contribution |
| `guardrails-allowlist`    | `''`         | Extra path globs the agent may modify, on top of the defaults                                                                                                                                                                |
| `claude-timeout`          | `900`        | Wall-clock seconds for the implementation step. Raise for large repos, lower to cap cost                                                                                                                                     |
| `pin-arxiv`               | `''`         | Implement one specific `arxiv_id` and skip selection — for reproducible re-runs                                                                                                                                              |

### Guardrails

Outrider constrains what the agent may change so a draft PR is reviewable:

* **Allowed:** `*.py` anywhere, `**/*.md`, and the `.remyx-recommendation/**` spec bundle (scrubbed before commit).
* **Always blocked** by file role (block list wins): `.github/**`, Dockerfiles, shell scripts, and dependency/build manifests (`requirements*.txt`, `pyproject.toml`, `setup.py`, lockfiles).
* **Edit-size caps:** ≤50 net lines per edit to an existing file, ≤3 new `.py` files per run, and at least one new function/class must be invoked from another changed file (an import alone doesn't count).

These caps are why a run picks an Issue over a PR when an honest implementation would be larger or more invasive than the guardrails allow.

***

## Costs

You bring your own `ANTHROPIC_API_KEY`, so Claude Code usage is billed to you:

* **Claude Code:** about **\$2 per run on average**. A run that skips after the selection pass still costs \~\$1 (it reads the repo to verify fit); a PR-track run that implements and self-reviews costs more.
* **GitHub Actions:** \~6–8 min on `ubuntu-latest` per run.
* **Remyx API:** included in your subscription.

At weekly cadence that is roughly **\$8–10/month** of Claude spend. Each run reports `cost_usd` and token counts as Action outputs.

***

## Run outcomes

Every run ends in a `status` in the Action log. The common ones:

| Status                                       | Meaning                                                                               |
| -------------------------------------------- | ------------------------------------------------------------------------------------- |
| `pr_opened` / `pr_opened_draft`              | A PR was opened (ready or draft)                                                      |
| `issue_opened*`                              | Routed to an Issue — pre-flight, no integration found, too many stubs, or orphan code |
| `skipped_low_confidence`                     | Best candidate below `min-confidence`                                                 |
| `skipped_rate_limit`                         | A Remyx artifact already landed within `rate-limit-days`                              |
| `skipped_by_selection_verification`          | No candidate structurally fit the repo                                                |
| `skipped_pr_exists` / `skipped_issue_exists` | Every candidate already has an open artifact                                          |

The full set of 18 outcomes is in the [action's README](https://github.com/remyxai/outrider#status-codes).

***

## Reviewing an Outrider PR

Treat it like a first-pass proposal from a teammate:

1. **Read the self-review** in the PR body — what the integration covers and what it left out.
2. **Run the diff and tests** locally; the action runs `pytest` + an integration check, but your full suite is the real bar.
3. **Decide** — merge, push follow-ups, or close. With the [GitHub integration](/platform/manage/connectors#github) connected, linking the PR to a Remyx experiment syncs its status automatically.

Same loop as [Implement an experiment](/tutorials/get-started/implement-an-experiment) — Outrider just initiates it on a schedule.

***

## Related

<CardGroup cols={2}>
  <Card title="Feed" icon="newspaper" href="/platform/discover/feed">
    Research Interests and the recommendations Outrider draws from
  </Card>

  <Card title="Connectors" icon="link" href="/platform/manage/connectors">
    The Remyx GitHub App and the `remyx-ai[bot]` identity
  </Card>

  <Card title="Outrider on GitHub" icon="github" href="https://github.com/remyxai/outrider">
    Action source, inputs, and full status-code reference
  </Card>
</CardGroup>
