Lane Arena

English | Deutsch

All Lane Arena editions · Slides · PDF

Local model vs. Claude and GPT: a pilot on real tickets

A locally hosted open-weight model competes against five cloud models: Claude Haiku 5.5, Sonnet 5.5 and Opus 5.5, plus GPT-6.1-Sol and GPT-6-Luna. The test used two real, open tickets, one medium and one hard. Every participant works in its own isolated repository clone. A fresh Opus reviewer checks every solution without learning who wrote it. In addition, hidden tests are run.

1. Results at a glance

Rule: a participant passes when the blind review returns accept or accept_with_notes. Each participant gets at most 3 rounds.

Task Participant Passed in round Implementation time (sum) Implementation cost Review cost
Medium Local model (Qwen3.8-Flash-Next) 1 353 s ~0 (local) $0.25
Medium Claude Haiku 5.5 1 57 s $0.01 $0.26
Medium Claude Sonnet 5.5 1 32 s $0.07 $0.22
Medium Claude Opus 5.5 1 83 s $0.31 $0.25
Medium GPT-6.1-Sol 1 75 s $0.085* $0.35
Medium GPT-6-Luna 1 33 s $0.007* $0.35
Hard Local model (Qwen3.8-Flash-Next) 1 491 s ~0 (local) $0.64
Hard Claude Haiku 5.5 2 369 s $0.14 $1.24
Hard Claude Sonnet 5.5 3 167 s $0.29 $1.82
Hard Claude Opus 5.5 1 126 s $0.39 $0.55
Hard GPT-6.1-Sol 2 163 s $0.28* $1.08
Hard GPT-6-Luna failed (3 rounds) 308 s $0.05* $2.16

* The GPT models ran through the Codex CLI on a ChatGPT subscription. These figures are hypothetical API list prices, computed from the logged token counts (see section 7).

Verdicts per round (findings by severity):

Task / participant Round 1 Round 2 Round 3
Medium / Local accept_with_notes (2 low)
Medium / Haiku accept_with_notes (2 low)
Medium / Sonnet accept_with_notes (5 low)
Medium / Opus accept_with_notes (3 low)
Medium / Sol accept_with_notes (3 low)
Medium / Luna accept_with_notes (5 low)
Hard / Local accept_with_notes (1 medium, 3 low)
Hard / Haiku fix_required (2 medium, 3 low) accept_with_notes (3 low)
Hard / Sonnet fix_required (2 medium, 4 low) fix_required (1 high, 3 medium, 2 low) accept_with_notes (1 medium, 5 low)
Hard / Opus accept_with_notes (3 medium, 1 low)
Hard / Sol fix_required (2 medium, 3 low) accept_with_notes (1 medium, 3 low)
Hard / Luna fix_required (2 medium, 3 low) fix_required (1 medium, 4 low) fix_required (1 medium, 3 low)

All hidden tests were green in every round for every participant.

2. Setup

2.1 Participants and invocations

Participant Invocation
Local model opencode run --format json against a local llama-server
Claude Haiku, Sonnet, Opus 5.5 claude --bare -p (Claude Code, headless)
GPT-6.1-Sol, GPT-6-Luna codex exec (Codex CLI 0.162.1, headless)

2.2 The local model in detail

Area Details
Hardware Mac Studio, Apple M5 Max, 18 CPU cores, 40 GPU cores, 128 GB unified memory. Used only as an inference server.
Model Qwen3.8-Flash-Next: MoE with 125B parameters, 6B active, as a 4-bit GGUF (UD-IQ4_XS, 93.7 GB).
Speculative decoding MTP head (Q8_0, 4.1 GB), up to 3 draft tokens
Server llama.cpp with Metal, 262k context, 2 slots, flash attention.
Sampling temp 1.0, top_p 0.95, top_k 20, min_p 0.0
Thinking / effort Thinking on, effort xhigh by template default (see section 6)
Agent opencode, context limit 235k, output limit 16k tokens

Throughput, measured live (thinking on, MTP on, no prompt cache, 2 runs each):

Measurement Prompt tokens Prefill Generation MTP acceptance
short prompt, 400 output tokens 66 (not meaningful) 57.4 / 53.6 tok/s 47 % / 41 %
16k prompt (source code) 16,259 826 / 827 tok/s (~20 s) 59.3 / 54.7 tok/s 54 % / 48 %

Earlier measurements without MTP and without thinking: generation about 50 tok/s, prefill 894 (16k), 862 (64k) and 828 tok/s (128k).

What this means for run times: an agent run is a chain of tool calls with a growing context. The local model needed 30 steps (medium) and 43 steps (hard). Every step costs prefill plus generation including thinking. That explains the 6 to 8 minutes per run.

2.3 Procedure

A round consists of implementation, saving the diff, verification with hidden tests, and a blind review. All runs were strictly sequential, never two at the same time. In a fix round the same participant gets the unchanged brief plus the findings from the previous review, but only those with severity critical, high or medium.

3. The tasks and why these

Both come from a real pool of open tickets.

Medium: role-dependent controls (frontend, React/Next.js)

Hard: reserved usernames (backend, Express/Prisma, security)

4. Isolation

Measure Implementation Limits
Own clone per participant git clone --shared at the same fixed base commit, own dependencies per clone The object database is shared read-only; writes happen only in the clone.
No push possible Remote removed in every clone; the brief forbids commit, push and new remotes No operating-system sandbox. A participant could have added a remote on purpose (not observed).
No shared context No MCP servers, no hooks, no memory for any participant. No instruction files, except one global rule about chat-template tokens for the local model. The repositories themselves have no agent instruction files.
Breakouts from the clone Permission bypass for everyone Observed: one participant once wrote a file to /tmp, one fetched a package from the network via npx once. Neither affected the result. The isolation is "own clone without a remote", not a sandbox.
Blind review Clone and review request carry only a random label Partially blind: style can give the participant away. The reviewer demonstrably does not change the clone (diff comparison after every review).
Hidden tests copied into the clone only after the diff is saved, run there, then deleted again

5. Briefs, tests and logs

6. Reasoning effort

Method: the invocations were replayed against a local proxy that captures the request body. For the local model, direct requests to the server and a look at the chat template were added.

Role Actual effort
Claude Haiku, Sonnet, Opus (implementation) medium, adaptive thinking
Claude Opus (review) medium
Local model xhigh (template default, thinking on)
GPT-6.1-Sol model default low
GPT-6-Luna model default medium

7. Time and cost

8. Observations

9. Conclusion

What the data shows:

  1. All six participants passed the medium task in round 1. On the hard task only the local model and Opus did. Haiku and GPT-6.1-Sol needed two rounds, Sonnet three, GPT-6-Luna did not make it in three rounds.
  2. Against round 1 of the others, the local model is 3.9 to 11 times slower (1.3 to 3.9 times until acceptance on the hard task) and incurs practically no API cost. The cost of a task is driven mainly by the review, that is, by the number of rounds.
  3. Only the local model's solution keeps the existing database test green without changing it.
  4. The local model ran with the highest reasoning effort. Part of its result may be due to that.

What the data does not show:

Assessment: for medium tasks, a local model on good hardware is a serious implementer: in this pilot it was slower, but not worse. For security-critical tasks, a single good result is not enough to replace the cloud models. A next run should include more tasks, set the same effort for everyone, use two reviews per solution, and use hidden tests that also check the soft edges.

Both tasks were subsequently shipped on the basis of the pilot solutions, after a further review and rework, and are running in production.