OpenRouter
One key, hundreds of models across vendors. Bring your own key; nothing is billed by us.
This page is written in English. The terms it explains are the ones people search for in English, and a translated term of art is a changed term.
What the harness already knows
| Provider id | openrouter |
| Base URL | https://openrouter.ai/api/v1 |
| Protocol | OpenAI-compatible chat completions |
| API key | OPENROUTER_API_KEY |
| Model discovery | Yes — the model list is asked of the endpoint rather than shipped. |
Connecting it
The endpoint above is built in, so there is nothing to configure. Put the key in the environment and the provider appears in the model picker:
export OPENROUTER_API_KEY="..."Keys are issued by OpenRouter — where to get one.
Pointing it somewhere else
A regional host, a gateway, or a server of your own. Overrides in ~/.oharness/config.json are field level, so changing the endpoint does not mean restating the rest of the provider — this is the whole block, shown holding the default so the shape is clear:
{
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1"
}
}
}What you get either way
The same agent loop, the same tools, the same MCP servers and the same permission rules, whichever provider is underneath — and switching between them mid-session converts nothing, because history is never stored in a vendor’s shape. What an agent harness is covers why that is the hard part, and the providers reference covers the catalogue itself.