Skip to content

Providers & Models

Kanna supports three providers — Claude, Codex (OpenAI), and OpenRouter — switchable per-chat from the composer.

The composer’s provider button picks between Claude, Codex, and OpenRouter. Each provider exposes its own model list and reasoning controls.

Composer provider/model picker

Register one or more Claude OAuth tokens in Settings → Providers → “Claude OAuth tokens”. Kanna rotates across them per chat and falls over automatically when one hits a rate limit — see OAuth Pool Setup.

Model Reasoning efforts Context window
Fable 5 low / medium / high / xhigh / max 200k or 1M
Opus 5 low / medium / high / xhigh / max 200k or 1M
Sonnet 5 low / medium / high / xhigh / max 200k or 1M
Opus 4.8 low / medium / high / xhigh / max 200k or 1M
Opus 4.7 low / medium / high / xhigh / max 200k or 1M
Sonnet 4.6 (default) low / medium / high / max 200k or 1M
Haiku 4.5 low / medium / high 200k

The 1M context window is a per-chat toggle, not a separate model. Pick the model, then pick its window; Kanna appends the [1m] suffix the API expects when you choose 1M. A model that offers only 200k shows no toggle.

If a chat is quietly compacting far below the window you expected, the window probably fell back to 200k — Kanna logs a warning whenever the requested window is not the one it resolved.

  • Auth — handled entirely by the codex CLI. Kanna spawns codex app-server with its own environment inherited, and injects no credentials of its own. If codex works in your shell it works in Kanna, whether that is a codex login session or an OPENAI_API_KEY you export before starting Kanna.
  • Models — GPT-5.5 (default), GPT-5.4, GPT-5.3 Codex, GPT-5.3 Codex Spark.
  • No reasoning-effort selector. Codex models carry no effort options in Kanna’s catalog; the picker shows models only.

Codex also has no compaction request of its own, so /compact on a Codex chat is summarised by Kanna itself.

  • API key auth — set the LLM provider to OpenRouter and paste an OpenRouter API key in Settings. Turns run against OpenRouter’s Anthropic-compatible endpoint (the key is injected as ANTHROPIC_AUTH_TOKEN; any ANTHROPIC_API_KEY is cleared).
  • Live model catalog — the OpenRouter model picker populates dynamically from OpenRouter’s public /api/v1/models endpoint, filtered to tool-capable models and cached for ~1 hour.
  • Billed by OpenRouter per token, independently of your Claude plan.

Provider and model can change mid-chat. The new turn uses the picked provider; previous turns stay exactly as they are.

Settings → Models is full CRUD over the Claude and Codex model lists, so a model that ships before Kanna knows about it is one form away from usable.

  • Every built-in appears as an editable copy, so you can adjust a label or the offered efforts without waiting for a release.
  • Adding an entry whose id matches a built-in merges over it field by field — fields you did not set keep their built-in values.
  • Adding a new id appends it to that provider’s list.
  • Deleting an edited built-in reverts to the built-in. Deleting a purely custom id removes it.

Built-ins are never destroyed, so the catalog cannot end up empty.