ori command launches your agent with OpenRouter credentials and organization settings applied to that session, so keep launching through Ori. If you’d rather work inside Claude Desktop, it also connects to OpenRouter natively via gateway mode with an API key — see the Claude Desktop integration guide.
Install Ori
- macOS, Linux, WSL
- Windows PowerShell
ori command on this page works the same on all three platforms.
Let your coding agent set it up
You don’t need to run the setup yourself. Give this instruction to the coding agent you already use:install-ori-harness skill, and the skill gives the agent each step. The agent installs Ori, checks that the ori command works, signs you in with OAuth, and then starts your agent CLI through Ori.
If your agent is connected to the OpenRouter MCP server, you can run /install-ori-harness in the agent instead of pasting the command above.
Update Ori
To update Ori, run:Bring your own agent
Run Antigravity CLI, Claude Code, Cline, Codex, Crush, Factory Droid, fx, Grok Build, Hermes, Kilo Code, Muse Code, omp, OpenCode, OpenWork, Pi, Prime Agent, Unreal Agent, ZCode, or DeepSeek Harness with commands you already know:ori --help to see the full list for the version you have installed.
Each command starts the real agent CLI on your machine. Ori uses the CLI on your PATH, and asks to install it if it’s missing. ori dsh is the one exception: it sets up DeepSeek Harness instead of starting it. See DeepSeek Harness.
DeepSeek Harness
DeepSeek Harness (dsh) doesn’t start and stop like the other CLIs, so Ori sets it up instead of starting it:dsh the way you always do.
Set up a harness with ori harness
An ori <agent> command puts one session on OpenRouter. ori harness setup makes it the default instead: it writes the OpenRouter settings into the agent’s own config, so the agent’s desktop app and its plain command both run on OpenRouter. ori harness reset puts back what you had.
ori harness setup works only for the harnesses in this list. It doesn’t configure any other app or IDE:
Each setup needs a saved login from
ori login. A key that’s set only in your shell doesn’t work, because the agent’s app reads its settings later, outside your shell.
Setup covers the harnesses in the table above and no other app or IDE. If your organization manages Claude settings, setup stops and names the file; use ori claude instead.
Move a Claude Code setup to Codex
ori harness migrate reads your Claude Code setup and writes the Codex equivalent. Without --apply, it only reports what it would write:
CLAUDE.mdbecomesAGENTS.md, with each@-imported file appended after it.- Skills are copied with their files.
- MCP servers are appended to Codex’s
config.toml. MCP env and header values aren’t copied; each becomes a variable that Codex forwards by name, so export it before you start Codex. - Hooks, plugins, permissions, slash commands, subagents, and output styles are reported as unsupported.
--scope user to migrate ~/.claude and ~/.claude.json into your user-level Codex setup instead. --apply never replaces an existing Codex file or MCP server, and it backs up any file it appends to.
Sign in instead of managing keys
Run an agent and Ori opens a browser so you can sign in with your OpenRouter account. It uses OAuth PKCE, so there’s no new account and no key to create or paste. You can also sign in first:Your models, credits, and organization settings come with your OpenRouter login. You don’t need a separate provider key for each agent.
Any agent, any model
Pass--model and any OpenRouter model ID:
ori dsh, --model sets the default model in your dsh settings and starts nothing. For ori grok, --model is Grok Build’s own flag; it already takes OpenRouter model IDs, and Ori passes it straight through. Kilo Code and omp expect provider-scoped IDs, so Ori prefixes the model with openrouter/ for you. Without --model, ori kilo defaults to openrouter/auto and ori omp selects the OpenRouter provider and keeps omp’s own default model.
You set the model with a single flag, and Ori sends anything after its own flags to the agent unchanged:
Live model catalog and routing toggles
Every agent you launch through Ori uses your OpenRouter model catalog. There are two levels, depending on what the agent’s own app exposes:In-session catalog and toggles
For Pi (ori pi), Prime Agent (ori prime-agent), and DeepSeek Harness (ori dsh), Ori hooks the agent up to your own OpenRouter model catalog at launch:
- The
/modellist comes from your catalog, so it stays current and leaves out models your organization’s policies block. - You turn on fast routing with
/fast: Anthropic fast mode for Claude models, the Fast service tier for OpenAI models, and throughput-sorted (:nitro) routing for the rest. On Prime Agent, use/speedinstead, because Prime Agent has its own/fastcommand. - You turn on ZDR-only mode with
/zdr, so your requests go only to providers that keep no data.
ori grok) loads the same catalog into its own model picker, so you don’t need to run grok login, and its model IDs are OpenRouter model IDs. It doesn’t have the /fast and /zdr toggles.
Muse Code (ori muse) also gets your catalog: Ori seeds Muse Code’s model cache from OpenRouter before it starts, so its in-session model picker lists OpenRouter model IDs. Muse Code has no /fast or /zdr toggles either.
Model lists served by OpenRouter
For Claude Code (ori claude) and Codex (ori codex), OpenRouter serves the model list that the agent’s own picker shows. If your organization sets a model list for the agent, the picker shows only the listed models you can use, in list order, and OpenRouter refuses any other model, including one you name with --model or /model. Without a list, the picker shows every model your key can use. See Claude Code and Codex for the settings.
Launch-time catalog validation
The other agents don’t have the in-session toggles, because they don’t expose an extension surface Ori can write into. You pick a model with--model instead, and Ori validates the model ID against your catalog at launch: near-miss slugs are corrected (with a notice), and unknown IDs pass through untouched.
Guardrails, on every agent
Set guardrails, allowlists, and per-workspace permissions on your OpenRouter organization, and set workspace budgets there too. OpenRouter applies them to every request, no matter which client sends it, including an agent running through Ori.One bill across agents
You pay for Ori traffic through OpenRouter’s normal billing and activity reporting. You see it next to your other traffic in Usage Accounting and Activity Export. There’s no separate Ori bill.Frequently asked questions
Do I need an OpenRouter API key?
No. Ori signs you in with OAuth PKCE through your OpenRouter login. There’s no key to copy or paste.Do I need to change my agent workflow?
No. Keep the same agent, commands, and flags.Which agents are supported?
Antigravity CLI (ori antigravity), Claude Code (ori claude), Cline (ori cline), Codex (ori codex), Crush (ori crush), Factory Droid (ori droid), fx (ori fx), Grok Build (ori grok), Hermes (ori hermes), Kilo Code (ori kilo), Muse Code (ori muse), omp (ori omp), OpenCode (ori opencode), OpenWork (ori openwork), Pi (ori pi), Prime Agent (ori prime-agent), Unreal Agent (ori unreal), ZCode (ori zcode), and DeepSeek Harness (ori dsh) work today. Run ori --help for the list in your installed version.