What you will set up
One Orcacode session that uses two providers at once:- The parent plans on your ChatGPT subscription (
openai-codex). It reads, breaks the task up and checks the results. - Fast and mid workers run on cheaper models through OpenRouter. They do the edits, the shell work and the reading.
- The frontier tier stays on the subscription, for work that needs the stronger model.
1. Install
orcacode from the repo you want the tools rooted in.
2. Put the parent on your ChatGPT subscription
Type/provider and pick openai-codex.
signed in with ChatGPT and there is nothing to do. Without one, picking the row starts a device login: Orcacode prints a code to enter at https://auth.openai.com/codex/device. No API key either way.
/models. Do this even if the model shown is the one you want: /models saves it, and in this run a provider switch alone did not. The next launch started on gpt-5.4.
3. Put the workers on OpenRouter
Export your OpenRouter key in the shell you start Orcacode from:/provider picker above already shows key from $OPENROUTER_API_KEY. Workers read the key themselves, so the parent stays on the subscription. You do not need to switch it to OpenRouter.
Open /subagents. Each tier is one row. Pick a row, pick a provider, type to filter its catalog and select a model.
flash in messages and in config.json. This setup uses one model per tier:
Setting a tier’s model is not enough: set default route to preference, or every worker runs on the parent’s model. Open the default route row:
preference, the parent picks one of your tier models for each worker and cannot name any other. The finished list:
Optional: a local worker
The local tier talks to an OpenAI-compatible server athttp://localhost:11434/v1, which is where Ollama listens. It needs no key. Start the server and pull a model first; the tier’s catalog is whatever the server lists. Then pick local model, then local, then the model. This run left the local tier unset.
4. Start in orchestrate mode
/mode orchestrate does the same. The status line shows the parent’s provider, model, effort and mode:
5. Run one task that fans out
The prompt names the tiers. Withpreference, the parent would choose by itself; naming them keeps the work on the cheap ones.
a allows it for the rest of the session. The workers’ own tool calls do not ask.
git status:
src/. The parent sees each worker’s final report, not every command it ran, so its summary missed them. Review git status after a delegated run. A worker’s step budget is the model steps row in /subagents.
6. What each model spent
This run
Orcacode counts the parent and each worker separately. There are three places to look. The agent panel, for each worker. While workers run, the status line showsagents N ↓. Press ↓, move to it with → and press enter. Each worker shows its provider, model and tokens in the right-hand pane. in leaves out tokens read from the provider’s cache.
/usage, for the parent. It counts the parent’s own model calls and none of the workers’. The ↑ ↓ figures on each done line are the parent’s too.
--json, for both in one file. The same task, run headless on a fresh copy of the repo, with the prompt above saved in prompt.txt:
summary event carries the parent’s usage. Each tool_result from subagent carries one worker’s usage and the route it ran on. This jq filter prints them side by side:
--json carries cost: OpenRouter’s cost for the parent’s own requests when the parent runs on OpenRouter, never for a worker.
So the worker costs below are computed from the token counts at OpenRouter’s prices on 2026-10-15, for the headless run:
The parent and the frontier tier ran on the ChatGPT subscription at no extra cost.
When every tier is paid
Because the parent ran on the subscription, this run cannot show what the split costs when every model is billed. A run that was billed per model through OpenRouter on purpose can: the docs review of 2026-09-24, in okikorg/orca-harness PR #32 (the run’s commit is57ea044).
- Models: GPT-6 Astra orchestrated through OpenRouter (status bar:
openrouter:openai/gpt-6-astra). 100 reviewers ran on GPT-6 Luna, and 25 editors, a summary and the final checks on GPT-6 Sol. - Fan-out: that run used the
workflowtool, not singlesubagentcalls like this page. - Cost: about $5.75 in all.
- Astra was about $2.94, priced from its usage panel (111 in, 11,566 out, 1,420,720 cache read, 74,880 cache write) at OpenRouter’s list rates.
- Sol was $2.08 and Luna $0.73. Those two are OpenRouter’s day totals for 2026-09-24, and no other local session used those models that day.
Next
- Subagents: every routing policy, depth, step and time budgets, background workers and sidekicks.
- Orchestrate mode: what the parent may still do itself, and approvals in headless runs.
- Providers & models: every provider, its key and where settings are saved.