Opus-level results at 43% of the price: pay the cloud for judgment, not labour

Open-weight models on owned hardware cost nothing per call. Claude Opus is billed per token and is better at almost everything. So the point where the cloud actually earns its fee was measured: six benchmarks, fifty real GitHub issues, and twenty ways of splitting the work between the two.

Open-weight models on owned hardware cost nothing per call. Claude Opus is billed per token and is better at almost everything. The obvious plan: let the local model do the work, and call Opus only when the local model is about to get something wrong. Cloud quality, mostly at local prices.

The whole plan hangs on one question: how do you know when the local model is wrong? Get that right and you pay for Opus only on the handful of tasks that need it. Get it wrong in one direction and you've paid for the cloud on work the free model had already done. Get it wrong in the other and you've shipped the free model's mistakes.

It was measured over a few weeks, on six benchmarks, climbing from multiple-choice trivia to real GitHub issues, with twenty different ways of splitting the work. Each round sharpened the question, and the last one settled it.

The setup

Every setup in this post is built from the same three parts.

PartWhat it doesWhat it costs
The workerAn open-weight model does the task first. The smaller ones run on owned hardware, the larger ones on Cloudflare Workers AINegligible: a few cents across the whole study
The judgeSomething reads the worker's result, or watches the worker as it goes, and says how likely it is to be wrong. Also open-weightNegligible
The cloudClaude Opus, which takes over a task when the judge's doubt is high enoughBilled per token

The worker goes first on everything. The judge then decides, one task at a time, whether to escalate: hand that task to Opus and pay. That single decision is the whole subject of the post.

Here is one task going through it. A maths word problem comes in. The worker, a 7B Qwen model, answers 42. The judge, a 3.8B Phi model, is shown the problem and the answer and asked one question, "Is this answer correct?", and says yes with only 30% confidence. That is doubt enough, so the problem goes to Opus, which answers 48, the right answer, and bills about half a cent. Had Phi said 95%, the 42 would have stood, right or wrong, at no cost.

How a judge is scored. A judge is good if, when you sort the worker's answers by its doubt, the wrong ones come out on top. The score used runs from 0.5 to 1.0. Pick one wrong answer and one right answer at random: the score is the chance the judge is more doubtful about the wrong one. A coin flip scores 0.5. A judge that ranks every wrong answer above every right one scores 1.0.

How a setup is scored. Accuracy, or issues fixed, against what was spent on Opus. Spend is written as a share of what Opus-on-everything costs, so the worker alone sits at 0% and Opus alone at 100%. Sending a random share of tasks to Opus gets you the straight line between those two points. A setup is worth having only if it lands above that line.

The tasks climb from cheap to real:

BenchmarkWhat the worker has to doWhy it's hereWorkerOpus on all of it
MMLU, 600 questionsMultiple-choice trivia across 57 subjectsThe cheapest place to test the basic ideasQwen2.5-7B$1.20
GSM8K, 600 questionsGrade-school maths word problems, answer is a numberA different kind of mistake from triviaQwen2.5-7B$2.71
τ²-bench, 40 tasksAct as a customer-service agent: look up orders, process exchanges, follow store policy, chat with a simulated customerMulti-step work, where mistakes build up over a runQwen3-32B and Qwen3-8BNot spent. This one only asks who can spot a failing run
HumanEval+ and MBPP+, 540 problemsWrite a Python function, checked by a hidden test suiteCode is the real targetQwen3.8-27B$2.10
SWE-bench Verified mini, 50 issuesFix a real GitHub issue from Django or Sphinx by editing the repository, checked by the project's own testsWhere the money isQwen3.8-27B as a coding agent$4.35

Qwen2.5-7B is a general chat model. Qwen3.8-27B is a popular local coding model, and on the last row it runs as a plain command-line agent: it reads files, edits them, runs tests and submits a patch when it thinks it is done, up to 100 steps.

The judges come in three kinds:

  • Small ordinary models. Phi-4-mini (3.8B), Llama-3.2-3B and Llama-3.1-8B, asked "Is this correct?" and read for their yes/no probability.
  • The worker itself, two ways: the confidence it had while answering, which is free because it's already there, or shown its own answer and asked the same question.
  • A decision model. Clef is not a chat model. It is a 27B model built to take a situation plus a yes/no question and return a calibrated probability, nothing else. Cloudflare hosts it. It turns up in every section.

The cloud is Claude Opus 5.5 throughout, with Claude Haiku, its cheap sibling, tried once near the end. Every cost in the post is what they billed.

1. Who should decide "this answer is probably wrong"?

