circuit
Configuration

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.

LayerWhere it lives
defaultCircuit's built-in baseline.
user-global~/.config/circuit/config.yaml.
project.circuit/config.yaml.
flowDeclared by the flow package.
stageDeclared by the flow package, for one stage.
stepDeclared by the flow package, for one step.
invocationPassed 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: 0

Config files parse with .strict(): an unknown key is rejected, so a typo fails at parse time instead of silently dropping your override.

Fields

FieldDescription
modelA provider (openai, anthropic, gemini, or custom) and a model string.
effortOne of none, minimal, low, medium, high, xhigh, max.
depthOne of low, medium, high, tournament, autonomous.
skillsA skill operation (see below).
invocation_optionsA 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.

ModeEffect
inheritKeep the prior layer's skills. The default.
replaceUse this list. [] clears the set.
appendAdd these to the prior set.
removeDrop 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).

On this page