Local web dashboard for orchestrating AI agents from your browser.
Supports Claude Code, OpenClaw, Codex CLI, Hermes, or any CLI-based agent you configure.
- Node.js 22.5+ (uses built-in
node:sqlite) - Express:
npm install
npm install
# Copy the example config and customize your agent commands
cp agents.example.json agents.jsonEdit agents.json to match your installed CLIs (see Agent Config below).
npm startOpen → http://127.0.0.1:3333
Use npm run dev for auto-restart on file changes.
Each agent entry:
{
"claude": {
"id": "claude",
"name": "Claude Code",
"color": "#FF6B35",
"command_template": "claude --dangerously-skip-permissions -p \"{prompt}\"",
"detect": "which claude",
"working_dir": null
}
}| Field | Description |
|---|---|
id |
Unique key |
name |
Display name |
color |
Hex color for badge/indicator |
command_template |
Shell command — {prompt} is replaced with the task prompt |
detect |
Shell command to check availability (e.g. which claude) |
working_dir |
Default CWD for this agent (null = server's working directory) |
Add as many agents as you need. The file is gitignored so your paths stay private.
- Create a task — give it a title, a detailed prompt, and optionally a working directory
- Assign an agent — pick from available agents in the detail panel
- Dispatch — the agent CLI runs with your prompt; output streams live in the panel
- Tasks move through Backlog → Running → Done / Failed
| Key | Action |
|---|---|
n |
New task (modal) |
Esc |
Close modal / panel |
| Variable | Default | Description |
|---|---|---|
PORT |
3333 |
HTTP server port |
GET /api/agents
GET /api/tasks
POST /api/tasks { title, description, agent_id, working_dir }
PATCH /api/tasks/:id any subset of task fields
DELETE /api/tasks/:id
POST /api/tasks/:id/run { agent_id?, working_dir? }
POST /api/tasks/:id/cancel
GET /api/tasks/:id/stream (Server-Sent Events)
GET /api/health
Data is persisted in data/tasks.db (SQLite, gitignored).