Stelladocs
API Providers

OpenRouter

One key, every vendor — vendor/model slugs pass through the gateway verbatim, per-call cost comes from the gateway's own usage accounting, and any agent can route through it independently.

OpenRouter is a gateway: one API key that fronts effectively every commercial model. If you want to try a vendor without opening an account, mix families without juggling five keys, or route a single pipeline role through a different vendor, this is the provider. Stella speaks the OpenAI-compatible dialect against https://openrouter.ai/api/v1.

Setup

export OPENROUTER_API_KEY="sk-or-..."

OpenRouter sits seventh in auto-detection — behind every direct-vendor key, ahead only of the cloud providers. Alternatively, store the key in ~/.config/stella/credentials.toml, or rename the env var Stella reads with providers.openrouter.api_key_env — see overriding the key source.

Selecting models

The provider id is openrouter; the default model is openrouter/auto — OpenRouter's meta-router, which picks a backing model per request. Gateway slugs are vendor/model, and they pass through unseeded: any slug the gateway serves works verbatim, whether or not Stella's catalog has ever heard of it. A typo fails with OpenRouter's own 400/404, not a Stella error.

stella --model openrouter/auto run "tidy the changelog"
stella --model openrouter/openai/gpt-5.5 run "review this diff as a strict judge"
stella --model openrouter/anthropic/claude-fable-5 run "refactor the scheduler"

Real prices, not catalog prices

Stella's catalog deliberately prices openrouter/auto at 0 = gateway-priced, because the honest number only exists per call. So Stella sends app attribution headers and requests the gateway's usage accounting on every response — the per-call cost recorded in your telemetry is the routed call's real price, exactly as OpenRouter billed it, not a seed-catalog estimate.

Reasoning and sampling

Stella's effort setting maps to OpenRouter's reasoning object, which the gateway translates for whichever backing vendor serves the call. The dialect also accepts the long tail of sampling parameters — including top_k and repetition_penalty — set per agent under agent_engine_config.

Per-agent gateway routing

The killer feature: agent_engine_config routes each engine agent through its own provider — so your worker can run on your direct Anthropic key while the judge routes through OpenRouter, giving you a cross-family judge without opening another vendor account:

settings.json
{
  "agent_engine_config": {
    "pipeline_worker_model": "anthropic/claude-fable-5",
    "agents": {
      "judge": {
        "provider": "openrouter",
        "model": "openai/gpt-5.5"
      }
    }
  }
}

In the pipeline

OpenRouter shines wherever the model you want is not the key you have — most often the judge seat, where cross-family judging matters most (see the Model guide). The Examples profiles show gateway-routed judge variants alongside the direct-key versions.

Catalog pricing

ModelContextIn $/MtokOut $/MtokCached-in $/Mtok
openrouter/auto128kgateway-pricedgateway-priced

The catalog price is deliberately zero — the gateway's usage accounting supplies the real per-call cost, and the Observatory's models view aggregates it per routed model.

Stella is totally free and open source, dual-licensed MIT or Apache 2.0— your choice: MIT's three-paragraph simplicity, or Apache 2.0's explicit patent grant that enterprises prefer. Use it, fork it, embed it, ship it — no account, no phone-home, no strings. What that means →

On this page