Model Routing: declare once who runs what — with receipts
Planr 1.2.0 turns per-task model routing into a declared contract instead of prose. Declare your agent pool once in .planr/agents.toml — the expensive model plans and judges, others implement where they are strongest and most cost-efficient — and every work packet carries its own routing from then on. Built dogfood-first: a real web app was built end to end through the routed pool, and the run's audit trail proved the plan was followed.
[profiles.frontender]
client = "cursor"
model = "claude-opus-4-8-thinking-high"
skill = "frontend-design"
[[routes]]
match = { work_type = "frontend" }
profile = "frontender"
fallbacks = ["driver"]Highlights
- Agent profile registry (
.planr/agents.toml): named profiles (client, model, effort, cost tier, paired skill) plus advisory routes with fallback chains.planr agents initwrites a commented starter — or generates individual pools from flags, or interactively (--interactive). - Routing travels in the pick packet:
planr pick --jsoncarries profile, model, skill, and fallbacks per item. Drivers dispatch from the packet alone; newplanr pick --peekreads it without taking the lease. - Use-case pools: free-form work types (
frontend,backend, ...) route to different models — declared right in the plan's task list (### TASK-001 (backend): ...) or per item. Per-item pins viaplanr item route --set. - Host-native rendering:
planr install codex|claude|cursorrenders subagent role files with model pins from the registry, in each host's exact vocabulary, including the worker's own--profilereporting instruction. - Run audit — declared vs. actual: workers report the profile they ran on; runs record the observed host from environment evidence; mismatches surface as advisory events and in
planr trace item. Review stamps (independent/single_agent) are now earned, never accidental. - Cursor as a first-class client:
planr install cursoris the one-command setup (MCP config, subagents, all ten skills). - Reliability: a WAL-conversion race that could stall parallel workers' first
pickis fixed and regression-tested under a parallel storm harness. - Docs: Model Routing guide with a five-host matrix of silent-override traps, and a replayable web-app walkthrough.
Everything is advisory by design: Planr never dispatches models and never blocks a pick — hosts stay the authority, and the audit tells you when they silently overrode you.
Install
# Homebrew
brew install instructa/tap/planr
# npm
npm install -g planr
# curl
curl -fsSL https://raw.githubusercontent.com/instructa/planr/main/scripts/install.sh | shFull changelog
Everything in this release, including the complete list of fixes and the 1.2.0-alpha.1 preview: CHANGELOG.md