Manual setup
The reference below shows how to install the workflow, provide credentials, and configure its inputs.Review the installation
Check the workflow file and permissions before enabling scheduled or manual runs. The GitHub Actions log shows each run’s execution and outcome.Manual install
The CLI and the UI do this for you. Install by hand when neither is an option, or to see exactly what they do.1
Create a Research Interest and an API key
Connect the repo in studio.remyx.ai so Remyx ingests its history and creates a Research Interest; note its UUID. Create a Remyx API key under Account → API keys.
2
Add two repo secrets
Under Settings → Secrets and variables → Actions:
REMYX_API_KEY, and the secret for the provider you route at (ANTHROPIC_API_KEY, ZAI_API_KEY, MOONSHOT_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY, or BACKBOARD_API_KEY for the Backboard agent). Set by hand, the keys only ever exist in your repo; remyxai outrider init --github-secrets-only gets the same property without the manual steps.3
Allow Actions to open PRs
Settings → Actions → General → Workflow permissions → tick Allow GitHub Actions to create and approve pull requests. Without it, PR creation fails with
HTTP 403.4
Add the workflow
Save this as To route per run at a different provider, add
.github/workflows/outrider.yml. The workflow_dispatch inputs are what remyxai outrider trigger sets per run.agent, provider and model dispatch inputs and pass each backend’s secret in env:; see Model backends.5
First run
Actions → Outrider → Run workflow. A draft PR, an Issue, or a branch appears when it completes.
contents: write to push the branch, pull-requests: write and issues: write to open artifacts, plus discussions: write for the weekly digest. With a same-repo install the action mints a remyx-ai[bot] token for the artifacts and uses the workflow token only as a fallback.
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. Add --github-secrets-only to seal your provider key against the repo’s own Actions public key on your machine, so it reaches GitHub as ciphertext and no copy is stored anywhere else (see Security).
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
Use + Set up an agent on the Agents page, or create a Research Interest from your repo and choose Set it up for me. No terminal required.By hand
When the CLI isn’t an option (CI-restricted environments, org policy against helper tooling), install the action yourself. See Manual install below.Identity and install
Either path pins the marketplace action atremyxai/outrider@v1. A same-repo install needs no github-token: the action self-mints a remyx-ai[bot] App token at runtime. Commits and PRs are authored by the bot (GitHub identity remyx-ai[bot]), and the setup PR carries a Co-Authored-By: remyx-ai[bot] trailer so credit survives a squash-merge.
@v1 floats: a published Outrider release moves the v1 tag to the released commit, so a merged fix reaches every install at the next release. Change-controlled orgs can pin an exact release instead (remyxai/outrider@v1.9.0) and bump deliberately. Inside the runner, the coding-agent CLIs are installed at exact versions pinned in the action’s own package.json, Python dependencies come from a pinned requirements file, and no system packages are installed. See Supply chain.
You can also talk to a run by mentioning @remyx-ai on the PR or Issue. Research questions get read-only answers (see Deep Research); @remyx-ai validate starts a Validate run on the PR.
Steer Outrider from your repo
The selection and drafting passes read your repo before the model picks anything. The more signal the repo emits, the more precise the pick.REVIEW.md(or.github/REVIEW.md) is the highest-precedence signal: your review conventions, test bar, scope stance, benchmark expectations and anti-patterns, threaded into the drafter and the downstream fidelity and convention passes. A template is in the action repo atdocs/REVIEW-template.md.- Agent instruction files, in this order:
CLAUDE.md,AGENTS.md,.cursorrules,.github/copilot-instructions.md,CONTRIBUTING.md,CONTEXT.md. Lint and house-style rules are read from the repo’s own config (ruff, pre-commit, black, flake8) rather than hardcoded. ENVIRONMENTS.md(orENVIRONMENT.md), written by the workflow, tells the agent how to set up and run the repo’s environment.- Discussions, ranked by overlap with the candidate paper. A fork without Discussions falls back to its parent repo’s.
- Recent merged PRs supply the PR-body template and contributor conventions the convention pass applies;
.github/ISSUE_TEMPLATE/shapes Issues. - Direction signals gate the strictest pick shape, a new capability your repo lacks: a README roadmap heading, a recurring theme in
CONTEXT.md, or an open maintainer-authored[RFC]Issue. Without at least one, extension-shaped candidates are rejected. - Not re-recommending a paper. A paper is treated as discharged when an Outrider-opened Issue exists for it (open or closed), or a maintainer-opened Issue links its arXiv id. Reopen the Issue to put it back in play.
Configuration
The defaults are conservative; most repos only touchinterest-id and the schedule.
Outputs
Every output below is declared on the action, so a downstream step can read it assteps.<id>.outputs.<name>.
Concurrency
Workflows written byremyxai outrider init and setup-local key their concurrency group by what the dispatch works on (pin-arxiv, then start-from-ref, then the run id), so distinct papers or branches run in parallel while a true duplicate of the same target queues behind its predecessor. A flat group: outrider permits exactly one pending run and silently cancels the rest, which reads as a flake; installs written before this change should re-provision (init --force), and the CLI’s trigger --wait-for-slot waits for a pending run instead of cancelling it.
Guardrails
Outrider constrains what the agent may change so a draft PR is reviewable:- Fixed block:
.github/workflows/**is always off-limits. An agent editing its own workflow file is the one change that compounds silently across future runs.commit_and_pushstrips any workflow edit before the push and lists the dropped paths in the step summary.guardrails-blocklistadds your own globs on top, and blocklist matches always win. - Risky surface (flag, not block): a diff that touches dependency manifests or lockfiles, CI pipelines, git hooks, container or shell scripts is forced to draft even under
draft-mode: never, labelledrisky-surface, and gets a “review before landing” section in the PR body listing the files. A new method that genuinely needs a dependency still opens, just flagged. - Integration checks (post-session, pre-push): at most 3 new
.pyfiles per run, and at least one newly added function or class must be invoked from another changed file; an import alone doesn’t count. Violations terminate the run before any push (rejected_path_violations); orphan code downgrades the run to an Issue. - Canary: the agent must echo a per-run canary token in its final commit. A missing or wrong canary is the fingerprint of an injection that hijacked the agent’s output, and downgrades routing from PR to Issue (
issue_opened_canary_missing). - Validators: stub density, the test-integration gate, a self-review orphan check, a diff-risk score gate, and an outbound secret scan that aborts the run rather than redacting (
aborted_secret_in_payload). Each has its own Issue-route or abort status.
Costs
You bring your own model-provider key (any backend), so model usage is billed to you by that provider. Outrider runs are not charged to your Remyx balance.- Model usage: on Anthropic, a full PR-route run with the inline chain is about $5–6; recommend-only (
chain: false) is $1–3. Other backends scale with their per-token rates, which differ by an order of magnitude between a budget model and a flagship one, so compare backends on your own repo rather than on a rule of thumb: every run reports its owncost_usd, and Reports → Costs breaks spend down by agent, provider and model. A run that skips after the selection pass costs less still: it reads the repo to verify fit, then exits. - GitHub Actions: minutes on
ubuntu-latest. A run takes a few minutes to around twenty depending on the backend, the repo, and whether the chain runs; provisioned installs cap each agent phase at 60 minutes and the job at 90. - Remyx API: included.
cost_usd, input_tokens, and output_tokens as outputs and in the run summary, with a cost_basis that says where the dollars came from: backend_rate_table (computed from the vendor’s published per-token rates for the named model), backend_rate_table_approx (the model has no rate row, so the host’s default model’s rates were used), claude_code_envelope or agent_envelope (the agent CLI’s own figure), or unavailable (the backend reported no dollars; tokens are still exact). The two-tier drafter/refiner pattern is the structured way to spend less per artifact.
Weekly digest
Run a second weekly cron withmode: weekly-summary and a weekly-discussion-id input to post a 7-day digest to a GitHub Discussion: outcomes, verified costs, license distribution, and open Issues with their next actions. It requires the discussions: write permission and makes one model call per week (about $0.10–0.20 on Anthropic); the rest is GitHub API reads.