The local model is decent and Opus is better: 71.5% against 93.0% on trivia, 91.5% against 98.5% on maths. Opus on all 1,200 questions costs about $4. Four free ways of spotting the local model's mistakes were tried:

MethodHow it works
The worker's own confidenceHow sure was it when it answered?
Self-checkShow it its own answer and ask "Is this correct?"
A second modelAsk Llama-3.1-8B or Phi-4-mini (3.8B) the same question
A decision modelAsk Clef

To compare them: what share of questions do you have to send to Opus before the combined system is as accurate as Opus alone? Lower is better.

Judge (trivia, with Opus)Questions you must send to Opus
Clef, the decision model44%
Phi-4-mini (3.8B)79%
Llama-3.1-8B84%
The worker's own confidence88%
Self-check93%

Among the ordinary models, the smallest was the best judge, and the worker judging itself was the worst. A model checking its own work seems to share the blind spot that caused the mistake. The decision model beat all of them by a mile. On maths it was 33% with Clef against 52% for the best ordinary judge.

Even 44% isn't as bad as it sounds. "As accurate as Opus" is only a yardstick: a judge that doubts answers that were actually right sends them to Opus for nothing, and has to send many of those before the last few wrong ones get caught. The yardstick is also beatable, because sometimes the local model is right and Opus is wrong (8 of 600 trivia questions). A perfect judge would send 21.5% and score 94.3%, above Opus. Clef gets some of that: 93.2% on trivia for 68% of the money, 98.7% on maths for 62%. The margin over Opus is tiny. The saving is not.

