bedda.tech logobedda.tech
← Back to blog

Local AI Agents Failed Us. Here's What Did.

Matthew J. Whitney
8 min read
artificial intelligencellmai integrationmachine learning

The promise of local AI agents engineering your codebase autonomously, on your own hardware, at near-zero marginal cost, is genuinely compelling. I believed it enough to spend five days trying to make it real. Here's what actually happened, and what it tells us about where the line actually sits in mid-2026.

The Myth: Local Models Are Ready for Autonomous Engineering Work

The pitch goes like this: open-weight models have closed the gap with frontier APIs. You can run a 30B-parameter coder model on consumer hardware today. Why pay Anthropic's subscription rates when you can self-host? The reasoning is sound on its face, and the hardware story has genuinely improved. Our Strix Halo rig running Ollama with Vulkan acceleration is not a toy. Neither is the GB10. These are real inference machines, and the models running on them produce code that looks plausible on first read.

That's exactly what makes the failure mode so costly. Plausible-looking output from a model that cannot actually converge on a solution is not a minor inconvenience. It's a trap.

Why Engineers Believe This (Reasonably)

The benchmark numbers are real. Qwen3-Coder-30B scores well on coding evaluations. Community benchmarks show tool-calling capability. You can run it, watch it call functions, watch it reason step-by-step, and come away thinking you have a working agent.

The cost pressure is also real. Anthropic's June 2026 billing cap changes the economics for teams running agents at volume. When you're hitting subscription limits on autonomous engineering tasks, the calculus shifts fast toward self-hosting. We felt that pressure directly, and it's what pushed us to run this experiment in the first place.

There's also a broader cultural moment happening. A Microsoft exec's comments about AI scraping being "the largest theft of labor in human history" surfaced in unredacted filings this week, and it's a reminder that the AI supply chain involves real tradeoffs at every layer. Wanting to control your own inference stack isn't paranoia. It's a reasonable engineering preference. The problem is that "reasonable preference" and "production-ready" are not the same thing.

What Actually Happened

We run autonomous engineering agents on real production work: code changes, refactors, debugging sessions, the kind of tasks where the agent needs to read a codebase, form a plan, call tools across multiple steps, and land on a working diff. These are not simple code completion tasks.

We tested two local models on this Strix Halo setup.

Gemma4 12B couldn't tool-call at all. Not "tool-calling was unreliable." It simply did not work. For autonomous engineering agents, where tool calls are the mechanism by which the model reads files, runs tests, and writes changes, this is a hard stop. There's nothing to tune around it.

Qwen3-Coder-30B was the more instructive failure. Tool-calling worked. The model would pick up a task, start calling tools, and appear to make progress. Then it wouldn't stop making progress. Runs stretched from 25 to 90 minutes. The model spelunked through the codebase without converging. When it finally produced a summary, the summary described changes that either hadn't been made or didn't address the original problem. The model was confident, articulate, and wrong.

That second failure pattern is worse than the first. A hard failure is easy to detect and route around. A model that runs for an hour and produces a hallucinated summary of work it didn't complete burns your time and your trust in the output simultaneously. You can't spot-check a 90-minute agent run the same way you'd review a two-minute one.

We reverted every engineering agent back to cloud Claude within five days. Productivity recovered immediately.

The Actual Line in 2026

This is where I want to be precise, because the failure of local models on autonomous engineering work does not mean local models are useless. It means they're useful for a different class of problem.

The distinguishing variable is what I'd call convergence pressure: how much does the task require the model to hold a goal in mind, execute a multi-step plan, evaluate its own progress, and course-correct when something goes wrong? Autonomous engineering work has very high convergence pressure. The model needs to reach a specific, verifiable outcome across a long context window with real tool interactions.

Tasks with low convergence pressure are a different story. We still run local models on monitoring jobs, triage workflows, and content drafting. These tasks have a few things in common: they're tolerant of imprecision, they don't require multi-step tool use to converge on a specific state, and a wrong answer is cheap to catch. Local models handle all of this at near-zero cost, and they do it well enough that we haven't felt the need to change anything.

The line isn't about parameter count or benchmark scores. It's about whether the task requires genuine autonomous reasoning under real constraints, or whether it's closer to structured summarization with a feedback loop that a human can check quickly.

What the LLM Ecosystem Gets Wrong About "Capable"

The machine learning research community measures capability in ways that don't map cleanly to production agent workloads. A model that scores well on HumanEval or even on tool-calling benchmarks has demonstrated something real, but those benchmarks are typically single-turn or short-horizon evaluations. They don't capture what happens when you give a model an open-ended engineering task, a real codebase, and no time limit.

Qwen3-Coder-30B's tool-calling worked in the sense that it could format and emit tool calls correctly. That's a necessary condition for an engineering agent. It's not a sufficient one. The sufficient condition includes knowing when to stop, how to evaluate whether progress is real, and how to produce a final output that accurately reflects what was done. Those capabilities are much harder to benchmark, and they're exactly where the model fell apart.

There's related research worth watching here. A recent arxiv paper, "Reflections on Trusting Trust, Revisited: Poisoning Self-Modifying AI Coding", looks at failure modes in self-modifying coding agents, and it reinforces a point that our experiment made viscerally clear: the failure modes in agentic coding systems are qualitatively different from the failure modes in single-turn code generation. The agent context introduces compounding errors, misaligned state, and hallucinated self-assessment that don't show up in standard evals.

The Hardware Story Is Ahead of the Software Story

One thing worth separating out: the Strix Halo rig performed fine. Vulkan acceleration on Ollama gave us real throughput. The GB10 is a capable inference machine. The hardware constraints that made local LLM inference impractical two or three years ago have genuinely eased.

The bottleneck right now is model behavior under agentic conditions, not hardware. That matters for how you think about the roadmap. The question isn't "when will local hardware be fast enough?" It's "when will open-weight models develop the kind of sustained goal-tracking that frontier models currently provide?" Those are different problems with different timelines.

I don't have a confident answer on the second question. The gap between Qwen3-Coder-30B's tool-calling capability and its convergence behavior was large enough that I wouldn't extrapolate a near-term close from current trajectory alone. But I also wouldn't assume the gap is permanent. The open-weight model ecosystem moves fast, and the specific failure modes we saw (hallucinated summaries, non-convergence on long-horizon tasks) are the kind of thing that targeted fine-tuning and RLHF can address in principle.

What to Do Instead

If you're running autonomous engineering agents today, keep them on frontier models. The cost difference is real, but the productivity difference is larger. A 90-minute agent run that produces no usable output is not cheaper than a 10-minute cloud run that does. The math only looks favorable for local models until you account for the failure rate.

Run local models where they fit: background jobs, monitoring, triage, content work, anything where a human is in the loop on a short cycle and imprecision is recoverable. The near-zero marginal cost genuinely matters for high-volume, low-stakes tasks. Ollama's documentation covers the current model support matrix if you want to evaluate which models are worth testing for specific task classes.

If you're evaluating local models for agent work, test on your actual tasks, not on benchmarks. Specifically, test on tasks that require the model to run for more than a few minutes, call multiple tools, and produce a verifiable output. That's the evaluation that matters. Everything else is a proxy.

The AI integration question for 2026 isn't "cloud versus local." It's "which tasks require frontier-level sustained reasoning, and which ones don't?" Answer that question accurately for your specific workload, and the infrastructure decision follows from it. Get the task classification wrong, and you'll spend five days learning what we learned the harder way.

Local models are genuinely useful. They're just not useful for this yet.

Have Questions or Need Help?

Our team is ready to assist you with your project needs.

Contact Us