
I gave GLM-4.5-Air (106B, open weights) 12 coding tasks through opencode on my RTX 3090. It scored 0% β never edited a single file.
Same model, same GPU, same tasks, but driven by a ~150-line LangGraph agent instead: 93%.
The model was never the problem. The orchestrator was. Here's the benchmark β including the part nobody else measures, the electricity cost per correct task.
Setup
- RTX 3090 (24 GB) + 128 GB RAM, models via ollama, Q4 quants, temp 0.2
- 5 recent open models Γ 2 orchestrators (opencode vs custom LangGraph ReAct with ollama-native tool-calling)
- 17 graded tasks (12 coding in Python/JS/C++ + 5 general-agent) with hidden unit tests
- Every run priced in GPU watts via my open-source homelab-monitor
Results
| Model | tok/s | opencode adh. | LangGraph adh. | LangGraph coding | LangGraph general |
|---|---|---|---|---|---|
| Qwen3-Coder 30B-A3B | 130 | 92% | 100% | 100% | 100% |
| GLM-4.5-Air 106B | 5.7 | 0% | 100% | 89% | 100% |
| Devstral Small 24B | 49 | 8% | 53% | 8% | 40% |
| Seed-OSS 36B | 9.5 | 0% | 7% | 0% | 20% |
| DeepSeek-R1-Distill 32B | 6.7 | 0% | 0% | 0% | 0% |
Tool-adherence = % of tasks where the model actually called a tool instead of just printing code in chat. It was the master variable. (GLM's headline "93%" is its blended score across all 17 tasks: 89% coding + 100% general.)
Three takeaways
- The framework can matter more than the model. opencode sends a frontier-shaped system prompt + 12 tools over its OpenAI-compat path; most local models fall back to chatting. Native tool-calling through a lean agent fixes that β GLM went 0% β 93%. (Qwen3-Coder is the exception: it's tuned for agentic tool use and aces opencode out of the box.)
- Acting β solving. LangGraph made Devstral act (8% β 53% adherence) but not solve (coding stayed 8%). The framework decides whether a model acts; the model decides whether it's right.
- The wattmeter ranks honestly. Qwen solved tasks at ~0.0005 BGN each; the models that scored zero still burned 10β30Γ more energy for nothing. On a home rig, the cheapest model is the fast, correct one β and MoE (Qwen activates ~3B of 30B per token) wins twice.
Bonus: 128 GB RAM let me run the 106B GLM (23 GB VRAM + 27 GB spilled to RAM) β it works, at 5.7 tok/s. Great for fire-and-forget batch jobs, not interactive coding.
The recipe for reliable local agents
Pick a tool-use-tuned model (Qwen3-Coder 30B-A3B is the all-weather winner) β use native tool-calling, not an OpenAI-compat path β keep the harness lean β use RAM for reach, not speed β measure correctness per kWh.
π Full write-up with methodology, charts, and the deeper "why" β [https://medium.com/@arsen.apostolov/local-llm-agents-on-an-rtx-3090-i-benchmarked-5-models-2-frameworks-and-the-orchestrator-f5fd600ca221]
β Every number was priced in watts by homelab-monitor β my open-source tool that turns your GPU's power draw into per-task cost. Star it if you want the same receipts for your own rig. Harness + tasks + leaderboard code are reproducible.
United States
NORTH AMERICA
Related News
π I Built a Dropshipping Automation Pipeline β Here's What I Learned (and What I'd Do Differently)
11h ago
How I Cut My LLM API Bill by 40x: A Freelancer's Migration Story
11h ago

Mattress Firm Coupons: Save up to $600
3h ago
Google Ordered to Pay $2 Billion For Anti-Competitive Practices By Swedish Court
20h ago
The Censorship Wall: Why Every AI Companion App Ends Up Filtering You
20h ago
