See your OpenSpec changes. Run your agents from the same window.
OpenSpec Workbench runs and supervises coding agents on OpenSpec changes. It is a dashboard over Changes, Archive, Specs and Tasks, and a launcher for Claude, GitHub Copilot, Codex and Gemini CLI agents — with one command and event protocol behind all of them. It runs entirely on your machine, as a standalone web app or as a native VS Code extension, over the same shared core.
A working directory on no branch, with a clean tree and no run recorded, is offered for removal under "Left behind" where the default branch already contains the commit it is at (a-detached-directory-is-offered-for-removal). Before, such a directory was never offered: it has no branch to be merged or gone, and it stood beside the checkout drawing cards for work that had landed. The sweep still keeps it; removing it is a press.
Run, validate and check OpenSpec changes from a terminal or CI.
PATCH
The merge gate refuses a change the pull request puts back among the active ones after its base archived it, so the board cannot show a shipped change as unfinished.
Commands stream their output as they run.Edit a proposal without leaving the dashboard.A harness run stops at a checkpoint and asks before the next step.What can run now, what is blocked, and what to do about it.What changed in a change, line by line — the reason this exists.One view over changes, specs and tasks.
VS Code extension
A native tree view, not a webview pretending to be one.A change opens down to the task, done or still open.An archived change keeps its tasks, and a menu of what to do with it.The pipeline opens in a tab, beside the code it is about.Which agent runs which stage, set for one change or for all of them.Specs open in the editor you already use.
Two new shared core tools, search_web and fetch_webpage, let local-model agents consult a SearXNG endpoint and retrieve HTML pages as Markdown. No remote agents are changed.
OpenSpec Workbench now ships a versioned catalogue of rules, checks that run only when the host is idle, and findings that explain what is wrong without moving a single file.
A chain has four stages you can hand to four different agents, at four different prices. The harness can prove the savings on two of the three agents involved, and is honestly blind to the third.
Why it exists
Diffs between archived versions
openspec view shows you the current state. It does not show you what changed
between two versions of an archived change. That gap is why this project
started, and it is still the thing it does that nothing upstream does.
One protocol, four agents
Claude, GitHub Copilot, Codex and Gemini CLI agents — plus a local model behind
an OpenAI-compatible API — are driven through a single command protocol
(plan, implement, review, status, cancel) and a single event protocol.
Swapping the agent does not change how you work.
Your machine, and nothing else
There is no account, no server to reach, and no telemetry. The standalone app
binds to localhost behind a one-time token; the extension talks to the shared
core directly. Normal use needs no internet connection at all.
Two products, one core
If you live in VS Code, the extension uses the native API — tree views, the diff
editor, the built-in Git integration — rather than a webview imitating them. If
you do not, the standalone web app is the same product in a browser. All the
behaviour lives in one shared core; the hosts are thin adapters.
Questions
How is this different from openspec view?
openspec view is an interactive dashboard for specs and changes, and this
project does not try to replace it. The three things it adds are diffs between
versions of archived changes, launching CLI agents from the UI over a unified
command and event protocol, and VS Code integration as a native extension rather
than another window. Anything already covered upstream is deliberately not
reimplemented here.
How do I install it?
The VS Code extension ships as a .vsix on the GitHub Releases page: download
it, then use Install from VSIX… in the Extensions view. The standalone app
is built from source — npm install, build the server workspace, and start it
against the directory you want to inspect. It prints a localhost URL containing
a one-time token; that exact URL is the only way in.
Does it send my code anywhere?
Not by itself. It reads your repository from disk and runs the CLI agents you
have already installed, under your own credentials — so whatever those agents
send is between you and them, on the same terms as running them in a terminal.
The application has no backend of its own, collects no telemetry, and treats
repository file contents as data rather than as instructions it may act on.