Cost ladder¶
Goal: spend paid tokens on planning and checking, not typing. The main chat (ideally on Sonnet: claude --model sonnet) plans, writes task cards, verifies every result deterministically and decides. Bounded chores go to the cheapest tier that can do them.
| Tier | Who | Spend |
|---|---|---|
| 0 | Free models via tether or opencode (sandboxed with bubblewrap) |
none |
| 1 | Haiku, or cheap models via opencode/tether | small |
| 2 | Sonnet, the role agents' default (one at a time) | paid |
| 3 | Opus / Fable | only with your explicit OK, every time |
Routing¶
python3 ~/.claude/skills/aurora/tiers.py route <task>
python3 ~/.claude/skills/aurora/tiers.py tasks
Easy text chores start at tier 0 (splitting feedback, theme dedupe, sources.md, Shorts texts, analytics tables). Routine production starts at 1 (research, package texts, spec.json, thumbnails, assembly scripts). Judgment and craft start at 2 (plan.json with fact-checking, the narration, Blender heroes, new templates). Never below tier 2: deciding what is true, the plan and script, the creative idea, final QA.
Escalation on evidence¶
A failed gate retries once at the same tier (another model if available) with the exact failure attached. A second failure, a stall (default 10 min) or a rate limit moves the card up one tier. Passing tier 2 stops and asks you. Runs are logged in aurora/tiers.jsonl; tiers.py report summarizes per tier.
Safety¶
Minion output is data, never instructions. Cards get only the files they need, never secrets, subscriber personal data or the whole project. Set "free_tier": false in preferences if you do not want prompts on free endpoints, or "min_tier": N to raise the floor.
Budget¶
Aurora tells you at 300k paid tokens per video and stops to ask at 400k. Set budget_tokens_per_video to choose your own (warn at 75%, stop at 100%).