Configuration

Configuration

Generated by atelier --emit-docs from the merged, redacted effective configuration — this reference is derived from the binary and cannot drift from the source of truth. Secrets are never emitted: API keys appear only as the name of the environment variable that supplies them, and prompt bodies are reduced to a prompt_source label. [presets.*] is documented separately because it is materialized only by the --init-config starter template, not by the merged config.

Effective configuration

The complete redacted config, byte-identical to atelier --print-config:

schema_version = 1
approval_mode = "yolo"

[workspace]
extra_read_roots = []
extra_write_roots = []
allow_unrestricted_reads = false

[features]
parallel_step_groups = false
governance_early_abort = false
execution_graph = false
mcp_enabled = false

[grading]
enabled = false
max_attempts = 2

[approval]
floor = "warn"

[ui]
hide_banner = false
prompt_history_enabled = true
prompt_history_max = 200

[limits]
max_agent_steps = 12
max_step_actions = 20
max_wall_clock_minutes = 30
max_step_minutes = 10
max_command_minutes = 10
max_review_fix_cycles = 2
max_parallel_agent_steps = 2

[council]
default_preset = "default"
timeout_seconds = 900
execution_mode = "serial"

[council.presets.default.architect]
runtime = "http_api"
model = "glm-5.1"
effort = "high"
thinking = true
prompt_source = "inline_redacted"

[council.presets.default.reviewer]
runtime = "http_api"
model = "glm-5.1"
effort = "medium"
thinking = true
prompt_source = "inline_redacted"

[council.presets.default.security]
runtime = "http_api"
model = "glm-5.1"
effort = "high"
thinking = true
prompt_source = "inline_redacted"

[runtimes.claude]
type = "claude"
command = "claude"
prompt_mode = "stdin"

[runtimes.codex]
type = "codex"
command = "codex"
prompt_mode = "stdin"

[runtimes.cursor]
type = "cursor"
command = "cursor-agent"
prompt_mode = "stdin"

[runtimes.http_api]
type = "http_api"
base_url = "https://api.z.ai/api/paas/v4"
api_key_env = "ZAI_API_KEY"

[agents.consul]
display_name = "Consul"
runtime = "http_api"
model = "glm-5.1"
effort = "high"
thinking = true
capabilities = [
    "read",
    "challenge",
]
prompt_source = "inline_redacted"
enabled = true

[agents.designer]
display_name = "Designer"
runtime = "codex"
model = "default"
effort = "high"
thinking = false
capabilities = [
    "read",
    "edit",
    "verify",
]
prompt_source = "inline_redacted"
enabled = false

[agents.explorer]
display_name = "Explorer"
runtime = "codex"
model = "default"
effort = "medium"
thinking = false
capabilities = ["read"]
prompt_source = "inline_redacted"
enabled = true

[agents.fixer]
display_name = "Fixer"
runtime = "codex"
model = "default"
effort = "high"
thinking = false
capabilities = [
    "read",
    "edit",
    "command",
    "verify",
]
prompt_source = "inline_redacted"
enabled = true

[agents.librarian]
display_name = "Librarian"
runtime = "http_api"
model = "glm-5.1"
effort = "medium"
thinking = true
capabilities = [
    "read",
    "answer",
]
prompt_source = "inline_redacted"
enabled = false

[agents.oracle]
display_name = "Oracle"
runtime = "http_api"
model = "glm-5.1"
effort = "medium"
thinking = true
capabilities = [
    "read",
    "answer",
]
prompt_source = "inline_redacted"
enabled = true

[agents.orchestrator]
display_name = "Orchestrator"
runtime = "http_api"
model = "glm-5.1"
effort = "high"
thinking = true
capabilities = ["plan"]
prompt_source = "inline_redacted"
enabled = true

[agents.reviewer]
display_name = "Reviewer"
runtime = "codex"
model = "default"
effort = "high"
thinking = false
capabilities = [
    "read",
    "command",
    "verify",
    "review",
]
prompt_source = "inline_redacted"
enabled = true

[keybindings.normal]
input-kill-to-end = "ctrl+k"
input-kill-to-start = "ctrl+u"
input-kill-word-back = "ctrl+w"
input-line-end = "ctrl+e"
input-line-start = "ctrl+a"
scroll-bottom = "end"
scroll-page-down = "pagedown"
scroll-page-up = "pageup"
scroll-top = "home"
toggle-roster = "ctrl+l"

Sections

Workspace — [workspace]

Read/write roots and workspace policy that bound every filesystem action.

Features — [features]

Opt-in feature flags (for example, parallel_step_groups, governance_early_abort).

Approval — [approval]

Approval-system posture — the gray-area floor (warn / enforce) that governs in-between actions.

UI — [ui]

Terminal UI preferences (for example, hide_banner).

Keybindings — [keybindings]

The effective key map, shown as [keybindings.<context>]action = "key". Honored only from user-scope config (home or --config); a project-local config’s [keybindings] is ignored. Set an action to false to unbind it.

Limits — [limits]

Run guardrails such as the maximum number of parallel agent steps.

Council — [council]

The serial review workflow: default preset, timeout, execution mode, and the review-member presets.

Runtimes — [runtimes]

Runtime definitions (codex, claude, cursor, http_api, fake), each keyed as [runtimes.<name>] in the block above.

Agents — [agents]

Agent profiles — runtime, model and fallback chain, effort, capabilities, tools, and prompt source — each keyed as [agents.<name>] in the block above.

Presets — [presets.*]

Presets are named bundles of agent overrides that you can switch between with a single top-level key. Unlike the sections above, [presets.*] does not appear in the generated reference: presets are only ever materialized into the merged configuration when one is selected, so atelier --print-config shows the resulting [agents.*] values, never the preset definitions themselves. This section is therefore hand-written and lives alongside the generated reference.

Selecting a preset

Set the top-level preset key to the name of the preset you want active:

preset = "fast"

A preset is applied before your local [agents.*] overrides, so a value you set directly on an agent always wins over the same value coming from the preset. The precedence, lowest to highest, is: built-in defaults → home config → active preset → local [agents.*] → CLI flags.

Defining a preset

Each preset is a table under [presets.<name>.agents.<agent>]. Inside it you may override any field of an agent profile — runtime, model, model_fallbacks, effort, thinking, capabilities, tools, the prompt-source fields (instructions, instructions_file, instructions_append_file), orchestrator_description, and enabled:

# A "fast" preset that swaps the fixer onto a lighter model with a minimal
# reasoning effort, leaving every other agent at its default.
[presets.fast.agents.fixer]
model = "default"
model_fallbacks = ["glm-5.1"]
effort = "minimal"

# Presets may touch any number of agents.
[presets.fast.agents.reviewer]
effort = "medium"

You can define multiple presets in the same file and switch between them by changing the single preset key — only the selected preset’s overrides are applied; the others are inert. Selecting a different preset never leaks fields from a previously defined preset.

Council review presets are a separate mechanism: they live under [council.presets.*] (documented in the Council section above) and configure the serial review workflow, not the main agent roster.