The 3090 Agent Bench
Local models as coding agents on one RTX 3090, graded by tests they never see.
A benchmark of local models driving OpenCode and Pi against a llama.cpp server on a single RTX 3090, and the places where the measurement itself turned out to be wrong: a Zig ledger task that needed context rather than time, an engine that got credit for its quant, a server parser that turned file contents into numbers, a client that carried my own CLAUDE.md into every prompt, a harness that decided how long the model thought, and a hidden test that asked for more than the prompt did. 27 posts, the numbers from the runs' logs.
- I blamed OpenCode; a 2-bit model passed Zig in it
- Zig's defer ends at the closing brace
- The deadlock test can't see a half-held lock
- Zig needed context, not time
- My benchmark read my CLAUDE.md
- My benchmark served the model at half speed
- The engine got credit for the quant
- 2.2x faster prefill, 1.04x faster agent
- LFM2.5 is fast. Gemma 4 finishes the job
- The models deleted the benchmark's log
- Tabby turned file contents into numbers
- The harness decided how long the model thought
- The hidden test asked for more than the prompt
- The hard tier sorted by a rollback, not by speed
- It fits in 16 GB. That was the easy question
- The model card said think harder. The audits got worse
- Claude Code read my home folder as a project
- MTP acceptance is a side effect, not a target
- Flint mistyped its path and blamed the tools
- llama.cpp's MoE cache wants gigabytes and long prompts
- The third run mattered where it cost the most
- On one RTX 3090, agent speed followed active parameters
- Most models passed the scripts. The ledgers split them
- 105 identical commands and other ways local agents fail
- 115 llama.cpp commits later, my 3090 was barely faster
- One open PR made MoE prompts 12-30% faster on my 3090
- Image input on a 27B coder costs 1.1 GiB, once