The core roles
A role is a named slot omp reaches for at a specific moment. Pin a model to each role and the agent picks the right one without asking.
default
The default model. Used for every turn that isn’t covered by a more specific role — normal
implementation work, interactive chat, tool calls.
smol
Fast and cheap. Title generation, classification, retry-summary messages, anything where breadth
matters more than depth. Pin a haiku/mini/nano-class model here.
slow
Deep reasoning. Architectural decisions, gnarly debugging, the calls where one wrong turn costs more
than the extra spend. Pin an Opus-class or Codex-class model.
plan
Used by plan mode — the /plan turn and the plan-review
pass.
Four more roles exist for specific moments — vision (image-capable fallback), designer (the designer subagent), commit (commit-message generation), and task (subagent work). They resolve through the same modelRoles map.
Configure roles
Set defaults in ~/.omp/agent/config.yml (see Settings):
modelRoles:
default: claude-sonnet-4-6
smol: anthropic/claude-haiku-4-5
slow: gpt-5.3-codex:high
plan: claude-opus-4-6:highValues can be a canonical ID (claude-sonnet-4-6) or an explicit provider/model selector. A trailing :level pins a thinking level — off, minimal, low, medium, high, xhigh.
Override on launch
Each role has a flag — and all but default an env var — that override the configured default for the session.
| Role | Flag | Env var |
|---|---|---|
default | --model <id> | — |
smol | --smol <id> | PI_SMOL_MODEL |
slow | --slow <id> | PI_SLOW_MODEL |
plan | --plan <id> | PI_PLAN_MODEL |
omp --slow gpt-5.3-codex:xhigh --smol claude-haiku-4-5Cycle live with Ctrl+P
Inside a session, Ctrl+P rotates the main slot through a list of model IDs. By default the list is the configured roles (smol → default → slow). Pass --models to scope it to a custom list:
omp --models sonnet,haiku:highEach press swaps to the next ID. Patterns are fuzzy and accept globs — --models "github-copilot/*,*sonnet*" works the same way. Shift+Ctrl+P cycles backward; Alt+P opens a one-shot picker that does not write back to modelRoles.
Cycling only changes the active model for the current session. Edit
config.ymlto change the persistent default.
See Providers for sign-in, and Custom models & providers to add IDs your roles can target.\n