Local AI is not Opus
- title
- Local AI is not Opus
- type
- summary
- summary
- Alex Ellis on why "local Qwen is near-Opus" is wrong, but a tuned local model still earns its keep in a small software business
- parent
- titit-local-ai
- tags
- llm, local-models, ai-coding, self-hosted
- sources
- local-ai-is-not-opus
- created
- 2026-07-21
- updated
- 2026-07-21
Alex Ellis runs a bootstrapped software business (OpenFaaS, SlicerVM, Actuated, Inlets โ all Golang, all self-hosted infra) and has been using AI coding tools since tab-completion. This post is his ledger, not a hot take: what a local model actually did for the business, what he still won't trust it to do, and the receipts behind both. His thesis is narrow and unfashionable โ the popular claim that a local Qwen 27B is "near-Opus level" is wrong, but a well-tuned local model still delivers real, bounded value. It buys privacy, fixed cost, and protection against vendor risk. It does not replace a frontier subscription. See alex-ellis for the author.
The benchmark trap
The "near-Opus" claim leans on one number: Qwen 3.6 27B scores 77.2 on SWE-Bench Verified against Claude Opus 4.8's 88.6, so people announce that local is "only 12% behind SOTA" and a six-year-old GPU can retire a $200/mo subscription. Two problems. SWE-Bench is built from Python issues, and Python is mostly single-threaded and synchronous; Ellis's team writes distributed Go where channels, contexts, and structs span a large execution domain, which the benchmark never exercises. And because benchmarks are public, small models get tuned to score well on them โ benchmaxxing inflates exactly the number the claim rests on. The frontier models are estimated at 0.5โ2T parameters; a 27B dense model is on a different level regardless of one leaderboard.
"Local isn't about cost" is a position of privilege
The common line that local models "aren't about cost" assumes you can always reach for a subsidized $200/mo plan. Ellis points at where those subsidies bend: GitHub Copilot launched at 1500 requests for $39/mo, then quietly moved everyone to token-based pricing to loud backlash. Uber capped AI spend at $1500/mo per developer per tool โ against a $330k median salary, two maxed-out tools is roughly 12% of annual comp. The subsidy is real today and not guaranteed tomorrow. Related economics: ai-subsidy-economics, no-silver-bullet-llms.
The real driver: sovereignty and vendor risk
What actually pulls a privacy-focused business toward local is data control and vendor risk. Ellis notes that Fable 5 was pulled overnight for users outside the US โ local models are the answer to "what if the frontier labs do X?" And customer data can't legally go through cloud plans at all: running a customer's telemetry dump or diagnostic snapshot through ChatGPT Pro or Claude Max, even configured for 30-day retention, likely violates the contracts with those customers. So they wrote diag (a CLI that snapshots an OpenFaaS install), have operators email the dump, and run it through an airgapped local model in an ephemeral SlicerVM. One renewal review of a telemetry database found a customer had been under-reporting licenses and underpaying by 4โ5x for over a year โ revenue recovery that paid for the hardware, and that could never have gone through a cloud plan.
The hardware bet
Ellis dropped about $12,000 on an RTX 6000 Pro Blackwell with 96GB of VRAM (the price rose to ~$15,400 a couple of months later). It paid for itself โ but through the revenue-recovery and support use cases, not by replacing Claude. Earlier he ran dual 3090s, which were a constant source of headaches: a 27B model doesn't fit at full fidelity on one 3090, forcing tradeoffs across weight quantization, context length, and KV-cache compression (rule of thumb: bad things start at Q4_0 on the keys; his most aggressive setting was Q8_0 keys, Q4_0 values). Even with NVLink and tensor parallelism, vLLM ran 3 tok/s slower than llama.cpp at generation โ vLLM wins at production-scale concurrent serving, but for a single-user prosumer rig, startup time and latency matter more than aggregate throughput. See llm-quantization, local-llm-16gb-vram-tests.
Where it fails: long-horizon unsupervised work
The blade metaphor: heat-treating steel, if you overshoot the temper colour by one shade you start over. A local model runs so hot it shoots past the goal and loops, and nothing fixes it except killing the harness and hoping cleared context gives a different result. Concrete failures โ asked what commands to add to faas-cli, it gave reasonable suggestions then repeated them for half an hour burning 600W; asked to write a Python reverse proxy, it got the indentation wrong, tried to fix it, corrupted the file, and went progressively off the rails; it read 27.3K as 273,000; it inferred a customer would churn from a low function count, ignoring that they ran those functions many times a day. The lesson: keep local models on analysis, not interpretation, and never on long-horizon unsupervised tasks. What's "creepy" about Claude and Codex is how long they work fully unattended while making real progress โ that's the gap, not the leaderboard. This is the same shape as constraint-decay and the median-problem argument in no-silver-bullet-llms.
The working setup
Two independent llama.cpp instances on the RTX 6000, each keeping full 262144 context: the base Qwen 3.6 27B and Qwopus (a fine-tune layering chain-of-thought traces onto Qwen for better reasoning and coding). MTP speculative decoding gets ~93% acceptance, lifting sustained throughput from a stable 67 tok/s to 130โ200 tok/s โ it feels faster than a cloud model. Because two agents on one instance invalidate each other's cached prefix (the full prompt reprocesses every time), sharing the box turns into an operations problem: identity, access control, metering, quotas, routing, power monitoring. Ellis wrote "Toilgate," a vibe-coded opencode provider for access and metering, and put two Shelly Plus Plugs on the wall to watch power (the RTX 6000 pulls 600W under inference; the two 3090s draw ~750W combined and are loud). See speculative-decoding.
The trap once you can meter is comparing your per-million-token cost to GPT-5.5 API pricing โ the wrong comparison, because the value was never the token price.
Where local actually earns its keep
- Reading and explaining codebases, even ones it can't write โ Ellis calls this a superpower.
- Well-bounded maintenance driven by a detailed AGENTS.md: on alexellis/arkade, the local model added new CLIs faster than human contributors and tested its own work.
- Airgapped customer support and analysis where data can't leave the building.
- Respect the model card: temperature, context, and quantization all matter, and very low quantizations bite.
- Normalise running the same task through both a local and a cloud model.
Ellis skips 70B models (most are generations behind) and notes the 35-A3B Qwen variant is popular mainly because 3B active parameters look fast on a MacBook. Bigger models (GLM 5.2, Kimi 2.7, Minimax M3, Deepseek V4 Flash) need 4โ6 of these cards even to load a quantized copy. His blunt summary: today's 27B dense models are not cut out to write Go all day; the unglamorous Grok Coder Fast 1 was cheaper and faster and served the team well for months before deprecation.
Cross-references
- titit-local-ai โ Ted Neward's parallel argument for local AI in small businesses
- lucumr-local-models โ Armin Ronacher on why the local UX gap is product polish, not model quality
- local-llm-16gb-vram-tests โ the exact quantization / KV-cache operator knobs Ellis describes, worked out on consumer hardware
- speculative-decoding โ the MTP draft mechanism behind his 130โ200 tok/s
- llm-quantization โ weight and KV-cache quantization tradeoffs
- no-silver-bullet-llms โ models degrade away from the documented median; same conclusion from different evidence
- constraint-decay โ the measured version of "fails at bounded, convention-heavy work"
- alex-ellis โ the author