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:high

Values 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.

RoleFlagEnv 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-5

Cycle 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 (smoldefaultslow). Pass --models to scope it to a custom list:

omp --models sonnet,haiku:high

Each 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.yml to change the persistent default.

See Providers for sign-in, and Custom models & providers to add IDs your roles can target.\n

Ask Docs

AI assistant to help answer questions about the documentation. Answers are read-only and cite docs/source.

Hi! How can I help you with the documentation today? Answers are read-only and cite docs/source.

Ctrl+Enter to send