Back to work
Model Routing Claude Code v1 Killed on Evidence Private Repo

Torque

An automatic transmission for Claude Code: score every prompt, route it to the cheapest model that can still handle it, and shift models mid-session without losing the conversation. Six measured validation runs established that the v1 classifier does not work — and exactly why. This page publishes that result rather than hiding it.

By the Numbers

The Problem

On a Max subscription, roughly 94% of tokens go to the most expensive model available, regardless of whether the turn needed it. Most turns don't. The obvious fix is a router: read the prompt, guess the difficulty, send easy work to a cheaper model.

Every competing router does exactly that — and none of them publishes a number saying whether it works.

What Six Runs Established

The headline result is negative and it is precise. Across 37 turns, the classifier's score does not discriminate between routes that turned out adequate and routes that turned out inadequate:

One thing did work. Routing on work state — files touched, tests red, task open, tool failures — rather than on the sentence was worth +12 points (66.7% → 78.6%). Independently corroborated: ACRouter reports +15.3% from the same idea.

The Prize Is Still Real

18 of 37 turns could have run on a cheaper model with no loss of quality. A perfect oracle roughly doubles a Max subscriber's quota on the expensive model. Not 5–10x — that would need the trivial slice routed to the smallest model, and that model measured 60–63% adequate in every run.

The gap between that ceiling and the current classifier is the entire remaining product.

Why This Is On The Site

A router that shipped without measurement would have looked better here and been worth less. The measurement is the asset: six runs, ~110 labelled rows, and a competitive landscape where several direct competitors exist and not one of them publishes a single validation number.

It also caught its own error. An early run reported 48.6% adequate; a validation harness had reimplemented a production routing rule by hand instead of calling it, and the drift surfaced as a plausible wrong number rather than a crash. The figure is recorded as a lower bound, not a measurement. That correction is in the record too.

Direction

Stop building the classifier. Build the discriminator — route on what the work is doing, not on what the sentence looks like. The dataset to train that already exists.

Tech Stack

TypeScript ESM monorepo · @torque-cc/engine · Tauri 2 · SolidJS · Rust backend · Node validation harness