Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Thinking Levels

This page is grounded in:

  • crates/protocol/src/lib.rs
  • crates/tui/src/app/update/keys.rs
  • crates/tui/src/app/update/core_events.rs
  • crates/provider/src/llm_api/types.rs
  • crates/provider/src/providers/openai_responses.rs
  • crates/provider/src/providers/anthropic.rs

Levels

Protocol-level thinking levels are:

  • Minimal
  • Low
  • Medium
  • High
  • Max

TUI cycling (Alt+T)

Alt+T (and Alt+Shift+T) cycles this sequence:

  • Off (None) -> Medium -> High -> Max -> Off

Minimal and Low are valid protocol values but are not part of the current keyboard cycle.

If the active model does not support reasoning, TUI keeps the value unchanged and shows:

  • Current model doesn't support thinking

Support is resolved from ModelRegistry via provider+model metadata.

Provider mapping

Swarmie maps protocol levels to provider-internal levels:

  • Max -> internal Xhigh
  • other levels map 1:1 (Minimal/Low/Medium/High)

OpenAI Responses mapping uses effort strings:

  • minimal, low, medium, high, xhigh

Anthropic mapping uses either:

  • adaptive mode for models that support xhigh
  • budget-token mode (Low/Medium/High budgets)
  • Minimal disables thinking for Anthropic payloads

UI visibility

  • Footer shows Thinking: <Level> when set.
  • Streaming reasoning text appears as [thinking] ... in output rendering.