Then code was tried, and the ordinary-model result flipped. New worker, the 27B coding model (92.6% on HumanEval+ and 76.4% on MBPP+, against Opus's 95.1% and 89.4%):

JudgeHumanEval+MBPP+
The worker checking its own code0.850.79
The worker's own confidence0.860.68
Clef (27B decision model)0.690.76
Llama-3.1-8B0.620.62
Llama-3.2-3B0.530.51

The small judge was a coin flip, and worse than random once money was involved: on MBPP+ with half of Opus's money, the worker's self-check reached 86.7%, random picks 82.9%, the 3B judge 81.4%. On trivia the judge was half the worker's size. Here it's a ninth, and judging code means reading code, which a 27B coding model does far better than a 3B generalist. Even the decision model, so strong on trivia, is a little behind the worker here.

So "small and different" was never the rule. The judge has to be capable enough to understand the work, and built to give honest probabilities. A decision model the size of the worker is the best default found here. For code, add the worker's self-check. And it's cheap: all three Clef models together judged about 8,000 answers for well under a dollar.

2. Don't set a cutoff. Set a budget and pace it

Once you can rank answers by doubt, the question becomes what's the best accuracy for a given amount of money? The simplest rule: sort every local answer from most doubtful to least, send them to Opus in that order until the money runs out, keep the rest. With Phi-4-mini judging:

BudgetTriviaMaths
$0 (local only)71.5%91.5%
Half of what Opus-for-everything costs88.7%98.3%
Opus for everything93.0%98.5%

On maths, half the money gets you within 0.2 points of Opus.

That table cheats, though. It sorts all 600 questions first, which you can only do if you have them all up front. Real work arrives one task at a time, and you decide right then whether to pay. So 1,050 questions were replayed as a stream, trivia and maths mixed, with a hard budget of 25% of Opus-for-everything, and two ways to decide were compared:

ApproachHow it decidesThink of it as
Fixed thresholdPick a cutoff once from 150 past questions, then never change itA thermostat set once in January
PacerKeep adjusting the cutoff from your own spending: escalate more when behind budget, less when aheadA thermostat that watches the temperature
ApproachAccuracyShare of budget used
Local only83.1%0%
Fixed threshold87.3%29%
Pacer92.6%100%
Perfect hindsight (sort the whole stream first)92.8%100%

The fixed threshold left 71% of its money unspent. Its cutoff was tuned on trivia, and the judge is far more confident about maths, so on the maths half of the stream it almost never fired. The money was there, and the rule had no way of noticing. The pacer spent the whole budget and landed within a point of perfect hindsight, and it held up in four different stream orders, including one that switches from all trivia to all maths halfway through.

On code the fixed threshold failed the opposite way. Tuned on HumanEval+, where the worker is confident, it escalated too eagerly on MBPP+ and ran out of money two-thirds of the way through the stream, every time. The pacer scored 85.8–86.0% in every order, against 86.1% for hindsight. It can't hoard and it can't over-spend early, because all it watches is the bill.

Two refinements that didn't help: preferring cheap questions (most doubt per dollar) was 0.3–0.8 points worse than the plain pacer, and a classic online-knapsack rule under-spent like the threshold. Keep it simple.

3. Watching an agent work

Multiple choice is a toy. The work worth splitting is multi-step: browsing, coding, using tools. So the next stop was the customer-service agent of τ²-bench. Qwen3-32B passed 15 of 40 tasks, Qwen3-8B passed 7. Plenty of room for help.

Before any Opus was paid for, it was checked whether free warning signs predict a failing run. "Free" means read off the run itself, without asking any model: did a tool call return an error, did the agent repeat the exact same call. Then each recorded run was stopped halfway and three-quarters through, and two small models were asked, "Is the agent off track?"

Signal (all 76 runs)Halfway throughThree-quarters through
Free warning signs, counted0.640.70
Phi-4-mini reading the run0.610.73
Qwen3-8B reading the run0.710.73
  • Repeated calls catch the weak model (0.82 for the 8B agent): when it's lost, it loops. The strong model fails quietly. It rarely loops, and tool errors show up in its good runs too.
  • Readers help, but modestly. Nothing got much past 0.7. Later is easier: failing runs look more like failure the longer they go.
  • The raw numbers lie, the ranking doesn't. Phi said "off track" with 45–65% confidence on average, Qwen3-8B with 6–13%, for the same runs. Neither number means anything on its own, but both rank failing runs above passing ones, which is all a pacer needs.

(The simulated customer here is a local 32B, not the stronger model the official leaderboard uses, so these pass rates can't be compared with published ones.)

The overseer, live on real bugs

Now the real test: a live agent fixing the 50 real GitHub issues of SWE-bench Verified mini, each checked by the project's own tests.

The overseer is everything above, applied mid-run:

  1. The local model works as usual.
  2. From its third step on, before every step, a gate looks at the run. Two free checks first: an exact repeated command, or three failed commands in a row. Then a judge reads the issue plus the last ten messages and answers "Is the agent on track?" as a probability. One version uses Llama-3.2-3B for this, the other Clef.
  3. A pacer turns that into a decision. It ranks the score against every score seen so far in the batch, works out what share of the remaining checks it can still afford to escalate, and escalates only when this one falls in that worst share.
  4. On escalation, Opus takes over the same conversation for 3 steps, then hands back.
  5. The budget for the batch was 25% of what Opus-only cost on the same issues.
Setup (50 real issues)Issues fixedOpus cost
Opus only48$4.35
Overseer, Clef gate38$0.89
Overseer, 3B gate34$1.18
Local only29$0

That looks like a clean win: nine more issues than local for a fifth of Opus's cost. Then it was checked which of the Clef overseer's 11 wins over local actually involved Opus doing anything:

Clef overseer: its 11 issues fixed that local-only missedCount
Opus stepped in on that issue3
Opus never acted. The same local model just succeeded this time8

Most of the gain was luck. The local model, run again on the same issue, changed its outcome on roughly one issue in four, even at temperature 0: hosted inference isn't perfectly repeatable, and a 50-step agent amplifies tiny differences. Three local-only runs fixed 29, 29 and 34. Both overseers got 3–4 genuine wins from Opus.

Two things follow from that. A single run per setup can't rank setups on 50 tasks: differences of two or three issues are noise, and every table below should be read with that in mind. And count wins by cause: "fixed because Opus stepped in" and "fixed anyway" have to be logged separately, or the overseer gets credit for luck.

4. Don't watch the work. Check the result

Judging a run in progress is hard because a run that's going badly often looks like one that's going fine, until it ends. So the order was flipped. Let the local model finish every task, then ask one question about the finished patch, "Is this a correct and complete fix for the issue?", and let Opus redo only the doubtful ones.

Who checks the finished patchSpots a bad patch
Clef, the decision model0.89
The local model checking its own patch0.84
"Did the agent submit, or run out of steps?"0.64
Llama-3.2-3B0.60

That's 0.89, against 0.6–0.7 for watching mid-run. Judging finished work is much easier than judging work in progress. Then the money question, with Opus redoing the most doubtful tasks until the budget runs out:

Opus budget (share of Opus-for-everything)20%40%50%
Check with Clef404345
Check with the local model's self-check384344
Redo random tasks333738

45 of 50 for half of Opus's cost, against 48 for Opus alone and 29 for local alone. It's a replay (real local runs and real Opus redos, combined after the fact), but it was the first setup that clearly beat the straight line between local and Opus.

5. Who should go first?

Both setups so far let the local model start and brought Opus in later. There's a mirror image: let Opus go first. It can go first in two very different ways, and they came out on opposite ends of the table.

Scout first: local explores, Opus finishes. The local model takes 10 steps (find the files, reproduce the bug), then Opus continues in the same conversation. It fixed 48, as many as Opus alone, and every win involved Opus. But it cost 110% of Opus alone: the local model finished inside its 10 steps on only 6 issues, and picking up a conversation that already holds 10 steps of someone else's work costs more than starting fresh. Handing over a short brief instead of the transcript (the files found, how to reproduce the bug, what was tried) brought it to 46 for 98%. A brief clearly beats forwarding a transcript, but here it only broke even, because the cloud agent was already lean at about 9¢ an issue. There wasn't much searching left to save.

Plan first: Opus thinks, local builds. The reverse:

  1. Opus reads the code, without changing anything, and writes a short plan: which file, which function, the exact change, and how to test it.
  2. A fresh local model gets the issue plus the plan, nothing else, and does all the editing and testing.
  3. Opus never touches the code.

A plan for a Django bug about two-digit years in HTTP dates looked like this:

File: django/utils/http.py, function parse_http_date. Change: replace the hard-coded rule ("under 70 means 20xx, otherwise 19xx") with this code [about ten lines, given in full], which reads a two-digit year as the past if it would otherwise land more than 50 years in the future. Check: parse two sample dates and expect 1994 and 2070, then run tests/runtests.py utils_tests.test_http.
Opus aloneOpus plans, local builds
Who reads the codeOpusOpus, 2–4 steps
Who edits and testsOpusThe local model, about 17 steps
Opus cost per issue (typical)6.2¢3.3¢
Issues fixed (of 50)4844 and 47 (two runs)
Issues local alone fixed that this lost0

Why it works: thinking is the cheap part of an agent. The expensive part is the long tail of editing, running tests, reading errors and trying again. Here Opus does only the thinking, in a few short steps, and the free model does the long tail. It was run with Opus capped at 8 reading steps and with no cap. Opus never used more than 4 either way, so the gap between 44 and 47 is run-to-run noise. A cousin, where Opus splits the issue into up to three subtasks and reviews the result once, fixed 44 for 40%. Three live runs of "Opus thinks, local types", three results between 44 and 47, all at 40–44% of the cost.

One surprise: checking doesn't stack on planning. The check from section 4 was expected to stack on top. But Clef couldn't tell good plan-built patches from bad ones (0.53, a coin flip, against 0.89 on patches the local model wrote alone). With three failures in 50 there was little to find, and the failures looked as convincing as the successes.

6. Everything else that was tried

A local model and Opus are a team with a big skill gap, and people have been splitting work across gaps like that forever: surgeons and assistants, help desks with tiers, two radiologists reading every scan. The obvious arrangements were turned into setups too. Everything on the same 50 issues, sorted by issues fixed. Cost is the share of what Opus-for-everything cost ($4.35):

SetupIssues fixedCloud cost
Opus only48100%
Scout: local for 10 steps, then Opus48110%
Opus plans, local builds (best of two runs)4743%
Scout with a short brief4698%
The surgical team: Opus works, local summarizes long outputs4684%
Two readers check the patch, Opus breaks ties4659%
Check the finished patch, Opus redoes doubtful ones4550%
A tiered help desk: local, then Haiku, then Opus (replay, cutoffs tuned after the fact)4549%
Opus plans, local builds (other run)4444%
Opus splits into subtasks, local builds4440%
Pair programming: Opus advises every 5 steps43206%
Route by the issue text: hard-looking ones straight to Opus4250%
Trust earned per project4250%
Overseer, Clef gate3820%
Overseer, 3B gate3427%
Local may ask Opus for help341%
Claude Haiku alone333%
Try three times, keep the best (no Opus)330%
Local only (three runs)29, 29, 340%

A few of them deserve a line each.

  • Pair programming was the most expensive setup of all. Opus looked over the local model's shoulder every 5 steps, 298 reviews in total. Twice the cost of Opus doing everything, and fewer fixed. Watching costs more than working.
  • The junior never asked. Allowed to ask Opus up to three questions per issue, the local model asked twice in 50 issues. It doesn't know when it's stuck, so you get the local model alone.
  • Three tries barely beat one. Clef picking the best of three local patches: 33, against 30.7 for picking one at random. Even a perfect picker would reach only 36. Most issues the local model fails, it fails every time.
  • A middle tier helps a little, at best. Claude Haiku alone fixed 33 for 3% of Opus's price. Putting it between local and Opus, with Clef scoring the finished patch at each tier and escalating below a cutoff, did 1–4 issues better than local-then-Opus at the same price. But both cutoffs were chosen after the fact on these same 50 issues, so the real gain is probably smaller.
  • A second reader added nothing. Clef and the local model disagreed on only 8 of 50 patches, so the Opus tie-breaker had little to do. Clef alone, given the same money, also fixed 46.
  • Seeing the work beats predicting it. Guessing from the issue text alone was decent (0.81), but fixed 42 against 45 for checking the finished patch at the same price.
  • The surgical team had nothing to do. Only 7 of 50 issues produced a long output for the local model to summarize. It saved 16%.

Judgment, not labour

Sort that table by what Opus was actually paid to do, and one pattern covers all of it:

What Opus was paid forSetupsIssues fixedCloud cost
Think briefly up front, then leaveWrite a plan, split into subtasks44–4740–44%
Read the finished work, redo only what's doubtfulCheck the patch, two readers, the tiered desk45–4649–59%
Stay involved throughoutPair programming, the surgical team, scout then take over43–4884–206%
Step in mid-run, when a gate or the local model callsThe overseers, ask a senior34–381–27%
Do everythingOpus only48100%

The cloud model is worth paying for its judgment, not its labour. Where Opus thought for a few steps and left, the free model did the rest nearly as well as Opus does it, for under half the price. Where Opus stayed to work or to watch, the bill climbed back to Opus's own, or past it, because the long tail of an agent's work (edit, run, read the error, retry) is the expensive part no matter who does the thinking. And where the decision to call Opus was left to the run itself, mid-flight, it barely got called at all: a struggling run looks fine from the inside.

What should be built

For coding:

StepWhat happensCostEvidence
1. The cloud model writes a short planRead-only, a few steps, then it leavesA few cents44–47 of 50 at 40–44% of Opus-only
2. The local model does the work, following the planAlwaysFree
3. Stop a run that's clearly stuckRepeated identical calls, error streaksFreeCatches a weak model's loops
4. Judge the result by its testsAfter the local model finishesFreeA check model can't sort plan-built patches

For work without a plan, quick answers or tasks where planning isn't worth it:

StepWhat happensCostEvidence
1. The local model does the workAlwaysFree
2. Check the finished resultA decision model the worker's size asks "is this correct?" For code, the worker checks itself tooCents0.89 on finished patches, against 0.6–0.7 for watching mid-run
3. The cloud model redoes what the check doubtsOnly the doubtful onesPaid45 of 50 at half the cost
4. A pacer sets how strict step 3 isAlwaysCaps the billBeat a fixed cutoff whether the cutoff under-spent or over-spent

Leave out: a cloud model watching every few steps, letting the local model decide when to ask for help, and running the local model several times. If the cloud model ever has to take over mid-task, hand it a short brief, never the transcript.

The scorecard

Every question asked along the way, and what the data said:

QuestionAnswer
Who spots a wrong local answer best?A model built for judging: a 27B decision model beat every ordinary model on trivia and maths, by a wide margin. On code, the worker checking its own code. A judge too small to understand the work is a coin flip
How should you limit cloud spend?Set a budget and pace it. A fixed confidence cutoff under-spent on one task and ran out of money early on another. Pacing landed within a point of perfect hindsight
Can you tell, mid-run, that an agent is going wrong?Barely. Watchers reading a run halfway scored 0.6–0.7, on a scale where 0.5 is a coin flip. On real bug fixes, mid-run rescues by Opus won 3–4 issues of 50
Can you tell from the finished work?Yes. A decision model reading the finished patch scored 0.89, and letting Opus redo what it doubted fixed 45 of 50 for half of Opus's cost
What was the best deal on real bug fixes?Opus writes a short plan, the local model builds it: 44–47 of 50 fixed for 40–44% of what Opus alone costs. Opus alone fixed 48
What didn't work?Opus advising every few steps (twice Opus's cost), the local model scouting and then handing over (more than Opus's cost), letting the local model ask for help (it almost never asks), and running it three times

The short version

A handful of models and six benchmarks don't make a law. But for anyone splitting work between a model on their desk and one in a datacenter, four defaults are the place to start. Pay the cloud model for judgment, not labour: a short plan from the expensive model makes the free one far more capable, and keeping it around afterwards mostly adds cost. Let the local model finish, then check the result, rather than trying to spot trouble along the way. Let whoever best understands the work do the checking: a decision model for simple answers, the worker itself for code. And let a paced budget decide how much doubt you can afford.

A plug

Does your local model live on a Mac at home while you work from somewhere else? Do you want to watch the local agent build, see the moment Claude is called, and nudge either of them from your phone or any browser? Every run in this post was driven that way, from a Mac in another room. Try reminal.

#agents#llms#evals#economicsreminal →