Quick summary: In Oh-my-pi (OMP), a role is a routing alias, not an agent. The main session, a mode, or a subagent asks for
@role, andmodelRolesresolves that alias to a model plus a reasoning effort. Fallback is a separate layer inretry.fallbackChains: OMP only tries it, in order, when the running model fails, and it never load-balances. Assign models by call frequency and decision weight, then read back what is running in/model,/agents, and the status line.
I wrote this after paying for a strong model on chores that ran hundreds of times a day, and after believing my config was right while a role had quietly dropped back to auto-selection. The routing table here is my own setup, not an OMP default.
Versions I checked: the mechanics were checked against the docs and source of OMP 18.4.0 (the version installed on my machine) on 2026-10-03, plus the changelog up to 18.4.12. The config table is a snapshot from 2026-08-26. OMP changes its role list fairly often, so open /changelog before you copy anything.
I split models by workload, not by intelligence
For each role I ask two questions: how often does this role get called, and what does a wrong answer cost?
Total resource ≈ cost per call × call frequency × context volume × reasoning effortA role that writes session titles runs after every new session, so a cheap model is enough. A planning role runs a few times, but one wrong plan sends the whole session off course, so a strong model is worth paying for.
That gives me three groups. plan and slow are called rarely but set direction, so they get a strong model with high reasoning. tiny, memory, commit, smol, and background utilities run often or do narrow work, so they need to be cheap, fast, and stable. default sits in the middle: used constantly, strong enough, not necessarily maximal. Reasoning effort is its own resource too. Do not put every role on max; pick effort by decision weight and call frequency.
advisor is a special case. Its review is valuable, but it can run after every turn, so measure tokens and cost before raising its model or effort.
Opens when your account has subscriber access
This guide is for subscribers
Once your account has access, the full piece, the interactive visual and the agent call all open.
- Sign in or create a modernEngineer accountReading access belongs to your account email.
- Choose a plan on the pricing page1, 3 or 12 months, paid by VietQR bank transfer. Access opens about a minute after the money arrives.
- Or redeem a Facebook subscriber codePeople supporting the page on Facebook get an activation code by message each month.
Already a subscriber? Sign in to read.
Use this piece in your agent
Get an API keyCopy the text below and paste it into Claude Code, Codex or whichever agent you use. The agent reads the piece and checks it against the repo you have open.
Read "Model routing in Oh-my-pi (OMP): roles, fallbacks, and how to tell which model is running" on modernEngineer and apply it to this repo.
1. Call the content_get tool of the modernengineer MCP server with locale "en", slug "omp-model-routing-guide". If the modernengineer MCP server is not connected, stop and walk me through connecting it from https://modernengineer.dev/en/mcp.
2. Summarize the main steps of the piece and point out which apply to this repo.
3. Propose concrete changes and ask me before editing any file.Connect MCP in Claude Code (once)
claude mcp add --transport http modernengineer \
https://api.modernengineer.dev/mcp \
--header "Authorization: Bearer <API key>"Reading the full piece over MCP needs an API key from a subscriber account or one that bought this guide. Without access, the agent only gets the opening.
- Version
- v1.0.0
- Updated
- 26/08/2026
- Licence
- Subscriber-only; redistribution prohibited
- Slug
- omp-model-routing-guide


