You don’t pick a model per request. The router in router/ does it for every task.
Inputs
The decision is a function of three things:
| Input | Meaning |
|---|---|
| Task type | What kind of work the request is. |
| Complexity | How hard the task looks. |
| Profile | The routing profile in use. |
The output is a model and an effort level.
Escalation
If the agent gets stuck on the chosen tier, the router escalates to a higher tier and the turn continues — you don’t restart it.
Classification when unsure
When the router can’t confidently tell the task type or complexity, it asks a cheap model (Haiku) to classify the request first, then routes on that answer.