
# Choosing models

Each role (pilot, builder, reviewer) in `ade.toml` has one engine and, per engine, a model and an optional reasoning
effort. Models are family aliases, so each engine resolves its latest release. Change a role's model or effort under
`[roles.<role>]`:

```toml
[roles.builder]
provider = "claude"
models = { claude = "sonnet", codex = "gpt-6.1-sol", opencode = "openrouter/deepseek/deepseek-v4.1-flash" }
effort = { claude = "high", codex = "high", opencode = "high" }
```

Effort is off until you set it. An unset effort comes from the engine: codex takes `[providers.codex] default_effort`;
claude and opencode fall to their own user config, so set effort per role to keep lanes independent of your setup.
`ade config --roles` shows every engine's model and effort for each role, the active engine marked, and the codex compaction source.

## claude

| | |
|---|---|
| Model key | `[roles.<role>].models.claude` |
| Effort key | `[roles.<role>].effort.claude`: low, medium, high, xhigh or max |
| How ADE passes effort | `claude --effort <value>` |
| Kit default | pilot `opus`; builder and reviewer `sonnet`; effort unset |

## codex

| | |
|---|---|
| Model key | `[roles.<role>].models.codex` |
| Effort key | `[roles.<role>].effort.codex`: low, medium, high or xhigh |
| How ADE passes effort | `codex -c model_reasoning_effort=<value>` |
| Compaction keys | `[providers.codex] auto_compact_token_limit` and `context_window`, passed as `codex -c model_auto_compact_token_limit` / `model_context_window`; unset means the lane inherits `~/.codex/config.toml` |
| Kit default | `gpt-6.1-sol` for every role; effort and compaction unset |

## opencode

| | |
|---|---|
| Model key | `[roles.<role>].models.opencode`, named provider/model (openrouter/..., ollama/..., anthropic/...) |
| Effort key | `[roles.<role>].effort.opencode`: the model's own variant names |
| How ADE passes effort | `opencode --variant <value>` |
| Kit default | `openrouter/deepseek/deepseek-v4.1-flash` for every role; effort unset |

## Run one card on another engine

Set `ADE_PROVIDER` for the one command, and `ade.toml` stays as it is:

```sh
ADE_PROVIDER=codex ade conduct
```

`ADE_PROVIDER` forces every role onto that engine, using each role's model from the table above. `fake` is a built-in
engine that is deterministic and spends no usage, handy for a rehearsal.

## Change a model or effort for one run

`ade loop` and `ade conduct` take `--model ROLE=ENGINE:MODEL` and `--effort ROLE=LEVEL`, each repeatable. They hold for
that run only (lanes included); `ade.toml` is not edited, and the next run without the flags uses it:

```sh
ade loop c12 --model builder=claude:haiku --effort builder=max
```

Look any key up with `ade config WORD`.
