All articles tagged "opencode" : self-hosted AI fixes, setups, and architecture notes.
I benchmarked goose, aider, Pi and opencode across 192 runs on a local Qwen3.6-35B. Aider passed 39 of 48 tasks at 3.0 minutes per correct result, while goose achieved 38 of 48 correct results at 1.6 minutes per correct result.
Read article →
My self-hosted coding-agent fleet failed task after task, on every model. The models were not the problem: seven plumbing bugs were, from a 200-character task cut to 430k tokens pushed into a 262k window. Here is each bug with its evidence and fix, plus a pytest-judged bake-off of aider, goose and opencode on a local Qwen and free NVIDIA NIM models.
From five manual sessions to twenty-seven autonomous lanes. How a self-hosted podcast engine evolved into a multi-model fleet with auto-failover, dynamic routing, and a coordinator that doesn't need me to push the button. An experiment beyond sovereignty.
I ran five opencode sessions in parallel, manually dispatching work, chasing stale trees, and learning how to coordinate AI agents without turning them into a firehose. The honest log of build day one.
I asked Qwen3.6 to redesign a stats component on sovgrid.org. It did, with real unique readers from NSM, git-based edit history, collapsable layout, and a dozen bug fixes along the way. The cost was eighteen commits, eight debugging iterations, and a growing sense that I was stress-testing my local LLM at the edge of its useful range for a feature whose value to me as operator was genuinely questionable.
Qwen3.6-35B built a working SvelteKit 5 + D3.js app from a single prompt. The build passes. The features ship. But the architecture is improvised, the code is duplicated, and it took eight debugging iterations to get here. Here's what the gap between 'works' and 'good' actually costs.
Three local, self-hostable coding-agent CLIs that drive your own vLLM models instead of a cloud API: opencode, goose, and vibe. I run opencode as primary and goose as backup on a DGX Spark, and I retired vibe. Here is the decision, with the licences, the maintenance reality, and the one config gotcha each, so you can choose for your own box.
I built a small, dependency-free harness that answers one question with numbers instead of vibes: does this enhancement make my agent measurably better, on my models, on my tasks? Here is the method, what I found, and why deterministic gates are the whole point.
Four assistants still on the table in 2026 plus one I uninstalled. Claude Code wins on raw capability, Aider wins on git discipline, opencode is now the local primary against Qwen 3.6, OpenClaw stays as the Mistral specialty. Vibe is in the postmortem column.
Two days of reverse-proxy work, a full Caddy stack with Let's Encrypt TLS and basic-auth in front of opencode web, all working. Then I realized I am not the right user for it. The actual mobile answer was already on my phone, and OpenWebUI quietly took over the other half of the use case.
Replace cloud AI coding assistants with opencode, a provider-agnostic Node CLI plus Electron desktop app. Points at any OpenAI-compatible endpoint, ships in three frontends. Includes the 2026-05-13 correction on the auto-title-generator Mistral BadRequest gotcha and the JSON-config-only setup syntax.