A multi-agent dashboard built on top of OpenCode, the open source AI coding agent.
Fork notice: This project is a fork of opencode (MIT License, Copyright 2025 opencode). It is not built by the OpenCode team and is not affiliated with them. See LICENSE for the full license text.
Dispatch replaces OpenCode's single-session TUI with a multi-agent dashboard and adds the Claude Agent SDK as a backend for routing Anthropic API requests, authenticating with your existing Claude Code subscription. The Vercel AI SDK is retained for other providers.
Agent Dashboard (home screen)
- Table view showing all active agents with columns: #, Name, Status, Activity
- Agent registry backed by a KV store, decoupled from sessions
- Keyboard-driven workflow:
a-- create a new agent (spawns a new session)j/kor arrow keys -- navigate rowsEnter-- open an agent's sessiond-- remove agent from dashboardx-- delete worktree and all agents in that directory
- Live status per agent: Working (with spinner), Retrying, Waiting for user, Approve (y/n)
- Inline permission approval:
yto allow,nto reject pending tool-use requests directly from the dashboard - Detail row showing tool request context (bash command, diff preview, glob patterns)
- Activity summary showing
+additions -deletions filesfrom the session
Claude Agent SDK backend
- Added
@anthropic-ai/claude-agent-sdkfor routing Anthropic API requests (Vercel AI SDK retained for other providers) - Uses your existing Claude Code login (API key or subscription auth)
- SDK owns the tool loop and execution (Read, Write, Edit, Bash, Glob, Grep)
- App owns TUI rendering, permission UI, message persistence, and auth
- Bridge architecture documented in
packages/opencode/AGENTS.md
Installs a pre-built binary for your platform to ~/.dispatch/bin/dispatch and adds it to your PATH:
curl -fsSL https://raw.githubusercontent.com/DemonicEgg/Dispatch/claudesdk/install | bashTo install a specific version:
curl -fsSL https://raw.githubusercontent.com/DemonicEgg/Dispatch/claudesdk/install | bash -s -- --version 0.1.0Then run from any directory:
dispatch
dispatch ~/Documents/workspaceRequires Bun v1.3.11 or later. Clones, builds, and installs to ~/.dispatch/bin/dispatch:
git clone https://github.com/DemonicEgg/Dispatch.git
cd Dispatch
./install-from-sourceTo update, pull the latest changes and rerun:
git pull && ./install-from-sourceRuns the TypeScript source directly via Bun without a build step:
git clone https://github.com/DemonicEgg/Dispatch.git
cd Dispatch
bun install
bun run dev
bun run dev ~/Documents/workspaceThe built binary and bun run dev use separate SQLite databases by default (opencode.db vs opencode-local.db). To share the same database as dev mode:
OPENCODE_DB=opencode-local.db dispatchThese flags work with both bun run dev and the built binary:
| Flag | Description |
|---|---|
[project] |
Path to project directory (positional arg) |
--model, -m |
Model to use in the format provider/model |
--continue, -c |
Continue the last session |
--session, -s |
Session ID to continue |
--help, -h |
Show help |
--version, -v |
Show version |
Dispatch also supports subcommands for headless/non-interactive use:
# run a single message non-interactively
bun run dev -- run "explain this codebase"
# run in a specific directory non-interactively
bun run dev -- run --dir ~/Documents/workspace "explain this codebase"Dispatch respects the same configuration system as OpenCode. Config files use JSON or JSONC (JSON with Comments) format and are merged together, with later sources overriding earlier ones.
For full documentation see the OpenCode configuration docs.
| Priority | Source | Location |
|---|---|---|
| 1 | Remote config | .well-known/opencode endpoint (organizational defaults) |
| 2 | Global config | ~/.config/opencode/opencode.json |
| 3 | Custom config | Path specified via OPENCODE_CONFIG env var |
| 4 | Project config | opencode.json in project root |
| 5 | Directory configs | .opencode/ subdirectories (agents/, commands/, plugins/, etc.) |
| 6 | Inline config | OPENCODE_CONFIG_CONTENT env var |
model-- Main LLM model (e.g.,"anthropic/claude-sonnet-4-5")small_model-- Lightweight model for tasks like title generationprovider-- Provider configuration with timeout/cache settingsdisabled_providers/enabled_providers-- Control which providers are availabletools-- Configure which tools the LLM can access (write, bash, edit, etc.)agent-- Define custom specialized agentsmcp-- Model Context Protocol server configurationautoupdate-- Auto-update handling (true/false/"notify")permission-- Tool approval requirements ("ask"for confirmation)instructions-- Path to custom instruction/rules files
Config values support variable substitution:
- Environment variables:
{env:VARIABLE_NAME}-- replaced with the env var value (empty string if not set) - File contents:
{file:path/to/file}-- inlines the file contents (useful for API keys stored separately)
JSON schema files are available for editor autocompletion and validation:
- Main config:
https://opencode.ai/config.json - TUI config:
https://opencode.ai/tui.json
This project tracks upstream opencode. For general OpenCode information:
MIT License -- see LICENSE.
This project includes code from opencode, Copyright 2025 opencode, used under the MIT License.