v0.13.0 · MIT · self-hosted
Coding agent sessions you can watch, steer, and embed
A coding agent is a terminal program: it runs where you started it, and it is yours only while that terminal is open. WorkerDeck puts a session server, a typed wire protocol and an approve/deny UI around one — so the same session is reachable from a browser, your phone, your editor, or an app you build yourself.
Gateway and dashboard on one port. Nothing to clone.
One server, four ways in
Attach from three of them at once and they stay in step — there is one ordered, seq-numbered event stream, and everything replays from it.
Web dashboard
includedServed from the same port as the gateway — nothing separate to deploy. A workspace around each session: file tree, editor, transcript, approvals, plus the sessions list and the job queue.
Run an instance →iOS
build & side-loadA native SwiftUI remote for the gateways you run. One list across all of them, the full transcript, approve or deny on the spot, and push so a session blocked on your decision reaches your lock screen.
apps/ios →VS Code
build & side-loadThe session in the bottom panel where a terminal would be, status in the window bar, gateways and sessions in the sidebar. Approvals as native notifications; a remote project mounts as a virtual workspace.
apps/vscode →The gateway
npx workerdeckOwns the sessions, the approvals and the event stream. Runs the engines, enforces the permission mode, keeps the job queue, parks work that outlives a turn, and serves the dashboard from the same port. Everything above is a view onto the sessions it holds — and so is anything you build, at whatever level of control you want.
Close-to-real sessions
A session behaves like the agent’s own CLI launched in that directory: same skills, same project instructions, same MCP config surface, same permission system.
Human-in-the-loop permissions
Tool calls surface as approve/deny cards; the tool blocks until a client decides, with deny-on-timeout. Safe to point at a real checkout.
Typed wire protocol
One ordered stream of seq-numbered events plus a small command set. Versioned from day one — the protocol is the product boundary.
Three engines, one protocol
Claude Code, OpenAI Codex, or any provider the AI SDK supports. Clients render from each engine’s capability record, so an affordance an engine lacks is hidden rather than a control that does nothing.
Embeddable panel components
A styled session panel with streaming transcript, tool-call cards and composer — or go headless with the hook and the reducers.
Attach, replay, resume
Clients reconnect and replay from their last seen event; closed sessions resume from the engine’s on-disk store with full history backfill.
Unattended job queue
Schedule one-shot runs with bounded concurrency, token budgets, retries, a wall-clock watchdog, and ordered webhook delivery.
Work that outlives the turn
A session can park on work nothing here is doing — a batch job, a human approving on Monday — and wake days later, mid-turn, as itself.
One instance, ten libraries
Run the turnkey instance, or take just the layers you need — from the runner in-process with no server at all, to a drop-in session panel.
- workerdeck the turnkey instance: gateway + dashboard, one port
- @workerdeck/protocol wire protocol types, and the rules clients agree on
- @workerdeck/core the engines, as adapters behind one Runner interface
- @workerdeck/sandbox QuickJS-NG guest for untrusted code
- @workerdeck/queue one-shot jobs, budgets, webhooks
- @workerdeck/server HTTP + WebSocket gateway
- @workerdeck/client typed client for browsers and Node
- @workerdeck/react headless hooks + pure reducers
- @workerdeck/ui styled agent-control components
- @workerdeck/web the dashboard as prebuilt static files