Selection
Choose model, effort, depth, and skills per layer.
A selection override sets what runs a step: which model, how much effort, what depth, which skills, and any connector-specific invocation options. Every field is optional. An override that sets nothing contributes nothing.
Layers
Overrides apply at seven layers. Later layers win.
| Layer | Where it lives |
|---|---|
default | Circuit's built-in baseline. |
user-global | ~/.config/circuit/config.yaml. |
project | .circuit/config.yaml. |
flow | Declared by the flow package. |
stage | Declared by the flow package, for one stage. |
step | Declared by the flow package, for one step. |
invocation | Passed on a single run. |
The three middle layers are flow-authored: a flow can pin what a stage or step
needs, and that declaration outranks your project config. Only invocation
outranks the flow.
In a config file, a selection override lives at defaults.selection (applies to
every run) or under circuits.<flow>.selection (applies to one flow).
Example
schema_version: 1
defaults:
selection:
model:
provider: anthropic
model: claude-opus-4-8
effort: high
depth: medium
circuits:
fix:
selection:
effort: max
skills:
mode: append
skills: [tdd]
invocation_options:
temperature: 0Config files parse with .strict(): an unknown key is rejected, so a typo fails
at parse time instead of silently dropping your override.
Fields
| Field | Description |
|---|---|
model | A provider (openai, anthropic, gemini, or custom) and a model string. |
effort | One of none, minimal, low, medium, high, xhigh, max. |
depth | One of low, medium, high, tournament, autonomous. |
skills | A skill operation (see below). |
invocation_options | A JSON object passed to the connector. Merged right-biased by layer. |
Skills
skills is a typed operation, not a plain list. Set mode, and for any mode but
inherit, a skills list. Lists must not contain duplicates.
| Mode | Effect |
|---|---|
inherit | Keep the prior layer's skills. The default. |
replace | Use this list. [] clears the set. |
append | Add these to the prior set. |
remove | Drop these from the prior set. |
Selection and the power dial
The power dial fills model and effort only when
no layer set them: it is what decides which model fills each step's
archetype. An explicit model or effort in any selection override
wins over the dial. Set the dial itself with --power on a run or
defaults.power in config; both accept auto, low, medium, or high.
With auto, the run's researcher recommends a tier, the engine clamps it to
the power_auto bounds, and the receipt reports the resolution, such as
power low (auto). Per-connector tier tables live under power_tiers (see
Connectors).