Where it lives
Persistent settings sit in ~/.omp/agent/config.yml (override the parent directory with PI_CODING_AGENT_DIR or rename the config root with PI_CONFIG_DIR). The file is a plain YAML tree; missing keys fall through to built-in defaults.
Edit it three ways:
-
/settingsinside a session — menu-driven, validates as you save. -
omp config <action>from the shell — scripted edits, see CLI reference. -
Your text editor — re-read on next launch; malformed YAML makes omp log a warning and ignore the whole file, so validate after editing.
omp config list # the full tree
omp config get modelRoles.default # one key
omp config set theme.dark catppuccin-macchiato
omp config reset theme.dark # back to schema default
omp config path # print the agent config directoryPrecedence
From highest priority to lowest:
-
CLI flag (
--slow,--no-pty,--api-key, …) -
Environment variable (
PI_SLOW_MODEL,ANTHROPIC_API_KEY, …) -
~/.omp/agent/config.yml -
Built-in default
OAuth credentials saved by /login live in agent.db alongside config.yml and follow the same lookup order: token-in-db wins over env vars for the same provider.
Top-level keys
| Key | What it controls |
|---|---|
theme | Terminal palette. theme.dark / theme.light name a built-in or user palette. |
modelRoles | Role → model map (default, smol, slow, plan, commit). See Model roles. |
steeringMode | How queued steering messages drain: one-at-a-time (default) or all. |
followUpMode | How queued follow-ups drain after a turn yields: one-at-a-time (default) or all. |
interruptMode | immediate (default) cuts an in-flight tool call short for steering; wait defers until it returns. |
tools.discoveryMode | Whether on-disk tools auto-register or require an explicit allow-list. |
debug.enabled | Surfaces the debug tool and DAP-backed flows. Off by default. |
extensions | Explicit extension paths picked up beyond auto-discovery. |
skills | Per-skill enable/disable map. |
images.autoResize | Auto-shrink attached images before send. On by default. |
searxng | Self-hosted web-search endpoint: endpoint, token, basicUsername, basicPassword. |
Listed keys are the ones most users touch; omp config list prints everything the schema knows about, including provider-specific subtrees and TUI internals.
Keybinding remaps don’t live here — they’re stored separately in ~/.omp/agent/keybindings.yaml (a legacy keybindings.json is migrated automatically). See Keybindings.
Common knobs
Pick default models for each role
The role names are stable; assign concrete model ids per the active provider catalog. omp --list-models dumps what each role could resolve to right now.
# ~/.omp/agent
```/config.yml
modelRoles:
default: anthropic/claude-sonnet-4-5
smol: anthropic/claude-haiku-4-5
slow: anthropic/claude-opus-4-6:high
plan: openai/gpt-5.3-codex:high
commit: anthropic/claude-haiku-4-5The commit role drives the /commit pipeline; bump it to a stronger model when commit messages drift, or down to a cheaper one for noisier repos.
Tune the message queue
What happens when you type while the agent is working: see Using omp for the worked timeline.
steeringMode: one-at-a-time # or: all
followUpMode: one-at-a-time # or: all
interruptMode: immediate # or: waitTurn on the debug tool
DAP integration and the debug tool surface together. Off by default so the tool palette stays focused.
debug:
enabled: truePick a theme
theme:
dark: catppuccin-macchiato
light: solarized-lightEditing safely
A malformed
config.ymldoesn’t block startup — omp logs a warning and falls back to built-in defaults, silently ignoring the whole file. Always validate withomp config listafter a manual edit.\n