remyxai CLI | Runs in: your repo’s GitHub Actions

- 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.
Human-reviewed by design. Outrider proposes changes as draft PRs and Issues, but every decision to merge remains with your team.
Quickstart
Either path provisions the workflow and fires the first run. A draft PR or Issue lands in minutes.From the CLI
--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)
From the UI

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.Draft PR
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.
Discussion Issue
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.
Skip
No candidate cleared the confidence, dedup, or fit gates. No artifact is created; the run records a status.
Configuration
The defaults are conservative; most repos only touchinterest-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:
*.pyanywhere,**/*.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
.pyfiles per run, and at least one new function/class must be invoked from another changed file (an import alone doesn’t count).
Costs
You bring your ownANTHROPIC_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-latestper run. - Remyx API: included in your subscription.
cost_usd and token counts as Action outputs.
Run outcomes
Every run ends in astatus 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 |
Reviewing an Outrider PR
Treat it like a first-pass proposal from a teammate:- Read the self-review in the PR body — what the integration covers and what it left out.
- Run the diff and tests locally; the action runs
pytest+ an integration check, but your full suite is the real bar. - Decide — merge, push follow-ups, or close. With the GitHub integration connected, linking the PR to a Remyx experiment syncs its status automatically.
Related
Feed
Research Interests and the recommendations Outrider draws from
Connectors
The Remyx GitHub App and the
remyx-ai[bot] identityOutrider on GitHub
Action source, inputs, and full status-code reference