OpenCues is model agnostic across ten providers, each with a validated default model, and any model id a provider serves can be set explicitly. The shipped default is Cerebras serving gpt-oss-120b; everything below is one scalar away.
The provider table
| Provider | Default model | Auth |
|---|---|---|
cerebras (default) | gpt-oss-120b | CEREBRAS_API_KEY |
groq | openai/gpt-oss-120b | GROQ_API_KEY |
gemini | gemini-3.1-flash-lite | GEMINI_API_KEY |
openai | gpt-5.4-mini | OPENAI_API_KEY |
anthropic | claude-haiku-4-5-20251001 | ANTHROPIC_API_KEY |
openrouter | openai/gpt-oss-120b:free | OPENROUTER_API_KEY |
openai-subscription | gpt-5.4-mini | None: your ChatGPT plan via codex login |
claude-code-cli | haiku | None: your Claude plan via the claude CLI |
opencode-zen | Free model pool (set model free to walk it) | Key optional |
ollama | gemma4:e2b | None: local inference |
The rules the routing enforces
Three of them do real safety work. First, prose-bearing surfaces (word cues, sentence cues, the inline agent) refuse any provider whose terms allow training on inputs; today that's opencode-zen, which is only offered for the blanks bucket, where typing _ is explicit consent. Second, with both Cerebras and Groq keys set, the two become each other's automatic failover on rate limits and other transient errors (server, network, and billing failures), since they serve the same gpt-oss-120b weights behind the same wire shape. Third, Ollama never falls back to a cloud provider; a local request that can't be served fails visibly instead of silently leaving your machine.
Granularity: global, per bucket, per source
You can set one global pair (llm-provider: + llm-model:), override per bucket (cues-llm-*, blanks-llm-*), and override per source in an individual CUE.md's frontmatter (provider: / model:). Most-specific wins. With no config at all, an auto-order walks your available keys (Cerebras, then Groq, Gemini, Anthropic, OpenAI) and picks the first that has one; with no API keys at all, it falls back to a subscription CLI if one is installed (claude-code-cli, then openai-subscription). Keys are stored once with opencues set-key <provider> <key> and verified with opencues check-keys, which live-probes each API-key provider and reports which keys work (CLI and keyless providers aren't probed).
Which one should you pick?
That's a different question from what's supported, and the honest answer is bench-driven: see the model selection guide for the numbers, including why small nano-class models collapse on inline workloads and where local models fit.
Related: LLM provider setup · Best model for inline AI · How to switch models · gpt-oss-120b in OpenCues · GitHub repo