How auto decides

Ask for model:"auto" and routsi classifies the current request into a difficulty level — low, medium, or high — then dispatches to the matching member. Decided on the request head, never mid-stream.

What in the config drives it

The global tiers: map. cheap: is the low member, strong: is the high member — cheap/strong are just aliases for low/high. Medium falls back to the nearest declared level.

models.yaml
tiers:
  cheap: gpt-cheap    # low
  strong: gpt-strong  # high

The same level mechanism powers named dynamic-N groups via their levels: {low, medium, high} — see Routing & stickiness.

The v1 heuristic rules scorer

Signals are taken from the current user turn only — the last user message — never the cumulative conversation history. Deliberately: client-managed history grows forever, and scoring on the full transcript would pin every long chat to "high".

The decision is checked in order — high first, then medium, else low:

LevelTriggers when the message…
HIGH contains a code fence (```), OR matches any of: prove, derive, theorem, refactor, architect, debug, optimize/optimise, "step by step", reason, analyze/analyse, "why does", "explain in detail" (case-insensitive, word-boundary) — OR is longer than 1500 characters.
MEDIUM matches any of: explain, compare, summarize/summarise, implement, design, plan, review, translate, convert — OR is longer than 400 characters.
LOW otherwise.

Worked examples

Stickiness interaction

A conversation pins to its level and only ever escalates — low → medium → high — never downgrades. The classifier can promote a thread mid-conversation but can never demote it. Full mechanics: Routing & stickiness → Sticky, escalate-only.

Fallback

If a group doesn't declare the chosen level, routsi resolves to the nearest declared one: high → medium → low; medium → low → high; low → medium → high.

Design note

This scorer is deliberately simple and fast. The Router interface is pluggable — per RouterBench, simple heuristics are competitive with learned routers — and a learned/decaying-aggregate scorer is the planned Phase-2 upgrade.

Next: Agents as models →