Skip to content

Models and Runtimes

Warden selects one runtime backend for a config layer and can use separate model lanes for different kinds of model work.

The runtime selects the backend used for model-backed execution. Configure it under [defaults]:

warden.toml
[defaults]
runtime = "pi"
RuntimePurpose
piDefault. Runs through Pi. Model values must use provider/model selectors.
claudeRuns through Claude Code. Requires Anthropic API key or Claude Code OAuth auth.

Runtime selection is global within a config layer. runtime is not currently a skill-level or trigger-level field.

When runtime = "pi", configured model values must include a provider prefix:

warden.toml
[defaults.agent]
model = "anthropic/claude-sonnet-4-6"

Examples:

SelectorCredential
openai/gpt-5.5WARDEN_OPENAI_API_KEY
anthropic/claude-sonnet-4-6WARDEN_ANTHROPIC_API_KEY

When runtime = "claude", use the model IDs accepted by Claude Code:

warden.toml
[defaults]
runtime = "claude"
[defaults.agent]
model = "claude-sonnet-4-6"

In GitHub Actions, set WARDEN_ANTHROPIC_API_KEY or provide Claude Code OAuth auth. Locally, Claude runtime can also use existing Claude Code auth.

Warden can use different models for different stages:

defaults.agent.modelstring
Main repo-aware skill analysis. Preferred default model field.
defaults.auxiliary.modelstring
Structured helper calls such as extraction, repair, merging, dedupe, and fix evaluation.
defaults.synthesis.modelstring
Post-analysis synthesis and consolidation. Falls back to defaults.auxiliary.model when unset.
warden.toml
[defaults]
runtime = "pi"
[defaults.agent]
model = "anthropic/claude-sonnet-4-6"
maxTurns = 30
[defaults.auxiliary]
model = "anthropic/claude-haiku-4-5"
maxRetries = 3
[defaults.synthesis]
model = "anthropic/claude-opus-4-5"

defaults.model and defaults.maxTurns are legacy shorthand for the agent lane. Prefer defaults.agent.model and defaults.agent.maxTurns in new config.

Skills and triggers can override the main agent model:

warden.toml
[[skills]]
name = "security-review"
model = "anthropic/claude-opus-4-5"
[[skills.triggers]]
type = "pull_request"
actions = ["opened", "synchronize"]
model = "anthropic/claude-sonnet-4-6"

The CLI --model flag and WARDEN_MODEL environment variable are fallbacks. They only apply when the resolved skill or trigger path does not set a model.

Main agent model precedence, from highest to lowest:

SourceNotes
skills.triggers.modelMost specific. Applies to one trigger.
skills.modelApplies to one skill.
defaults.agent.modelPreferred global default.
defaults.modelLegacy global default.
--modelCLI fallback.
WARDEN_MODELEnvironment fallback.
SDK/runtime defaultUsed when no explicit model is set.

Auxiliary and synthesis models only come from [defaults.auxiliary] and [defaults.synthesis]. They do not inherit skill or trigger model overrides.

warden build and warden improve use the synthesis lane because they generate or revise skill artifacts. Their model fallback order is:

SourceNotes
defaults.synthesis.modelPreferred generated-skill model.
defaults.auxiliary.modelFallback when synthesis is unset.
--modelCLI fallback for this command.
WARDEN_MODELEnvironment fallback.
SDK/runtime defaultUsed when no explicit model is set.