Coding Assistants on a Sovereign Stack: Claude Code, opencode, Aider, OpenClaw (and why Vibe got retired)
Claude Code wins on raw capability and ergonomics. Aider wins on git-safety discipline and stability. opencode is now the local primary on this stack, paired with Qwen 3.6 PrismaQuant, and the strict-alternation tool-call bug that haunted the Mistral era is gone. OpenClaw stays installed as the Mistral specialty for vision and German prose workloads. Vibe is in the postmortem column with a clean shutdown explanation.
Quick Take
- Claude Code (Anthropic API): Claude Opus 4.7 underneath. Highest SWE-Bench, smoothest UX, vendor-locked, bills per token. The right pick if budget is not the constraint and the codebase has no sovereignty requirement.
- Aider: 4.1 million installs, the oldest and most mature tool. Git-commit discipline is its defining property. The safe default for multi-year repositories.
- opencode: 162,000+ GitHub stars by mid-2026, Go-based TUI, 75+ provider integrations including a clean local Qwen 3.6 path. Now the local primary on this stack. The mobile-UI secret (Tailscale bundled mode plus Basic Auth) is the unique-on-sovereign-stack feature.
- OpenClaw (sovgrid stack): the Mistral-specialty assistant. Side-car proxy resolves the alternating-roles BadRequestError on SGLang. Stays installed for vision and German-prose workloads where Mistral is the right model.
- Vibe (retired): worked against SGLang Mistral until the Qwen 3.6 migration in May 2026. The strict-alternation tool-call bug never fully resolved against Mistral. Postmortem in this article. Uninstalled in production, kept on disk for archive.
- The honest pattern: dual-stack. Claude Code for capability-bound work without sovereignty constraints, opencode plus Qwen on the local side. Aider is the third leg if git discipline is binding on either path.
What each tool is, in one paragraph
Claude Code is Anthropic’s first-party coding agent. It runs in the terminal, integrates with the Anthropic API at vendor-set token prices, and scores at the top of SWE-Bench Verified in 2026 thanks to Claude Opus 4.7 as the underlying model (Sonnet 4.6 for mid-tier work). The ergonomics are smooth, the tool-call protocol is reliable, and the cost is real and metered. The vendor risk is real: Anthropic has temporarily restricted third-party access in the past, and the tool is fundamentally a wrapper around an API the user does not control.
Aider is the mature open-source coding assistant. 39,000 GitHub stars, 4.1 million installs, the oldest tool in the category. The defining property is git-commit discipline: every change is a commit, every commit has a working message, every reset is recoverable. Aider is slower than the newer tools per iteration, but harder to lose work to. For solo developers and small teams who treat git history as load-bearing, Aider is the default and probably should be.
opencode is the open-source breakout of 2026. 162,000+ GitHub stars by mid-year, vendor-reported 6.5 million monthly active developers (treat that number as a vendor-published metric, not an audited one). Go-based TUI built on Bubble Tea, 75+ provider integrations covering Anthropic, OpenAI, Gemini, and local LLMs via Ollama or OpenAI-compatible endpoints. Two agent modes: --plan reads only, --build writes files. SDK for embedding in scripts. The right pick for the local side of a sovereign stack when you have Qwen 3.6 on a vLLM endpoint.
OpenClaw is the sovgrid-stack CLI assistant from the Mistral era. It is structured around running against Mistral on SGLang with the side-car proxy that resolves the alternating-roles BadRequestError on strict OpenAI-compatible streaming. (See Setup: OpenClaw Setup and Fixes: OpenClaw Mistral Alternating Roles.) Now positioned as the Mistral specialty: the assistant you keep installed when the workload routes to Mistral for vision or German prose.
Vibe is the predecessor CLI that ran against SGLang Mistral. (See Setup: Mistral SGLang Setup for the original context.) Retired in the May 2026 model-stack migration. Postmortem section below.
The side-by-side, dimension by dimension
| Dimension | Claude Code | Aider | opencode | OpenClaw |
|---|---|---|---|---|
| Underlying model | Claude Opus 4.7 (cloud) | any (cloud or local) | Qwen 3.6 PrismaQuant (local) by default on this stack | Mistral Small 4 NVFP4 (local) |
| Backend | Anthropic API | model-dependent | vLLM port 30001 (Qwen) or any OpenAI-compat | SGLang with side-car proxy |
| SWE-Bench Verified | 80.8% | model-dependent | 73.4% (Qwen 3.6 ceiling) | ~58% (Mistral ceiling) |
| Sovereignty | none (cloud) | varies by model | full local (with local Qwen) | full local |
| Cost per call | metered (Anthropic) | metered or zero (local) | hardware-amortized | hardware-amortized |
| Git-commit discipline | manual | enforced by design | manual | manual |
| Tool-call cleanliness | excellent | very good | clean against Qwen (no side-car) | needs side-car proxy against Mistral |
| Mobile UI | yes (Anthropic web/app) | no (terminal) | yes (bundled mode + Tailscale + Basic Auth) | no (terminal) |
| Vendor risk | high (Anthropic ToS) | low (open-source) | low (open-source, vendor-cadence) | none (sovgrid-stack) |
| Release cadence | Anthropic-controlled | mature, quarterly | high (concern, pin versions) | sovgrid-paced |
| Best for | high-stakes one-off, no sovereignty | git-historical projects | sovgrid-primary local stack | Mistral vision/German specialty |
The diagonal of the table is the article: the right tool for your workload is the one where the strength column matches the binding constraint of your project.
When to pick which
Pick Claude Code if capability per session is the binding constraint and budget is not. Claude Opus 4.7 at 80.8 percent SWE-Bench Verified is a meaningful capability premium over the open-weights ceiling around 73 percent (Qwen 3.6 PrismaQuant). For a high-stakes refactor on a non-sensitive codebase, Claude Code is the fastest path to the answer. The cost is the per-token bill and the vendor lock.
Pick Aider if git discipline is the binding constraint, you have a multi-year codebase you cannot afford to wreck, or you work alongside other developers who need a clean commit history. Aider’s commit-per-change pattern is the difference between “easy revert” and “two hours of reconstructing what the agent did before lunch.” For long-lived repositories, this is the trait that matters most.
Pick opencode if you want a local coding assistant that just works against your existing OpenAI-compatible endpoint. The Qwen 3.6 PrismaQuant path on this stack is clean: opencode talks to vLLM on port 30001, tool calls round-trip cleanly without a side-car, and the 57 to 62 tok/s decode under DFlash is felt in every interaction. The mobile-UI secret is described two sections down.
Pick OpenClaw if your customer is paying you specifically for the Mistral stack, the workload needs vision capability (which the PrismaQuant Qwen quant drops), or the engagement contractually requires the side-car-proxy lineage that ships under your sovgrid stack. OpenClaw is no longer the default local pick; it is the Mistral specialty.
Do not pick Vibe. The postmortem is the next section.
The opencode mobile-UI secret
The unique-on-this-stack feature for opencode is that it runs in a bundled server mode that exposes a web UI over Tailscale, with Basic Auth gating. The Tailscale IP is 100.64.58.56. The Basic Auth username is opencode and the password lives in /data/secrets/opencode_server_password (regular file, 0600, rotatable via opencode-auth-sync.sh). The web UI is the same TUI experience rendered for a browser, which means a Termux session on a phone reaches the same opencode agent that the desktop terminal reaches.
The practical consequence is that mobile coding actually works on this stack. The DGX Spark sits at home, Tailscale wraps the network, the bundled server listens on the Tailscale IP only, and a phone with Termux plus a Tailscale exit-node can authenticate to opencode and run a --plan session over a remote codebase. The session state is the same session state the desktop sees, because the agent is the same process.
This is the feature I would point at if someone asked “what is the actual reason to run a local coding assistant in 2026.” Not the sovereignty in the abstract. The fact that the assistant is available everywhere the network is, on every device, against the same Qwen 3.6 backend, without an Anthropic bill or a vendor lock.
The Vibe postmortem
Vibe worked for what it was, which was a CLI coding assistant against Mistral Small 4 NVFP4 on SGLang in early 2026. Two things killed it as a production tool, and both lessons are worth pulling forward.
The strict-alternation tool-call bug never resolved cleanly against Mistral. The Mistral title-generator path on SGLang injects a second user turn into the conversation under specific prompt-shape conditions, which violates the strict role-alternation OpenAI clients expect, which raises a 400 BadRequest on tool-call streaming. The fix on the model side is enable_prompt_extensions=false on the SGLang launch, which works for OpenHands but did not generalize cleanly to the Vibe lineage of clients. The workaround on the assistant side was a side-car proxy, which is what OpenClaw absorbed and what Vibe never had as a first-class feature.
The Qwen 3.6 migration made the bug irrelevant. The May 2026 migration to Qwen 3.6 PrismaQuant on vLLM solved the strict-alternation issue by changing the model and the engine at the same time. Qwen with vLLM does not inject the spurious second user turn. Tool calls round-trip cleanly. The bug class that defined the Vibe operating experience is not a property of the assistant; it is a property of the Mistral-on-SGLang backend, which the new primary does not use.
The combined effect is that Vibe was the right tool for a stack we no longer run as primary. It is not removed from disk yet (the archive is cheap) but the active local-stack recommendation is opencode against Qwen 3.6, not Vibe against Mistral.
What Hacker News still gets right about opencode
opencode is the breakout of 2026, but the original Hacker News concerns from the v1.2.23 release thread are still worth taking seriously a year on. Five concerns from that thread that map to operational realities:
- High RAM consumption for a TUI: confirmed on a Spark workstation, not catastrophic but not free.
- Default-cloud-telemetry until v1.2.23 fixed it: verify on your install. Audit the config for any remote-config-pull that would re-enable a phone-home.
- High release cadence with limited regression testing: pin a known-good version, validate on a known-good repository, update on your schedule.
- TypeScript bloat in the runtime: Go-based core mostly mitigates this in 2026, but the SDK and plugin path can still pull in heavy dependencies. Audit before adopting.
- No coherent architecture for the 700k-line codebase at four months old: at 162k stars the architecture has matured, but the project is still moving faster than most operators’ patience for upstream churn.
I moved to opencode in May 2026 anyway, on the Qwen 3.6 backend, with a pinned version and an audited config. The dual concerns I track are the telemetry behaviour and the release-cadence pinning. Both are operator-side problems, not opencode-side, and both are tractable. (See Spark Arena Rank 4 Made Me Add Qwen3.6 for the migration plan and the HN-receipts-taken-seriously section.)
The dual-stack pattern
Most working developers do not pick one. The right pattern in 2026 is dual-stack: Claude Code for the work that has no sovereignty constraint and where capability per session is binding; a local assistant (opencode against Qwen 3.6, or OpenClaw against Mistral for vision) for the work that does. The two stacks coexist on the same workstation, share project repositories, and the developer picks per task.
The dispatcher pattern is simpler than it sounds. A .tool-config.json per repository names the default assistant. Repositories with customer data default to the local assistant. Repositories without customer data default to Claude Code or to whatever the developer’s preference is. The dual-stack pattern is what most operators settle into after six months of using either stack alone. (See Strategy: Coding Tools Evaluation for the early version of this argument, written before the May 2026 model-stack migration.)
Three pieces of advice for whatever you pick
Pin the version. Coding assistants are moving fast and a regression in tool-call handling can break your workflow overnight. Pin a specific version, validate it on a known-good repository, and update on your schedule, not the upstream’s. opencode at 162k stars is a fast-moving target; Claude Code is on Anthropic’s release cadence; Aider is the only one with a release cadence calm enough to not need explicit pinning.
Audit the network outbound. Any coding assistant that runs locally should have its network outbound audited at least once. The cloud assistants have transparent network behaviour (every call goes to the vendor). The local assistants should have zero unexpected outbound traffic. If yours is making calls you did not authorize, fix it before you trust the tool with anything sensitive. The opencode telemetry incident is the canonical example of why this audit is not optional.
Read the postmortems. The fixes archive on this site has a postmortem for every coding-assistant edge case I have run into in 2026 (see the Fixes: Vibe Write File Overwrite, Fixes: Vibe 400 BadRequest Fix, Fixes: OpenClaw Mistral Alternating Roles entries). Reading the postmortems before you adopt the tool is cheaper than rediscovering the edges in production.
Where this fits
This is the tooling-stack comparison. The model-stack-level comparison is Mistral Small 4 vs Qwen 3.6 vs GLM-5: DGX Spark (covers why Qwen 3.6 became the primary). The hardware-stack and total-cost comparisons are in the same batch. The reference architecture that pulls it all together is the hub article Sovereign AI Stack 2026 Reference Architecture.
The strategic context for why opencode replaced Vibe in May 2026 is in Spark Arena Rank 4 Made Me Add Qwen3.6. The verified vision-asymmetry finding that explains why OpenClaw stays installed is in Mistral vs Qwen 3.6: The Zero That Was a Broken Ruler.
See the other tooling comparisons
If you are scoping a coding-assistant deployment for your team, the next read is Strategy: Coding Tools Evaluation, which is the older long-form on this topic and contains the full evaluation matrix at the team-deployment level. It predates the opencode migration but the framework still holds.