Spaces:
Sleeping
Sleeping
| title: HuggingClaw Mission Control | |
| emoji: ποΈ | |
| colorFrom: indigo | |
| colorTo: purple | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| <div align="center"> | |
| # Mission Control | |
| **The open-source dashboard for AI agent orchestration.** | |
| Manage agent fleets, track tasks, monitor costs, and orchestrate workflows β all from a single pane of glass. | |
| [](LICENSE) | |
| [](https://nextjs.org/) | |
| [](https://react.dev/) | |
| [](https://typescriptlang.org/) | |
| [](https://sqlite.org/) | |
|  | |
| </div> | |
| --- | |
| > **Alpha Software** β Mission Control is under active development. APIs, database schemas, and configuration formats may change between releases. Review the [known limitations](#known-limitations) and [security considerations](#security-considerations) before deploying to production. | |
| ## Why Mission Control? | |
| Running AI agents at scale means juggling sessions, tasks, costs, and reliability across multiple models and channels. Mission Control gives you: | |
| - **32 panels** β Tasks, agents, skills, logs, tokens, memory, security, cron, alerts, webhooks, pipelines, and more | |
| - **Real-time everything** β WebSocket + SSE push updates, smart polling that pauses when you're away | |
| - **Zero external dependencies** β SQLite database, single `pnpm start` to run, no Redis/Postgres/Docker required | |
| - **Role-based access** β Viewer, operator, and admin roles with session + API key auth | |
| - **Quality gates** β Built-in Aegis review system that blocks task completion without sign-off | |
| - **Recurring tasks** β Natural language scheduling ("every morning at 9am") with cron-based template spawning | |
| - **Claude Code bridge** β Read-only integration surfaces Claude Code team tasks and configs on the dashboard | |
| - **Skills Hub** β Browse, install, and security-scan agent skills from ClawdHub and skills.sh registries | |
| - **Multi-gateway** β Connect to multiple agent gateways simultaneously (OpenClaw, and more coming soon) | |
| ## Quick Start | |
| ### One-Command Install (Docker) | |
| ```bash | |
| git clone https://github.com/builderz-labs/mission-control.git | |
| cd mission-control | |
| bash install.sh --docker | |
| ``` | |
| The installer auto-generates secure credentials, starts the container, and runs an OpenClaw fleet health check. Open `http://localhost:3000` to create your admin account. | |
| ### One-Command Install (Local) | |
| ```bash | |
| git clone https://github.com/builderz-labs/mission-control.git | |
| cd mission-control | |
| bash install.sh --local | |
| ``` | |
| Requires Node.js 22.x (LTS, recommended) or 24.x, and pnpm (auto-installed via corepack if missing). | |
| ### One-Command Install (Windows PowerShell) | |
| ```powershell | |
| git clone https://github.com/builderz-labs/mission-control.git | |
| cd mission-control | |
| .\install.ps1 -Mode local | |
| ``` | |
| Or with Docker: | |
| ```powershell | |
| .\install.ps1 -Mode docker | |
| ``` | |
| Additional options: `-Port 8080`, `-SkipOpenClaw`. Requires Node.js 22+ and pnpm (auto-installed via corepack if missing). | |
| ### Manual Setup | |
| > **Requires [pnpm](https://pnpm.io/installation)** and **Node.js 22.x (LTS, recommended) or 24.x**. | |
| > Mission Control is validated on Node 22 (primary CI/LTS) and supports Node 24 for local dev and deploys. Use `nvm use 22` (or `nvm use 24`) before installing or starting the app. | |
| ```bash | |
| git clone https://github.com/builderz-labs/mission-control.git | |
| cd mission-control | |
| nvm use 22 # or: nvm use 24 | |
| pnpm install | |
| pnpm dev # http://localhost:3000/setup | |
| ``` | |
| On first run, visit `http://localhost:3000/setup` to create your admin account. Secrets (`AUTH_SECRET`, `API_KEY`) are auto-generated and persisted to `.data/`. | |
| For CI/automation, set `AUTH_USER` and `AUTH_PASS` env vars to seed the admin from environment instead. | |
| ## Gateway Optional Mode (Standalone Deployment) | |
| Mission Control can run in standalone mode without a gateway connection. This is useful when: | |
| - Deploying on a VPS with firewall rules blocking non-standard WebSocket ports (18789/18790) | |
| - Testing UI/core workflows without a running gateway | |
| - Running Mission Control primarily for project/task operations | |
| Enable with: | |
| ```bash | |
| NEXT_PUBLIC_GATEWAY_OPTIONAL=true | |
| ``` | |
| When enabled, the HUD status shows `Gateway Optional (Standalone)` instead of `Disconnected`. | |
| Works without gateway: | |
| - Task board, projects, agents, sessions, scheduler, webhooks, alerts, activity/audit, cost tracking | |
| Requires active gateway: | |
| - Real-time session updates | |
| - Agent-to-agent messaging | |
| - Gateway log streaming | |
| For production VPS setups, you can also proxy gateway WebSockets over 443. See `docs/deployment.md`. | |
| ### Docker Zero-Config | |
| ```bash | |
| docker compose up | |
| ``` | |
| No `.env` file needed. The container auto-generates `AUTH_SECRET` and `API_KEY` on first boot and persists them across restarts. Visit `http://localhost:3000` to create your admin account. | |
| ### Docker Hardening (Production) | |
| For production deployments, use the hardened compose overlay: | |
| ```bash | |
| docker compose -f docker-compose.yml -f docker-compose.hardened.yml up -d | |
| ``` | |
| This adds read-only filesystem, capability dropping, log rotation, HSTS, and network isolation. See [Security Hardening](docs/SECURITY-HARDENING.md) for the full checklist. | |
| ### Station Doctor | |
| Run diagnostics on your installation: | |
| ```bash | |
| bash scripts/station-doctor.sh | |
| bash scripts/security-audit.sh | |
| ``` | |
| ## Project Status | |
| ### What Works | |
| - Agent management with full lifecycle (register, heartbeat, wake, retire) | |
| - Kanban task board with drag-and-drop, priorities, assignments, and comments | |
| - Real-time monitoring via WebSocket + SSE with smart polling | |
| - Token usage and cost tracking with per-model breakdowns | |
| - Multi-gateway connection management | |
| - Role-based access control (viewer, operator, admin) | |
| - Background scheduler for automated tasks | |
| - Outbound webhooks with delivery history, retry with exponential backoff, and circuit breaker | |
| - Webhook signature verification (HMAC-SHA256 with constant-time comparison) | |
| - Local Claude Code session tracking (auto-discovers from `~/.claude/projects/`) | |
| - Quality review gates for task sign-off | |
| - Pipeline orchestration with workflow templates | |
| - Ed25519 device identity for secure gateway handshake | |
| - Agent SOUL system with workspace file sync and templates | |
| - Agent inter-agent messaging and comms | |
| - Skills Hub with ClawdHub and skills.sh registry integration (search, install, security scan) | |
| - Bidirectional skill sync β disk β DB with SHA-256 change detection | |
| - Local agent discovery from `~/.agents/`, `~/.codex/agents/`, `~/.claude/agents/` | |
| - Natural language recurring tasks β schedule parser converts "every 2 hours" to cron, spawns dated child tasks | |
| - Claude Code task bridge β read-only scanner surfaces team tasks and configs from `~/.claude/tasks/` and `~/.claude/teams/` | |
| - Skill security scanner (prompt injection, credential leaks, data exfiltration, obfuscated content) | |
| - Update available banner with GitHub release check and one-click self-update | |
| - Framework adapter layer for multi-agent registration (OpenClaw, CrewAI, LangGraph, AutoGen, Claude SDK, generic) | |
| - Multi-project task organization with per-project ticket prefixes | |
| - Per-agent rate limiting with `x-agent-name` identity-based quotas | |
| - Agent self-registration endpoint for autonomous agent onboarding | |
| - Security audit panel with posture scoring, secret detection, trust scoring, and MCP call auditing | |
| - Four-layer agent eval framework (output, trace, component, drift detection) | |
| - Agent optimization endpoint with token efficiency, tool patterns, and fleet benchmarks | |
| - Hook profiles (minimal/standard/strict) for tunable security strictness | |
| - Guided onboarding wizard with credential setup, agent discovery, and security scan | |
| ### Known Limitations | |
| - No major security limitations currently tracked here for CSP; policy now uses per-request nonces (no `unsafe-inline` / `unsafe-eval`). | |
| ### Security Considerations | |
| - **Change all default credentials** (`AUTH_USER`, `AUTH_PASS`, `API_KEY`) before deploying | |
| - **Deploy behind a reverse proxy with TLS** (e.g., Caddy, nginx) for any network-accessible deployment | |
| - **Review [SECURITY.md](SECURITY.md)** for the vulnerability reporting process | |
| - **Do not expose the dashboard to the public internet** without configuring `MC_ALLOWED_HOSTS` and TLS | |
| ## Features | |
| ### Agent Management | |
| Monitor agent status, configure models, view heartbeats, and manage the full agent lifecycle from registration to retirement. Agent detail modal with compact overview, inline model selector, and editable sub-agent configuration. | |
|  | |
| ### Task Board | |
| Kanban board with six columns (inbox β assigned β in progress β review β quality review β done), drag-and-drop, priority levels, assignments, threaded comments, and inline sub-agent spawning. | |
| ### Real-time Monitoring | |
| Live activity feed, session inspector, and log viewer with filtering. WebSocket connection to OpenClaw gateway for instant event delivery. | |
| ### Cost Tracking | |
| Token usage dashboard with per-model breakdowns, trend charts, and cost analysis powered by Recharts. | |
| ### Background Automation | |
| Scheduled tasks for database backups, stale record cleanup, agent heartbeat monitoring, and recurring task spawning. Configurable via UI or API. | |
| ### Natural Language Recurring Tasks | |
| Create recurring tasks with natural language like "every morning at 9am" or "every 2 hours". The built-in schedule parser (zero dependencies) converts expressions to cron and stores them in task metadata. A template-clone pattern keeps the original task as a template and spawns dated child tasks (e.g., "Daily Report - Mar 07") on schedule. Each spawned task gets its own Aegis quality gate. | |
| ### Direct CLI Integration | |
| Connect Claude Code, Codex, or any CLI tool directly to Mission Control without requiring a gateway. Register connections, send heartbeats with inline token reporting, and auto-register agents. | |
| ### Claude Code Session Tracking | |
| Automatically discovers and tracks local Claude Code sessions by scanning `~/.claude/projects/`. Extracts token usage, model info, message counts, cost estimates, and active status from JSONL transcripts. Scans every 60 seconds via the background scheduler. | |
| ### Claude Code Task Bridge | |
| Read-only integration that surfaces Claude Code team tasks and team configs on the Mission Control dashboard. Scans `~/.claude/tasks/<team>/<N>.json` for structured task data (subject, status, owner, blockers) and `~/.claude/teams/<name>/config.json` for team metadata (members, lead agent, model assignments). Visible in both the Task Board (collapsible section) and Cron Management (teams overview) panels. | |
| ### GitHub Issues Sync | |
| Inbound sync from GitHub repositories with label and assignee mapping. Synced issues appear on the task board alongside agent-created tasks. | |
| ### Skills Hub | |
| Browse, install, and manage agent skills from local directories and external registries (ClawdHub, skills.sh). Bidirectional sync detects manual additions on disk and pushes UI edits back to `SKILL.md` files. Built-in security scanner checks for prompt injection, credential leaks, data exfiltration, obfuscated content, and dangerous shell commands before installation. Supports 5 skill roots: `~/.agents/skills`, `~/.codex/skills`, project-local `.agents/skills` and `.codex/skills`, and `~/.openclaw/skills` for gateway mode. | |
| ### Local Agent Discovery | |
| Automatically discovers agent definitions from `~/.agents/`, `~/.codex/agents/`, and `~/.claude/agents/` directories. Detection looks for marker files (AGENT.md, soul.md, identity.md, config.json). Discovered agents sync bidirectionally β edit in the UI and changes write back to disk. | |
| ### Agent SOUL System | |
| Define agent personality, capabilities, and behavioral guidelines via SOUL markdown files. Edit in the UI or directly in workspace `soul.md` files β changes sync bidirectionally between disk and database. | |
| ### Agent Messaging | |
| Session-threaded inter-agent communication via the comms API (`a2a:*`, `coord:*`, `session:*`) with coordinator inbox support and runtime tool-call visibility in the `agent-comms` feed. | |
| ### Memory Knowledge Graph | |
| Explore agent knowledge through the Memory Browser, filesystem-backed memory tree, and interactive relationship graph for sessions, memory chunks, and linked knowledge files. | |
|  | |
| ### Onboarding Wizard | |
| Guided first-run setup wizard that walks new users through five steps: Welcome (system capabilities detection), Credentials (verify AUTH_PASS and API_KEY strength), Agent Setup (gateway connection or local Claude Code discovery), Security Scan (automated configuration audit with pass/fail checks), and Get Started (quick links to key panels). Automatically appears on first login and can be re-launched from Settings. Progress is persisted per-user so you can resume where you left off. | |
| ### Security Audit & Agent Trust | |
| Dedicated security audit panel with real-time posture scoring (0-100), secret detection across agent messages, MCP tool call auditing, injection attempt tracking, and per-agent trust scores. Hook profiles (minimal/standard/strict) let operators tune security strictness per deployment. Auth failures, rate limit hits, and injection attempts are logged automatically as security events. | |
| ### Agent Eval Framework | |
| Four-layer evaluation stack for agent quality: output evals (task completion scoring against golden datasets), trace evals (convergence scoring β >3.0 indicates looping), component evals (tool reliability with p50/p95/p99 latency from MCP call logs), and drift detection (10% threshold vs 4-week rolling baseline). Manage golden datasets and trigger eval runs via API or UI. | |
| ### Agent Optimization | |
| API endpoint agents can call for self-improvement recommendations. Analyzes token efficiency (tokens/task vs fleet average), tool usage patterns (success/failure rates, redundant calls), and generates prioritized recommendations. Fleet benchmarks provide percentile rankings across all agents. | |
| ### Integrations | |
| Outbound webhooks with delivery history, configurable alert rules with cooldowns, and multi-gateway connection management. Optional 1Password CLI integration for secret management. | |
| ### Workspace Management | |
| Workspaces (tenant instances) are managed via the `/api/super/*` API endpoints. Admins can: | |
| - **Create** new client instances (slug, display name, Linux user, gateway port, plan tier) | |
| - **Monitor** provisioning jobs and their step-by-step progress | |
| - **Decommission** tenants with optional cleanup of state directories and Linux users | |
| Each workspace gets its own isolated environment with a dedicated OpenClaw gateway, state directory, and workspace root. | |
| ### Update Checker | |
| Automatic GitHub release check notifies you when a new version is available, displayed as a banner in the dashboard. Admins can trigger a one-click update directly from the banner β the server runs `git pull`, `pnpm install`, and `pnpm build`, then prompts for a restart. Dirty working trees are rejected, and all updates are logged to the audit trail. | |
| ### Framework Adapters | |
| Built-in adapter layer for multi-agent registration across frameworks. Supported adapters: OpenClaw, CrewAI, LangGraph, AutoGen, Claude SDK, and a generic fallback. Each adapter normalizes agent registration, heartbeats, and task reporting to a common interface. | |
| ## Architecture | |
| ``` | |
| mission-control/ | |
| βββ src/ | |
| β βββ proxy.ts # Auth gate + CSRF + network access control | |
| β βββ app/ | |
| β β βββ page.tsx # SPA shell β routes all panels | |
| β β βββ login/page.tsx # Login page | |
| β β βββ api/ # 101 REST API routes | |
| β βββ components/ | |
| β β βββ layout/ # NavRail, HeaderBar, LiveFeed | |
| β β βββ dashboard/ # Overview dashboard | |
| β β βββ panels/ # 32 feature panels | |
| β β βββ chat/ # Agent chat UI | |
| β βββ lib/ | |
| β β βββ auth.ts # Session + API key auth, RBAC | |
| β β βββ db.ts # SQLite (better-sqlite3, WAL mode) | |
| β β βββ claude-sessions.ts # Local Claude Code session scanner | |
| β β βββ claude-tasks.ts # Claude Code team task/config scanner | |
| β β βββ schedule-parser.ts # Natural language β cron expression parser | |
| β β βββ recurring-tasks.ts # Recurring task template spawner | |
| β β βββ migrations.ts # 39 schema migrations | |
| β β βββ scheduler.ts # Background task scheduler | |
| β β βββ webhooks.ts # Outbound webhook delivery | |
| β β βββ websocket.ts # Gateway WebSocket client | |
| β β βββ device-identity.ts # Ed25519 device identity for gateway auth | |
| β β βββ agent-sync.ts # OpenClaw config β MC database sync | |
| β β βββ skill-sync.ts # Bidirectional disk β DB skill sync | |
| β β βββ skill-registry.ts # ClawdHub + skills.sh registry client & security scanner | |
| β β βββ local-agent-sync.ts # Local agent discovery from ~/.agents, ~/.codex, ~/.claude | |
| β β βββ secret-scanner.ts # Regex-based secret detection (AWS, GitHub, Stripe, JWT, PEM, DB URIs) | |
| β β βββ security-events.ts # Security event logger + agent trust scoring | |
| β β βββ mcp-audit.ts # MCP tool call auditing | |
| β β βββ agent-evals.ts # Four-layer agent eval framework | |
| β β βββ agent-optimizer.ts # Agent optimization engine | |
| β β βββ hook-profiles.ts # Security strictness profiles (minimal/standard/strict) | |
| β β βββ adapters/ # Framework adapters (openclaw, crewai, langgraph, autogen, claude-sdk, generic) | |
| β βββ store/index.ts # Zustand state management | |
| βββ .data/ # Runtime data (SQLite DB, token logs) | |
| ``` | |
| ## Tech Stack | |
| | Layer | Technology | | |
| |-------|------------| | |
| | Framework | Next.js 16 (App Router) | | |
| | UI | React 19, Tailwind CSS 3.4 | | |
| | Language | TypeScript 5.7 | | |
| | Database | SQLite via better-sqlite3 (WAL mode) | | |
| | State | Zustand 5 | | |
| | Charts | Recharts 3 | | |
| | Real-time | WebSocket + Server-Sent Events | | |
| | Auth | scrypt hashing, session tokens, RBAC | | |
| | Validation | Zod 4 | | |
| | Testing | Vitest (282 unit) + Playwright (295 E2E) | | |
| ## Authentication | |
| Three auth methods, three roles: | |
| | Method | Details | | |
| |--------|----------| | |
| | Session cookie | `POST /api/auth/login` sets `__Host-mc-session` (7-day expiry) for HTTPS, `mc-session` for HTTP | | |
| | API key | `x-api-key` header matches `API_KEY` env var | | |
| | Google Sign-In | OAuth with admin approval workflow | | |
| | Role | Access | | |
| |------|--------| | |
| | `viewer` | Read-only | | |
| | `operator` | Read + write (tasks, agents, chat) | | |
| | `admin` | Full access (users, settings, system ops) | | |
| ## API Reference | |
| All endpoints require authentication unless noted. Full reference below. | |
| <details> | |
| <summary><strong>Auth</strong></summary> | |
| | Method | Path | Description | | |
| |--------|------|-------------| | |
| | `POST` | `/api/auth/login` | Login with username/password | | |
| | `POST` | `/api/auth/google` | Google Sign-In | | |
| | `POST` | `/api/auth/logout` | Destroy session | | |
| | `GET` | `/api/auth/me` | Current user info | | |
| | `GET` | `/api/auth/access-requests` | List pending access requests (admin) | | |
| | `POST` | `/api/auth/access-requests` | Approve/reject requests (admin) | | |
| </details> | |
| <details> | |
| <summary><strong>Core Resources</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/agents` | viewer | List agents with task stats | | |
| | `POST` | `/api/agents` | operator | Register/update agent | | |
| | `GET` | `/api/agents/[id]` | viewer | Agent details | | |
| | `GET` | `/api/agents/[id]/attribution` | viewer | Self-scope attribution/audit/cost report (`?privileged=1` admin override) | | |
| | `POST` | `/api/agents/sync` | operator | Sync agents from openclaw.json or local disk (`?source=local`) | | |
| | `POST` | `/api/agents/register` | viewer | Agent self-registration (idempotent, rate-limited) | | |
| | `GET/POST` | `/api/adapters` | viewer/operator | List adapters / Framework-agnostic agent action dispatch | | |
| | `GET/PUT` | `/api/agents/[id]/soul` | operator | Agent SOUL content (reads from workspace, writes to both) | | |
| | `GET/POST` | `/api/agents/comms` | operator | Agent inter-agent communication | | |
| | `POST` | `/api/agents/message` | operator | Send message to agent | | |
| | `GET` | `/api/tasks` | viewer | List tasks (filter: `?status=`, `?assigned_to=`, `?priority=`) | | |
| | `POST` | `/api/tasks` | operator | Create task | | |
| | `GET` | `/api/tasks/queue` | operator | Poll next task for an agent (`?agent=`, optional `?max_capacity=`) | | |
| | `GET` | `/api/tasks/[id]` | viewer | Task details | | |
| | `PUT` | `/api/tasks/[id]` | operator | Update task | | |
| | `DELETE` | `/api/tasks/[id]` | admin | Delete task | | |
| | `GET` | `/api/tasks/[id]/comments` | viewer | Task comments | | |
| | `POST` | `/api/tasks/[id]/comments` | operator | Add comment | | |
| | `POST` | `/api/tasks/[id]/broadcast` | operator | Broadcast task to agents | | |
| </details> | |
| ### Attribution Contract (`/api/agents/[id]/attribution`) | |
| - Self-scope by default: requester identity must match target agent via `x-agent-name` (or matching authenticated username). | |
| - Admin override requires explicit `?privileged=1`. | |
| - Query params: | |
| - `hours`: integer window `1..720` (default `24`) | |
| - `section`: comma-separated subset of `identity,audit,mutations,cost` (default all) | |
| <details> | |
| <summary><strong>Security & Evals</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/security-audit` | admin | Security posture, events, trust scores, MCP audit (`?timeframe=day`) | | |
| | `GET` | `/api/security-scan` | admin | Static security configuration scan | | |
| | `GET` | `/api/agents/optimize` | operator | Agent optimization recommendations (`?agent=&hours=24`) | | |
| | `GET` | `/api/agents/evals` | operator | Agent eval results (`?agent=`, `?action=history&weeks=4`) | | |
| | `POST` | `/api/agents/evals` | operator | Trigger eval run (`action: 'run'`) or manage golden datasets (`action: 'golden-set'`) | | |
| </details> | |
| <details> | |
| <summary><strong>Monitoring</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/status` | viewer | System status (uptime, memory, disk) | | |
| | `GET` | `/api/activities` | viewer | Activity feed | | |
| | `GET` | `/api/notifications` | viewer | Notifications for recipient | | |
| | `GET` | `/api/sessions` | viewer | Active gateway sessions | | |
| | `GET` | `/api/tokens` | viewer | Token usage and cost data | | |
| | `GET` | `/api/standup` | viewer | Standup report history | | |
| | `POST` | `/api/standup` | operator | Generate standup | | |
| | `GET` | `/api/releases/check` | viewer | Check for new GitHub releases | | |
| </details> | |
| <details> | |
| <summary><strong>Configuration</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET/PUT` | `/api/settings` | admin | App settings | | |
| | `GET/PUT` | `/api/gateway-config` | admin | OpenClaw gateway config | | |
| | `GET/POST` | `/api/cron` | admin | Cron management | | |
| | `GET/POST` | `/api/onboarding` | viewer | Onboarding wizard state and step progression | | |
| </details> | |
| <details> | |
| <summary><strong>Operations</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET/POST` | `/api/scheduler` | admin | Background task scheduler | | |
| | `GET` | `/api/audit` | admin | Audit log | | |
| | `GET` | `/api/logs` | viewer | Agent log browser | | |
| | `GET` | `/api/memory` | viewer | Memory file browser/search | | |
| | `GET` | `/api/search` | viewer | Global search | | |
| | `GET` | `/api/export` | admin | CSV export | | |
| | `POST` | `/api/backup` | admin | Database backup | | |
| | `POST` | `/api/cleanup` | admin | Stale data cleanup | | |
| </details> | |
| <details> | |
| <summary><strong>Integrations</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET/POST/PUT/DELETE` | `/api/webhooks` | admin | Webhook CRUD | | |
| | `POST` | `/api/webhooks/test` | admin | Test delivery | | |
| | `POST` | `/api/webhooks/retry` | admin | Manual retry a failed delivery | | |
| | `GET` | `/api/webhooks/verify-docs` | viewer | Signature verification docs | | |
| | `GET` | `/api/webhooks/deliveries` | admin | Delivery history | | |
| | `GET/POST/PUT/DELETE` | `/api/alerts` | admin | Alert rules | | |
| | `GET/POST/PUT/DELETE` | `/api/gateways` | admin | Gateway connections | | |
| | `POST` | `/api/gateways/connect` | operator | Resolve websocket URL + token for selected gateway | | |
| | `GET/PUT/DELETE/POST` | `/api/integrations` | admin | Integration management | | |
| | `POST` | `/api/github` | admin | Trigger GitHub Issues sync | | |
| </details> | |
| <details> | |
| <summary><strong>Workspace/Tenant Management</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/super/tenants` | admin | List all tenants with latest provisioning status | | |
| | `POST` | `/api/super/tenants` | admin | Create tenant and queue bootstrap job | | |
| | `POST` | `/api/super/tenants/[id]/decommission` | admin | Queue tenant decommission job | | |
| | `GET` | `/api/super/provision-jobs` | admin | List provisioning jobs (filter: `?tenant_id=`, `?status=`) | | |
| | `POST` | `/api/super/provision-jobs` | admin | Queue additional job for existing tenant | | |
| | `POST` | `/api/super/provision-jobs/[id]/action` | admin | Approve, reject, or cancel a provisioning job | | |
| </details> | |
| <details> | |
| <summary><strong>Skills</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/skills` | viewer | List skills (DB-backed with filesystem fallback) | | |
| | `GET` | `/api/skills?mode=content&source=β¦&name=β¦` | viewer | Read SKILL.md content with inline security report | | |
| | `GET` | `/api/skills?mode=check&source=β¦&name=β¦` | viewer | On-demand security scan | | |
| | `POST` | `/api/skills` | operator | Create skill | | |
| | `PUT` | `/api/skills` | operator | Update skill content | | |
| | `DELETE` | `/api/skills` | operator | Delete skill | | |
| | `GET` | `/api/skills/registry?source=β¦&q=β¦` | viewer | Search external registry (ClawdHub, skills.sh) | | |
| | `POST` | `/api/skills/registry` | admin | Install skill from registry | | |
| | `PUT` | `/api/skills/registry` | viewer | Security-check content without installing | | |
| </details> | |
| <details> | |
| <summary><strong>Direct CLI</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `POST` | `/api/connect` | operator | Register direct CLI connection | | |
| | `GET` | `/api/connect` | viewer | List active connections | | |
| | `DELETE` | `/api/connect` | operator | Disconnect CLI session | | |
| </details> | |
| <details> | |
| <summary><strong>Chat & Real-time</strong></summary> | |
| | Method | Path | Description | | |
| |--------|------|-------------| | |
| | `GET` | `/api/events` | SSE stream of DB changes | | |
| | `GET/POST` | `/api/chat/conversations` | Conversation CRUD | | |
| | `GET/POST` | `/api/chat/messages` | Message CRUD | | |
| </details> | |
| <details> | |
| <summary><strong>Agent Lifecycle</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `POST` | `/api/spawn` | operator | Spawn agent session | | |
| | `POST` | `/api/agents/[id]/heartbeat` | operator | Agent heartbeat | | |
| | `POST` | `/api/agents/[id]/wake` | operator | Wake sleeping agent | | |
| | `POST` | `/api/quality-review` | operator | Submit quality review | | |
| </details> | |
| <details> | |
| <summary><strong>Claude Code Sessions</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/claude/sessions` | viewer | List discovered sessions (filter: `?active=1`, `?project=`) | | |
| | `POST` | `/api/claude/sessions` | operator | Trigger manual session scan | | |
| | `GET` | `/api/claude-tasks` | viewer | List Claude Code team tasks and configs (`?force=true` to bypass cache) | | |
| | `GET` | `/api/schedule-parse` | viewer | Parse natural language schedule (`?input=every+2+hours`) | | |
| </details> | |
| <details> | |
| <summary><strong>Pipelines</strong></summary> | |
| | Method | Path | Role | Description | | |
| |--------|------|------|-------------| | |
| | `GET` | `/api/pipelines` | viewer | List pipeline runs | | |
| | `POST` | `/api/pipelines/run` | operator | Start pipeline | | |
| | `GET/POST` | `/api/workflows` | viewer/admin | Workflow templates | | |
| </details> | |
| ## Environment Variables | |
| See [`.env.example`](.env.example) for the complete list. Key variables: | |
| | Variable | Required | Description | | |
| |----------|----------|-------------| | |
| | `AUTH_USER` | No | Initial admin username (default: `admin`) | | |
| | `AUTH_PASS` | No | Initial admin password | | |
| | `AUTH_PASS_B64` | No | Base64-encoded admin password (overrides `AUTH_PASS` if set) | | |
| | `API_KEY` | No | API key for headless access | | |
| | `OPENCLAW_CONFIG_PATH` | Yes* | Absolute path to `openclaw.json` (preferred) | | |
| | `OPENCLAW_STATE_DIR` | Yes* | OpenClaw state root (default: `~/.openclaw`) | | |
| | `OPENCLAW_HOME` | No | Legacy alias for state dir (fallback if `OPENCLAW_STATE_DIR` unset) | | |
| | `OPENCLAW_GATEWAY_HOST` | No | Gateway host (default: `127.0.0.1`) | | |
| | `OPENCLAW_GATEWAY_PORT` | No | Gateway WebSocket port (default: `18789`) | | |
| | `OPENCLAW_GATEWAY_TOKEN` | No | Server-side gateway auth token | | |
| | `OPENCLAW_TOOLS_PROFILE` | No | Tools profile for `sessions_spawn` (recommended: `coding`) | | |
| | `NEXT_PUBLIC_GATEWAY_TOKEN` | No | Browser-side gateway auth token (must use `NEXT_PUBLIC_` prefix) | | |
| | `NEXT_PUBLIC_GATEWAY_CLIENT_ID` | No | Gateway UI client ID for websocket handshake (default: `openclaw-control-ui`) | | |
| | `OPENCLAW_MEMORY_DIR` | No | Memory browser root (see note below) | | |
| | `MC_CLAUDE_HOME` | No | Path to `~/.claude` directory (default: `~/.claude`) | | |
| | `MC_TRUSTED_PROXIES` | No | Comma-separated trusted proxy IPs for XFF parsing | | |
| | `MC_ALLOWED_HOSTS` | No | Host allowlist for production | | |
| *Memory browser, log viewer, and gateway config require OpenClaw config/state resolution (`OPENCLAW_CONFIG_PATH` and/or `OPENCLAW_STATE_DIR`). | |
| > **Memory Browser note:** OpenClaw does not store agent memory markdown files under | |
| > `$OPENCLAW_STATE_DIR/memory/` β that directory does not exist by default. Agent memory lives | |
| > in each agent's workspace (e.g. `~/clawd-agents/{agent}/memory/`). Set | |
| > `OPENCLAW_MEMORY_DIR` to your agents root directory to make the Memory Browser show | |
| > daily logs, `MEMORY.md`, and other markdown files: | |
| > ``` | |
| > OPENCLAW_MEMORY_DIR=/home/you/clawd-agents | |
| > ``` | |
| ### Workspace Creation Flow | |
| To add a new workspace/client instance, use the `/api/super/tenants` endpoint or the Workspaces panel (if enabled): | |
| 1. Provide tenant/workspace fields (`slug`, `display_name`, optional ports/gateway owner). | |
| 2. The system queues a bootstrap provisioning job. | |
| 3. Approve/run the provisioning job via `/api/super/provision-jobs/[id]/action`. | |
| ### Projects and Ticket Prefixes | |
| Mission Control supports multi-project task organization per workspace: | |
| - Create/manage projects via Task Board β `Projects`. | |
| - Each project has its own ticket prefix and counter. | |
| - New tasks receive project-scoped ticket refs like `PA-001`, `PA-002`. | |
| - Task board supports filtering by project. | |
| ### Memory Scope Clarification | |
| - **Agent profile β Memory tab**: per-agent working memory stored in Mission Control DB (`working_memory`). | |
| - **Memory Browser page**: workspace/local filesystem memory tree under `OPENCLAW_MEMORY_DIR`. | |
| ## Deployment | |
| ```bash | |
| # Build | |
| pnpm install --frozen-lockfile | |
| pnpm build | |
| # Run | |
| OPENCLAW_CONFIG_PATH=/path/to/.openclaw/openclaw.json OPENCLAW_STATE_DIR=/path/to/.openclaw pnpm start | |
| ``` | |
| Network access is restricted by default in production. Set `MC_ALLOWED_HOSTS` (comma-separated) or `MC_ALLOW_ANY_HOST=1` to control access. | |
| ## Development | |
| ```bash | |
| pnpm dev # Dev server | |
| pnpm build # Production build | |
| pnpm typecheck # TypeScript check | |
| pnpm lint # ESLint | |
| pnpm test # Vitest unit tests | |
| pnpm test:e2e # Playwright E2E | |
| pnpm quality:gate # All checks | |
| ``` | |
| ## Workload Signals Contract | |
| `GET /api/workload` returns a workload snapshot and one recommendation: | |
| - `normal`: system healthy, submit freely | |
| - `throttle`: reduce submission rate / defer non-critical work | |
| - `shed`: submit only critical work | |
| - `pause`: hold submissions until capacity returns | |
| Low-signal behavior: | |
| - `capacity.error_rate_5m` is clamped to `[0,1]` | |
| - `queue.estimated_wait_confidence` is `calculated` or `unknown` | |
| - queue breakdown maps include stable keys even when counts are zero | |
| Runtime-tunable thresholds: | |
| - `MC_WORKLOAD_QUEUE_DEPTH_NORMAL` | |
| - `MC_WORKLOAD_QUEUE_DEPTH_THROTTLE` | |
| - `MC_WORKLOAD_QUEUE_DEPTH_SHED` | |
| - `MC_WORKLOAD_BUSY_RATIO_THROTTLE` | |
| - `MC_WORKLOAD_BUSY_RATIO_SHED` | |
| - `MC_WORKLOAD_ERROR_RATE_THROTTLE` | |
| - `MC_WORKLOAD_ERROR_RATE_SHED` | |
| - `MC_WORKLOAD_RECENT_WINDOW_SECONDS` | |
| ## Agent Diagnostics Contract | |
| `GET /api/agents/{id}/diagnostics` is self-scoped by default. | |
| - Self access: | |
| - Session user where `username === agent.name`, or | |
| - API-key request with `x-agent-name` matching `{id}` agent name | |
| - Cross-agent access: | |
| - Allowed only with explicit `?privileged=1` and admin auth | |
| - Query validation: | |
| - `hours` must be an integer between `1` and `720` | |
| - `section` must be a comma-separated subset of `summary,tasks,errors,activity,trends,tokens` | |
| Trend alerts in the `trends.alerts` response are derived from current-vs-previous window comparisons: | |
| - `warning`: error spikes or severe activity drop | |
| - `info`: throughput drops or potential stall patterns | |
| ## Roadmap | |
| See [open issues](https://github.com/builderz-labs/mission-control/issues) for planned work and the [v2.0.0 release notes](docs/releases/2.0.0.md) for the latest major release summary. | |
| **Completed:** | |
| - [x] Dockerfile and docker-compose.yml ([#34](https://github.com/builderz-labs/mission-control/issues/34)) | |
| - [x] Implement session control actions β monitor/pause/terminate are stub buttons ([#35](https://github.com/builderz-labs/mission-control/issues/35)) | |
| - [x] Dynamic model catalog β replace hardcoded pricing across 3 files ([#36](https://github.com/builderz-labs/mission-control/issues/36)) | |
| - [x] API-wide rate limiting ([#37](https://github.com/builderz-labs/mission-control/issues/37)) | |
| - [x] React error boundaries around panels ([#38](https://github.com/builderz-labs/mission-control/issues/38)) | |
| - [x] Structured logging with pino ([#39](https://github.com/builderz-labs/mission-control/issues/39)) | |
| - [x] Accessibility improvements β WCAG 2.1 AA ([#40](https://github.com/builderz-labs/mission-control/issues/40)) | |
| - [x] HSTS header for TLS deployments ([#41](https://github.com/builderz-labs/mission-control/issues/41)) | |
| - [x] Input validation with zod schemas ([#42](https://github.com/builderz-labs/mission-control/issues/42)) | |
| - [x] Export endpoint row limits ([#43](https://github.com/builderz-labs/mission-control/issues/43)) | |
| - [x] Fill in Vitest unit test stubs with real assertions | |
| - [x] Direct CLI integration β connect tools like Codex, Claude Code, or custom CLIs directly without requiring a gateway ([#61](https://github.com/builderz-labs/mission-control/pull/61)) | |
| - [x] OpenAPI 3.1 documentation with Scalar UI ([#60](https://github.com/builderz-labs/mission-control/pull/60)) | |
| - [x] GitHub Issues sync β inbound sync with label/assignee mapping ([#63](https://github.com/builderz-labs/mission-control/pull/63)) | |
| - [x] Webhook retry with exponential backoff and circuit breaker | |
| - [x] Webhook signature verification (HMAC-SHA256 with constant-time comparison) | |
| - [x] Local Claude Code session tracking β auto-discover sessions from `~/.claude/projects/` | |
| - [x] Rate limiter IP extraction hardening with trusted proxy support | |
| - [x] Ed25519 device identity for WebSocket challenge-response handshake ([#85](https://github.com/builderz-labs/mission-control/pull/85)) | |
| - [x] Agent SOUL workspace sync β bidirectional sync between `soul.md` files and database ([#95](https://github.com/builderz-labs/mission-control/pull/95)) | |
| - [x] Update available banner with GitHub release check ([#94](https://github.com/builderz-labs/mission-control/pull/94)) | |
| - [x] Side panel navigation synced with URL routes ([#87](https://github.com/builderz-labs/mission-control/pull/87)) | |
| - [x] Task board SSE wiring, priority enum, and auto-advance ([#89](https://github.com/builderz-labs/mission-control/pull/89)) | |
| **Up next:** | |
| - [x] Workspace isolation for multi-team usage ([#75](https://github.com/builderz-labs/mission-control/issues/75)) | |
| - [x] Framework adapter layer β multi-agent registration across OpenClaw, CrewAI, LangGraph, AutoGen, Claude SDK, and generic | |
| - [x] Self-update mechanism β admin-only one-click update with audit logging | |
| - [x] Multi-project task organization with per-project ticket prefixes | |
| - [x] Skills Hub β browse, install, and security-scan skills from ClawdHub and skills.sh registries | |
| - [x] Bidirectional skill sync β disk β DB with SHA-256 change detection (60s scheduler) | |
| - [x] Local agent discovery β auto-detect agents from `~/.agents/`, `~/.codex/agents/`, `~/.claude/agents/` | |
| - [x] Natural language recurring tasks with cron-based template spawning | |
| - [x] Claude Code task bridge β read-only team task and config integration | |
| - [ ] Agent-agnostic gateway support β connect any orchestration framework (OpenClaw, ZeroClaw, OpenFang, NeoBot, IronClaw, etc.), not just OpenClaw | |
| - [ ] **[Flight Deck](https://github.com/splitlabs/flight-deck)** β native desktop companion app (Tauri v2) with real PTY terminal grid, stall inbox with native OS notifications, and system tray HUD. Currently in private beta. | |
| - [ ] First-class per-agent cost breakdowns β dedicated panel with per-agent token usage and spend (currently derivable from per-session data) | |
| - [ ] OAuth approval UI improvements | |
| - [ ] API token rotation UI | |
| ## Contributing | |
| Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions and guidelines. | |
| ## Security | |
| To report a vulnerability, see [SECURITY.md](SECURITY.md). | |
| ## β€οΈ Support the Project | |
| If you find this project useful, consider supporting my open-source work. | |
| [](https://buymeacoffee.com/nyk_builderz) | |
| **Solana donations** | |
| `BYLu8XD8hGDUtdRBWpGWu5HKoiPrWqCxYFSh4oxXuvPg` | |
| <p align="center"> | |
| <a href="https://star-history.com/#builderz-labs/mission-control&Date"> | |
| <img src="https://api.star-history.com/svg?repos=builderz-labs/mission-control&type=Date" alt="Star History" width="400"> | |
| </a> | |
| </p> | |
| ## License | |
| [MIT](LICENSE) Β© 2026 [Builderz Labs](https://github.com/builderz-labs/mission-control) | |