Formerly known as Mission Control
autensa.com
AI Agent Orchestration Dashboard
Create tasks. Plan with AI. Dispatch to agents. Watch them work.
🎮 Live Demo • Quick Start • Docker • Features • How It Works • Configuration • Contributors
- Multi-Agent Pipeline — End-to-end lifecycle now runs as Planning → Inbox → Assigned → In Progress → Testing → Review → Verification → Done
- Core Team Bootstrap — New workspaces auto-bootstrap a 4-agent core team: Builder (🛠️), Tester (🧪), Reviewer (🔍), Learner (📚)
- Workflow Engine Upgrades — Queue-aware review handling, automatic stage handoffs, and fail-loopback routing with detailed reasons
- Learner Knowledge Loop — Learner now captures transition outcomes and injects relevant lessons into future dispatches
- New Workflow APIs — Added routes for stage failure reporting, role visibility, workspace knowledge writes, and workflow template listing
- Migration 013 (Fresh Start) — Resets task/agent runtime data, sets Strict as default template, and bootstraps default workspace agents
See the full CHANGELOG for details.
🎯 Task Management — Kanban board with drag-and-drop across 7 status columns
🧠 AI Planning — Interactive Q&A flow where AI asks clarifying questions before starting work
🤖 Agent System — Auto-creates specialized agents, assigns tasks, tracks progress in real-time
🔗 Gateway Agent Discovery — Import existing agents from your OpenClaw Gateway with one click — no need to recreate them
🔌 OpenClaw Integration — WebSocket connection to OpenClaw Gateway for AI agent orchestration
🐳 Docker Ready — Production-optimized Dockerfile and docker-compose for easy deployment
🔒 Security First — Bearer token auth, HMAC webhooks, Zod validation, path traversal protection, security headers
🛡️ Privacy First — No built-in analytics trackers or centralized user-data collection; data stays in your deployment by default
📡 Live Feed — Real-time event stream showing agent activity, task updates, and system events
🌐 Multi-Machine — Run the dashboard and AI agents on different computers (supports Tailscale for remote)
Mission Control is open-source and self-hosted. The project does not include ad trackers, third-party analytics beacons, or a centralized data collector run by us.
By default, your task/project data stays in your own deployment (SQLite + workspace). If you connect external services (for example AI providers or remote gateways), only the data you explicitly send to those services leaves your environment and is governed by their policies.
┌──────────────────────────────────────────────────────────────┐
│ YOUR MACHINE │
│ │
│ ┌─────────────────┐ ┌──────────────────────────┐ │
│ │ Mission Control │◄────────►│ OpenClaw Gateway │ │
│ │ (Next.js) │ WS │ (AI Agent Runtime) │ │
│ │ Port 4000 │ │ Port 18789 │ │
│ └────────┬─────────┘ └───────────┬──────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌──────────────────────────┐ │
│ │ SQLite │ │ AI Provider │ │
│ │ Database │ │ (Anthropic / OpenAI) │ │
│ └─────────────────┘ └──────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
Mission Control = The dashboard you interact with (this project) OpenClaw Gateway = The AI runtime that executes tasks (separate project)
- Node.js v18+ (download)
- OpenClaw Gateway —
npm install -g openclaw - AI API Key — Anthropic (recommended), OpenAI, Google, or others via OpenRouter
# Clone
git clone https://github.com/crshdn/mission-control.git
cd mission-control
# Install dependencies
npm install
# Setup
cp .env.example .env.localEdit .env.local:
OPENCLAW_GATEWAY_URL=ws://127.0.0.1:18789
OPENCLAW_GATEWAY_TOKEN=your-token-hereWhere to find the token: Check
~/.openclaw/openclaw.jsonundergateway.token
# Start OpenClaw (separate terminal)
openclaw gateway start
# Start Mission Control
npm run devOpen http://localhost:4000 — you're in! 🎉
npm run build
npx next start -p 4000You can run Mission Control in a container using the included Dockerfile and docker-compose.yml.
- Docker Desktop (or Docker Engine + Compose plugin)
- OpenClaw Gateway running locally or remotely
Create a .env file for Compose:
cp .env.example .envThen set at least:
OPENCLAW_GATEWAY_URL=ws://host.docker.internal:18789
OPENCLAW_GATEWAY_TOKEN=your-token-hereNotes:
- Use
host.docker.internalwhen OpenClaw runs on your host machine. - If OpenClaw is on another machine, set its reachable
ws://orwss://URL instead.
docker compose up -d --buildOpen http://localhost:4000.
# View logs
docker compose logs -f mission-control
# Stop containers
docker compose down
# Stop and remove volumes (deletes SQLite/workspace data)
docker compose down -vCompose uses named volumes:
mission-control-datafor SQLite (/app/data)mission-control-workspacefor workspace files (/app/workspace)
CREATE PLAN ASSIGN EXECUTE DELIVER
┌────────┐ ┌────────┐ ┌────────────┐ ┌──────────┐ ┌────────┐
│ New │───►│ AI │───►│ Agent │───►│ Agent │───►│ Done │
│ Task │ │ Q&A │ │ Created │ │ Works │ │ ✓ │
└────────┘ └────────┘ └────────────┘ └──────────┘ └────────┘
- Create a Task — Give it a title and description
- AI Plans It — The AI asks you clarifying questions to understand exactly what you need
- Agent Assigned — A specialized agent is auto-created based on your answers
- Work Happens — The agent writes code, browses the web, creates files — whatever's needed
- Delivery — Completed work shows up in Mission Control with deliverables
PLANNING → INBOX → ASSIGNED → IN PROGRESS → TESTING → REVIEW → DONE
Drag tasks between columns or let the system auto-advance them.
| Variable | Required | Default | Description |
|---|---|---|---|
OPENCLAW_GATEWAY_URL |
✅ | ws://127.0.0.1:18789 |
WebSocket URL to OpenClaw Gateway |
OPENCLAW_GATEWAY_TOKEN |
✅ | — | Authentication token for OpenClaw |
MC_API_TOKEN |
— | — | API auth token (enables auth middleware) |
WEBHOOK_SECRET |
— | — | HMAC secret for webhook validation |
DATABASE_PATH |
— | ./mission-control.db |
SQLite database location |
WORKSPACE_BASE_PATH |
— | ~/Documents/Shared |
Base directory for workspace files |
PROJECTS_PATH |
— | ~/Documents/Shared/projects |
Directory for project folders |
Generate secure tokens:
# API authentication token
openssl rand -hex 32
# Webhook signature secret
openssl rand -hex 32Add to .env.local:
MC_API_TOKEN=your-64-char-hex-token
WEBHOOK_SECRET=your-64-char-hex-tokenWhen MC_API_TOKEN is set:
- External API calls require
Authorization: Bearer <token> - Browser UI works automatically (same-origin requests are allowed)
- SSE streams accept token as query param
See PRODUCTION_SETUP.md for the full production guide.
Run Mission Control on one machine and OpenClaw on another:
# Point to the remote machine
OPENCLAW_GATEWAY_URL=ws://YOUR_SERVER_IP:18789
OPENCLAW_GATEWAY_TOKEN=your-shared-tokenOPENCLAW_GATEWAY_URL=wss://your-machine.tailnet-name.ts.net
OPENCLAW_GATEWAY_TOKEN=your-shared-tokenSQLite database auto-created at ./mission-control.db.
# Reset (start fresh)
rm mission-control.db
# Inspect
sqlite3 mission-control.db ".tables"mission-control/
├── src/
│ ├── app/ # Next.js pages & API routes
│ │ ├── api/
│ │ │ ├── tasks/ # Task CRUD + planning + dispatch
│ │ │ ├── agents/ # Agent management
│ │ │ ├── openclaw/ # Gateway proxy endpoints
│ │ │ └── webhooks/ # Agent completion webhooks
│ │ ├── settings/ # Settings page
│ │ └── workspace/[slug]/ # Workspace dashboard
│ ├── components/ # React components
│ │ ├── MissionQueue.tsx # Kanban board
│ │ ├── PlanningTab.tsx # AI planning interface
│ │ ├── AgentsSidebar.tsx # Agent panel
│ │ ├── LiveFeed.tsx # Real-time events
│ │ └── TaskModal.tsx # Task create/edit
│ └── lib/
│ ├── db/ # SQLite + migrations
│ ├── openclaw/ # Gateway client + device identity
│ ├── validation.ts # Zod schemas
│ └── types.ts # TypeScript types
├── scripts/ # Bridge & hook scripts
├── src/middleware.ts # Auth middleware
├── .env.example # Environment template
└── CHANGELOG.md # Version history
- Check OpenClaw is running:
openclaw gateway status - Verify URL and token in
.env.local - Check firewall isn't blocking port 18789
- Check OpenClaw logs:
openclaw gateway logs - Verify your AI API key is valid
- Refresh and click the task again
lsof -i :4000
kill -9 <PID>If you're behind an HTTP proxy (corporate VPN, Hiddify, etc.), agent callbacks to localhost may fail because the proxy intercepts local requests.
Fix: Set NO_PROXY so localhost bypasses the proxy:
# Linux / macOS
export NO_PROXY=localhost,127.0.0.1
# Windows (cmd)
set NO_PROXY=localhost,127.0.0.1
# Docker
docker run -e NO_PROXY=localhost,127.0.0.1 ...See Issue #30 for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
Mission Control is built by a growing community. Thank you to everyone who has contributed!
![]() Steve Device Identity |
![]() Ryan Christman Port Configuration |
![]() nicozefrench ARIA Hooks |
![]() GOPAL Node v25 Support |
![]() Jorge Martinez Orchestration |
![]() Nik Planning & Dispatch |
![]() Michael G Usage Dashboard |
![]() Z8Medina Metabase Integration |
![]() Mark Phelps Gateway Agent Discovery 💡 |
![]() Alessio Docker Support |
![]() James Tsetsekas Planning Flow Fixes |
![]() nice-and-precise Agent Protocol Docs |
![]() JamesCao2048 Task Creation Fix |
![]() davetha Force-Dynamic & Model Discovery |
![]() pkgaiassistant-droid Activity Dashboard & Mobile UX |
![]() Coder-maxer Static Route Fix |
![]() grunya-openclaw Dispatch & Proxy Bug Reports |
![]() ilakskill Dispatch Recovery Design |
![]() plutusaisystem-cmyk Agent Daemon & Fleet View |
![]() nithis4th 2nd Brain Knowledge Base |
![]() davidpellerin Dynamic Agent Config |
![]() tmchow Agent Import Improvements |
![]() xiaomiusa87 Session Key Bug Report |
![]() lutherbot-ai Security Audit |
MIT License — see LICENSE for details.
Happy orchestrating! 🚀























