The three tiers
Fast
Simple questions, quick lookups, short follow-ups. Uses a lightweight model for low latency.Default:
gpt-4.1Standard
Most coding tasks, general reasoning, multi-step problems. The everyday workhorse.Default:
claude-sonnet-4.6Premium
Complex design, architecture decisions, UI/UX work, and other tasks that benefit from maximum capability.Default:
claude-opus-4.6The default model set during
max setup (stored as COPILOT_MODEL in ~/.max/.env) is used as the standard tier model.How routing works
When a message arrives and routing is enabled, Max runs it through a three-step pipeline:Check keyword overrides
Overrides are checked first and bypass everything else — including the cooldown. If the message matches a keyword rule, the specified model is used immediately.The default override rule:
Keyword matching uses word boundaries, so
| Rule name | Keywords | Target model |
|---|---|---|
design | design, ui, ux, css, layout, styling, visual, mockup, wireframe, frontend design, tailwind, responsive | claude-opus-4.6 |
"ui" won’t match "fruit".Classify with an LLM
If no override matches, Max classifies the message as
fast, standard, or premium using GPT-4.1. If the LLM is unavailable, it falls back to standard.Short follow-up phrases (yes, no, do it, sure, looks good, etc.) inherit the tier of the previous message rather than being re-classified.Background task completion notifications always resolve to standard.Cooldown
To prevent rapid back-and-forth model switching, Max enforces a cooldown of 2 messages after any tier change. If the classified tier would require a switch but the cooldown is still active, the current model is kept for that message.Enabling and disabling routing
- TUI
- Telegram
- Natural language
⚡ auto · claude-sonnet-4.6.Manual model override
To use a specific model regardless of routing state:- TUI
- Telegram
- Natural language
~/.max/.env.
Viewing and modifying router config
The router configuration is stored in therouter_config key of Max’s SQLite state table (~/.max/max.db). You can inspect or update it by asking Max directly:
Routing examples
| Message | Classified tier | Model used |
|---|---|---|
| ”What’s 2 + 2?“ | fast | gpt-4.1 |
| ”Yes, do it” (follow-up) | inherits previous | same as previous |
| ”Fix the bug in src/auth.ts” | standard | claude-sonnet-4.6 |
| ”Design a new dashboard layout” | premium (override) | claude-opus-4.6 |
| ”Refactor the entire payments module” | premium | claude-opus-4.6 |
| ”Add a tailwind class to the button” | premium (override) | claude-opus-4.6 |
When routing is not used
Routing is skipped entirely when:- Routing is disabled (
enabled: false— the default). Max usesCOPILOT_MODELfor every message. - A manual model has been set via
/model <name>. This overrides the router and setsenabled: false. - All tiers map to the same model. If
fast,standard, andpremiumall point to the same model ID, no switch ever occurs, but classification still runs.