WrongStack
Ships with a Brain, a Memory, and a full toolbox. Yours to run anywhere.
A free, open-source AI coding agent that gets better at _your_ codebase over time. It reads code, runs tools, and coordinates specialist agents — with durable memory, visible permission boundaries, and no subscription required.
macOS / Linux — one self-contained binary, no Node.js needed
curl -fsSL https://wrongstack.com/install.sh | sh
Windows
irm https://wrongstack.com/install.ps1 | iex
WrongStack is free, open source, and MIT licensed. Give its leader a task: It can work directly or delegate independent parts to specialist agents. The Brain evaluates policy decisions; SAGE retains project knowledge across sessions; Kanban tracks work and verification; the mailbox links agents across clients; and Chimera reviews their diffs. Autonomous goal loops and parallel workers use these same systems, rather than a separate agent engine. Built-in tools, bundled skill playbooks, managed first-party plugins and a live models.dev provider catalog sit on a compact, swappable kernel.
The coding loop compares completed tool results when detecting repetition. With the LSP plugin and hooks enabled, successful single and bulk file edits include bounded, version-bound diagnostics or an explicit unverified notice. Research briefs preserve API/version evidence and unresolved questions. See agent feedback.
Built from scratch, stands on its own. WrongStack is not a plugin layer or an orchestration kit bolted onto another coding tool — it's a complete agent written top to bottom: its own compact kernel, its own provider transports with real SSE, its own tool executor, permission policy, memory system, and multi-agent runtime. Nothing here wraps a third-party CLI; everything works standalone.
The scale of it
Not a thin wrapper — a real engine. The codebase is first-party, TypeScript-strict source across a full monorepo, guarded by an extensive test suite. Memory, tools, providers, permissions, and the multi-agent runtime are all first-party and work together, on your machine, with no upstream agent to phone home to.
What's new in 1.1.15
- Git correctness: subdirectory projects get correctly scoped paths,
- Capability-gated media: image and PDF parts reach only models that
- SAGE verify-on-mutation: edits re-check the memories anchored to the
- Sealed companions: resident companions stay out of supervision, pulses
1.1.14 added polyglot codebase intelligence, CodeMap 2.0 and durable mission continuity; 1.1.13 added durable MCP tasks, browser element selection, automation environments and refreshed runtimes; 1.1.11 added standalone-binary updates, smarter delegation and skills that follow the work; 1.1.10 added a measured design layer, DESIGN.md interchange and prompt detail levels; 1.1.9 added the SAGE doctor, daemon-owned memory maintenance and AST security profiles for twelve more languages; 1.1.8 was a hardening release across the daemon, MCP, security gates, VibeUI and Desktop.
Highlights from 1.1.7:
- VibeUI, a seventh interface:
wstack vibeui
--vibeui, port 3476) opens a focused coding workspace between SimpleUI and
the full WebUI: queued chat with Queue / Steer / BTW, provider and account
setup, files and diffs, live agents, quotas, SAGE memory with a relationship
graph, and next-step suggestions that can submit on their own under YOLO + Auto.
- Text selection in the TUI: a Text mode beside Block copies only the
- WebUI refresh and desktop focus: a reworked workbench look with locally
- Correctness fixes: ACP turns survive a slow permission decision, an idle
Highlights from 1.1.6:
- WrongForge leads with its tools: a session started on the
wrongforge
- Confirmable tools behind the token-saving tier:
tool_useandmcp_use
pwsh, exec, fetch, git
and MCP tools work with YOLO off on the default tier.
- Plugins cannot pose as built-ins: a plugin may change only the tools it
core.
1.1.5 added wstack tools for built-in
tools without MCP, WrongForge as leader or worker and the WebUI agent tree;
1.1.4 pointed ACP agents at the project's index, memory, mailbox and board and
added the mailbox inbox action over MCP;
1.1.3 made an installed ACP agent such as Claude Code a session leader
(/model acp/claude-code), added delegated Claude
workers and removed the Claude sign-in;
1.1.2 made file edits lossless, kept stores from overwriting files they cannot
parse, kept secrets out of history and sync and made safety refusals terminal;
1.1.1 added /browser allow loopback and ChatGPT
quota readings; 1.1.0 added request residency, last-request cache
readouts and leaner tool-error context; 1.0.37 added Bun-first development, browser setup, codebase-read-symbol and the
Skill Companion; 1.0.36 added phase-aware leader
effort, per-worker effort routing and audit-driven hardening; 1.0.35 hardened
command guards, secret redaction and dependency audits; 1.0.34 added project goals,
explicit continuation, YOLO+
and the dead-code workflow.
See the release history for earlier releases.
New here? Jump to Install → Quick start.
Already running it? Keep current with wstack update.
Table of contents
- Why WrongStack
- How WrongStack compares
- Requirements
- Install
- Staying current
- Quick start
- Surfaces
- Core capabilities
- Configuration
- Architecture
- Status
- Docs
- License
Why WrongStack
- It remembers your project. SAGE keeps long-term memory in
- A fleet that coordinates. A Director splits work across a specialist
- Goals that end verified.
/goalloops until a locked contract passes,
- Seven surfaces, one engine. REPL, TUI, WebUI, SimpleUI, VibeUI, Desktop
- Any model, including local ones. API keys or subscription sign-in, a
- Guarded where it counts. Encrypted secrets and a permission policy on
The full list is under Core capabilities.
How WrongStack compares
Most AI coding tools are either a single-agent CLI or an orchestration kit around someone else's agent CLI. WrongStack is a complete agent written from scratch:
| | Wrapper / orchestration-only tools | WrongStack | |---|---|---| | Core | Coordinates an external agent CLI | Own kernel, provider transports and built-in tools | | Memory | Usually none, or bolted-on files | SAGE — code-anchored SQLite/FTS5 memory, recalled every turn | | Multi-agent | Orchestrates external processes | Native fleet + Director with isolated budgets and one mailbox | | Local-only | Needs the upstream tool and network | Runs on localhost with Ollama / vLLM / LM Studio presets | | Surfaces | One terminal | Seven — REPL, TUI, WebUI, SimpleUI, VibeUI, Desktop, HQ | | Safety | Depends on the wrapped tool | Per-call permission policy and Chimera review of your diffs |
Requirements
- Standalone binary: nothing — the executable carries its own runtime
- Development from source: Bun ≥ 1.4.3; see the Bun workflow
Install
Standalone binary (recommended)
One executable per platform with the runtime, every surface and all bundled assets inside — nothing else to install:
# macOS / Linux
curl -fsSL https://wrongstack.com/install.sh | sh
# Windows
irm https://wrongstack.com/install.ps1 | iex
The installers download the build for your OS/CPU (musl is detected on
Linux), verify it against the release SHA256SUMS, and install wstack plus a
wrongstack alias into ~/.wrongstack/bin. The musl builds need the C++
runtime (apk add libstdc++ libgcc on Alpine). Set WSTACK_VERSION=1.2.3 to pin a
release or WSTACK_INSTALL_DIR to install elsewhere. You can also download a
wstack- file from the
releases page and put it on
your PATH yourself.
On first run the binary unpacks its assets (prompts, skills, design kits,
grammars, the WebUI/HQ/SimpleUI frontends) once into
~/.wrongstack/runtime/.
Not available in the binary: the WebUI terminal panel (needs the native
node-pty addon), the Electron desktop shell, and the browser tool unless
Playwright is installed separately. The HQ systemd installer (wstack hq
service install) does not support the binary; run wstack hq under your own
service manager instead.
The TUI is lazy-loaded behind --tui, so plain-REPL users pay no React/Ink cost
at startup. The browser UI, HQ, and Desktop shell are available through their
launch flags (see Surfaces).
For standalone CLI users, Desktop is a separate Electron application distributed
through GitHub Releases. wstack --desktop opens an installed application;
portable/custom locations use WRONGSTACK_DESKTOP_EXECUTABLE.
See Desktop distribution for installation and release details.
Then just run:
wrongstack # or the short alias: wstack
From a source checkout, the same built CLI can run directly on Bun:
bun run build
bun run start:bun
bun run smoke:bun verifies Bun's SQLite-backed SAGE path, heap watchdog,
WebUI server module graph, and CLI entry point. Node continues to use
node:sqlite; Bun selects bun:sqlite automatically.
To run HQ as a boot-persistent, auto-restarting systemd service with password authentication and an optional IP/CIDR admission list, see HQ service.
Staying current
Update the CLI in place from inside the tool:
wstack update # download + verify the latest release
wstack update --check-only # is a newer release available?
wstack update pulls from GitHub Releases and checks the download against the
release SHA256SUMS before swapping the executable in place. Re-running the
install one-liner does the same thing.
Full flag reference: CLI reference → Updating.
Quick start
# First run — interactive auth/setup, then a launch menu on a TTY
wstack
Add an API key or sign in with a ChatGPT/Codex subscription
wstack auth
Skip the picker and pin a provider/model
wstack --provider anthropic --model claude-sonnet-4
TUI with an explicit YOLO override
wstack --tui --yolo
Director fleet orchestration
wstack --director
Single-shot query (non-interactive)
wstack -p "explain packages/core/src/kernel"
Resume a saved session
wstack --resume
First run walks you through authentication and model selection. No config? The
interactive provider/model picker launches automatically. Switch providers any
time at runtime with /model.
Full flag and subcommand reference: docs/cli-reference.md.
Surfaces
| Surface | Launch | Best for |
|---------|--------|----------|
| REPL | wstack | Fast, dependency-light terminal use |
| TUI | wstack --tui | Rich full-screen terminal with panels |
| WebUI | wstack --webui | Browser chat + tool/diff/session panels |
| SimpleUI | wstack --simpleui | Fast, focused standalone browser chat (see below) |
| VibeUI | wstack --vibeui | Focused coding workspace between SimpleUI and WebUI (see below) |
| Desktop | wstack --desktop | Electron shell over a token-gated local WebUI |
| HQ | wstack --hq | Cross-machine command center for a whole team |
Plain wstack on a TTY opens a launch menu; add --no-menu to go straight to the
REPL. See WebUI for the browser surface details.
WebUI, SimpleUI and VibeUI keep their host terminal compact: repeated warnings share
one row, logs and finished workers disappear after 30 seconds, and live worker
rows fit the terminal. Use WEBUI_VERBOSE=1 for full console output.
The WebUI's Story button opens Session Story: a visual timeline of the selected tab and its subagents, with activity charts, team branches, replay, and recorded file, memory, and mail evidence. Its dashboard tabs expose measured tool averages/P95 and file read/edit/write counts, with recorded source and diff line statistics where available. The Models tab compares provider/model reliability, measured latency and spend, and recorded work/quality signals across the leader and its subagents. The secondary sidebar pins Story at the top and switches it to **Back to session** when open. Chat sidebar sections collapse and reorder by dragging, with keyboard/touch arrow controls and saved browser layout preferences.
SimpleUI is a full, independent chat surface (Vite + React), not a
stripped WebUI. It reuses the same WebSocket backend but ships its own bundle,
with a sticky composer, @-file picker, streaming markdown + syntax highlighting,
vision/image attachments, session switching, and a lazy-loaded Tools/Todo/Task/Plan
sidebar — deliberately minimal, fast, and focused.
VibeUI (new in 1.1.7) is a focused coding workspace between SimpleUI and the
full WebUI, built with Next.js and Radix UI and served as prebuilt assets by the
same host on port 3476. It adds a queued composer with Queue / Steer / BTW,
provider and account setup, files and diff modals, a live Agents view, provider
quotas, SAGE memory with a relationship graph and Simple / Extended context
views. Terminal, browser streams and automation editing stay in the WebUI. See
packages/vibeui/README.md.
Core capabilities
WrongStack is standalone-sufficient — everything below works with **no plugins
required**. Each row links to its full write-up in
Core capabilities; deep reference lives in
docs/reference.md.
| Capability | What you get |
|------------|--------------|
| Tools & code intelligence | 74 built-in tools, a SQLite/FTS5 codebase index with call-graph navigation, dead-code cleanup with rollback, and ToolFlow for scripted tool batches |
| Autonomy & goals | Scheduled automation jobs, /goal loops governed by the Brain, project goal tracking, /nextsteps, YOLO/YOLO+ and /solo |
| Multi-agent fleet + Director | A specialist roster under a Director; each subagent has its own budget and a replayable transcript |
| Self-improving roster agents | Roles learn project-specific practice per skill and load the useful parts on the next spawn |
| TypeSafe / Jev decisions | An opt-in typed decision service for skill suggestion, dispatch classification and the jev tool |
| Inter-agent mailbox | One project-wide message plane across every client, process, session and worktree |
| SAGE memory | Project-local SQLite memory with code anchors, a knowledge graph, review and per-turn recall |
| Tasks & Kanban | todo, plan, task and durable boards with lease fencing and verified completion |
| Spec-Driven Development | Spec → acceptance criteria → linked tasks → validation against the spec |
| Plugin ecosystem | Managed first-party plugins, each auditable and individually disableable |
| Providers & sign-in | API-key providers, subscription sign-in, live account catalogs, local and custom endpoints |
| Model routing & fallbacks | Per-role and per-phase models with automatic fallback chains |
| HQ | A cross-machine dashboard that can steer connected clients through their guardrails |
| CodeMap & visual views | Dependency graph, fleet topology, Office view and attributed per-file history |
| Chimera | Post-session review of changed files with severity-ranked findings |
| WrongTrace guardrails | An optional daemon for file locks and provider rerouting; a no-op when absent |
| Security & privacy | Encrypted secrets, a permission policy on every tool call, project-root containment |
| Token-saving mode | Tiered trimming of the described tool surface and prompt |
Configuration
| Scope | Location | Purpose |
|-------|----------|---------|
| Environment | env vars | Overrides and secrets injection |
| User config | ~/.wrongstack/config.json | Providers, defaults, feature toggles |
| Project conventions | | Shared, committed repo conventions |
| Project instructions | (or CLAUDE.md) | Loaded into the system prompt |
| Directory instructions | (or CLAUDE.md) | Sent once, when the agent first touches a path under |
| Project identity | | Repository-stable proj_ |
apiKey-like fields are auto-encrypted on first contact; plaintext keys in older
configs migrate transparently on boot. Full details:
docs/configuration.md.
Architecture
CLI → REPL, renderer, slash commands, subcommands
TUI → Ink frontend (lazy-loaded behind --tui)
WebUI → Browser UI + WS bridge (standalone or --webui)
Desktop → Electron shell hosting a token-gated local WebUI
Runtime → Default host assembly + WrongStackPack extension composition
Kernel → Container · Pipeline · EventBus · RunController (the 4 primitives)
Provider → Multiple wire families, factories built from ModelsRegistry, real SSE
Models → models.dev/api.json fetched + cached + classified
Services → deterministic local IPC → one owner each → SQLite-backed project state
Four contracts hold the design together:
- Minimal kernel — the four primitives stay small enough to read end to end.
- Zero non-overridable behavior — services bound through
Container, pipelines as middleware, all extension points in registries. - Standalone sufficiency — works with the built-in tools and no plugins.
- Layered, not monolithic — every feature composes over the kernel through registries; nothing above it is load-bearing.
docs/architecture.md.
Status
- v1.1.15 — current repository version; semver from 1.0.0 onward
- Distribution: GitHub Releases only (standalone
wstackbinaries + Desktop); npm publishing is retired and the existing npm versions are frozen - Full release verification:
bun run release:checkbefore pushing thevX.Y.Zrelease tag - Coverage thresholds (root Vitest): ≥76% lines / ≥75% functions / ≥66% branches / ≥75% statements
- Packages and apps use TypeScript strict +
noUncheckedIndexedAccess - CI, dependency audit and Pages deployment are manually dispatched; pushes do not run them
- Threat model:
SECURITY.md
Docs
| Doc | What it covers |
|-----|----------------|
| Getting started | First session and everyday workflow |
| Documentation index | Maintained guides and dated archives |
| CLI reference | Launch flags, subcommands, and wstack update |
| Core capabilities | Tools, autonomy, fleet, memory, boards, providers, HQ and review in depth |
| Reference | Tools, providers, slash commands, modes, skills at a glance |
| Project Kit | Reusable project tools with schemas, verification, revisions, and execution history |
| Slash commands | Every built-in slash command |
| Subcommands | Every wstack |
| Configuration | Config files, env vars, project conventions |
| Architecture | Kernel primitives, pipelines, agent lifecycle |
| Project goals | Goal ownership, checkouts, progress and verification |
| Tool workflows | Language tools, dead-code cleanup, codebase context and web evidence |
| Typed client API | Integrating with the WebUI protocol and client |
| SAGE memory | Long-term memory: storage, anchors, knowledge graph, retrieval |
| SAGE feedback lifecycle | Memory Companion, validity conditions, evidence-based feedback |
| OAuth sign-in | Subscription authentication |
| HQ service | Always-on HQ under systemd |
| Plugin author guide | Building a plugin |
| Director architecture | Fleet orchestration internals |
| WrongTrace integration | Optional daemon: guardrail hooks, file locks, proxy routing |
| Troubleshooting | Common issues |
License
MIT © WrongStack contributors.
Contributor setup and migration dry-runs: Bun workflow.