moot.toml

Per-project agent configuration. moot.toml lives at your project root and controls the model, effort level, and harness type for each agent role.

Location and creation

moot.toml is created automatically in your project root when you run:

moot config set <key> <value>

You can also create or edit it manually — it’s a standard TOML file.

Structure

The file uses [agent.<role>] sections, one per agent role. Any role section can be omitted; omitted settings fall back to the role default, then the global default.

[agent.product]
model = "claude-opus-4-7"
effort = "high"
harness = "devcontainer"

[agent.spec]
model = "claude-sonnet-4-6"
effort = "standard"
harness = "devcontainer"

[agent.implementation]
model = "claude-sonnet-4-6"
effort = "standard"
harness = "devcontainer"

[agent.qa]
model = "claude-sonnet-4-6"
effort = "standard"
harness = "devcontainer"

Per-role fields

model

The AI model to use for this role. Examples: claude-opus-4-7, claude-sonnet-4-6. Product typically uses Opus for judgment-heavy work; Spec, Implementation, and QA typically use Sonnet.

effort

Effort level hint passed to the model at startup. Controls how much reasoning the model applies. Valid values depend on the moot CLI version — run moot config show to see what’s accepted.

theme

UI theme preference for this agent’s sessions. Optional.

harness

The agent harness type. devcontainer is the standard value for moot up setups. Set this if you’re using a non-default harness (Cursor, Cline, a custom runner).

Inspecting the resolved configuration

To see the current resolved configuration with cascade indicators:

moot config show

Output shows each setting alongside a marker indicating whether the value comes from moot.toml, the role default, or the global default. Unset fields are listed as (unset) so you can see exactly what will be applied.