/mission-control
Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs.
$ npx -y skills add builderz-labs/mission-control --skill mission-control --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/mission-control
Context preview
The summary Claude sees to decide when to auto-load this skill.
Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs.
SKILL.md
mission-control.SKILL.mdname: mission-control
description: "Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs."
Mission Control Agent Skill
Mission Control (MC) is an AI agent orchestration dashboard with real-time SSE/WebSocket, a skill registry, framework adapters, and RBAC. This skill teaches agents how to interact with MC APIs programmatically.
Quick Start
**Base URL:** `http://localhost:3000` (default Next.js dev) or your deployed host.
**Auth header:** `x-api-key: <your-api-key>`
**Register + heartbeat in two calls:**
# 1. Register
curl -X POST http://localhost:3000/api/adapters \
-H "Content-Type: application/json" \
-H "x-api-key: $MC_API_KEY" \
-d '{
"framework": "generic",
"action": "register",
"payload": { "agentId": "my-agent-01", "name": "My Agent" }
}'
# 2. Heartbeat (repeat every 5 minutes)
curl -X POST http://localhost:3000/api/adapters \
-H "Content-Type: application/json" \
-H "x-api-key: $MC_API_KEY" \
-d '{
"framework": "generic",
"action": "heartbeat",
"payload": { "agentId": "my-agent-01", "status": "online" }
}'Authentication
MC supports two auth methods:
| Method | Header | Use Case | |--------|--------|----------| | API Key | `x-api-key: <key>` or `Authorization: Bearer <key>` | Agents, scripts, CI/CD | | Session cookie | `Cookie: __Host-mc-session=<token>` (HTTPS) or `mc-session=<token>` (HTTP) | Browser UI |
**Roles (hierarchical):** `viewer` < `operator` < `admin`
- **viewer** — Read-only access (GET endpoints)
- **operator** — Create/update agents, tasks, skills, use adapters
- **admin** — Full access including user management
API key auth grants `admin` role by default. The key is set via `API_KEY` env var or the `security.api_key` DB setting.
Agents can identify themselves with the optional `X-Agent-Name` header for attribution in audit logs.
Agent Lifecycle
register → heartbeat (5m interval) → fetch assignments → report task status → disconnect
All lifecycle actions go through the adapter protocol (`POST /api/adapters`).
1. Register
{
"framework": "generic",
"action": "register",
"payload": {
"agentId": "my-agent-01",
"name": "My Agent",
"metadata": { "version": "1.0", "capabilities": ["code", "review"] }
}
}2. Heartbeat
Send every ~5 minutes to stay marked as online.
{
"framework": "generic",
"action": "heartbeat",
"payload": {
"agentId": "my-agent-01",
"status": "online",
"metrics": { "tasks_completed": 5, "uptime_seconds": 3600 }
}
}3. Fetch Assignments
Returns up to 5 pending tasks sorted by priority (critical → low), then due date.
{
"framework": "generic",
"action": "assignments",
"payload": { "agentId": "my-agent-01" }
}**Response:**
{
"assignments": [
{ "taskId": "42", "description": "Fix login bug\nUsers cannot log in with SSO", "priority": 1 }
],
"framework": "generic"
}4. Report Task Progress
{
"framework": "generic",
"action": "report",
"payload": {
"taskId": "42",
"agentId": "my-agent-01",
"progress": 75,
"status": "in_progress",
"output": "Fixed SSO handler, running tests..."
}
}`status` values: `in_progress`, `done`, `failed`, `blocked`
5. Disconnect
{
"framework": "generic",
"action": "disconnect",
"payload": { "agentId": "my-agent-01" }
}Core API Reference
Agents — `/api/agents`
| Method | Min Role | Description | |--------|----------|-------------| | GET | viewer | List agents. Query: `?status=online&role=dev&limit=50&offset=0` | | POST | operator | Create agent. Body: `{ name, role, status?, config?, template?, session_key?, soul_content? }` | | PUT | operator | Update agent. Body: `{ name, status?, role?, config?, session_key?, soul_content?, last_activity? }` |
**GET response shape:**
{
"agents": [{
"id": 1, "name": "scout", "role": "researcher", "status": "online",
"config": {}, "taskStats": { "total": 10, "assigned": 2, "in_progress": 1, "completed": 7 }
}],
"total": 1, "page": 1, "limit": 50
}Tasks — `/api/tasks`
| Method | Min Role | Description | |--------|----------|-------------| | GET | viewer | List tasks. Query: `?status=in_progress&assigned_to=scout&priority=high&project_id=1&limit=50&offset=0` | | POST | operator | Create task. Body: `{ title, description?, status?, priority?, assigned_to?, project_id?, tags?, metadata?, due_date?, estimated_hours? }` | | PUT | operator | Bulk status update. Body: `{ tasks: [{ id, status }] }` |
**Priority values:** `critical`, `high`, `medium`, `low`
**Status values:** `inbox`, `assigned`, `in_progress`, `review`, `done`, `failed`, `blocked`, `cancelled`
Note: Moving a task to `done` via PUT requires an Aegis quality review approval.
**POST response:**
{
"task": {
"id": 42, "title": "Fix login bug", "status": "assigned",
"priority": "high", "assigned_to": "scout", "ticket_ref": "GEN-001",
"tags": ["bug"], "metadata": {}
}
}Skills — `/api/skills`
| Method | Min Role | Description | |--------|----------|-------------| | GET | viewer | List all skills across roots | | GET `?mode=content&source=...&name=...` | viewer | Read a skill's SKILL.md content | | GET `?mode=check&source=...&name=...` | viewer | Run security check on a skill | | POST | operator | Create/upsert skill. Body: `{ source, name, content }` | | PUT | operator | Update skill content. Body: `{ source, name, content }` | | DELETE `?source=...&name=...` | operator | Delete a skill |
**Skill sources:** `user-agents`, `user-codex`, `project-agents`, `project-codex`, `openclaw`
Status — `/api/status`
| Action | Min Role | Description | |--------|----------|-------------| | GET `?action=overview` | viewer | System status (uptime, memory, disk, sessions) |
Read more
name: mission-control description: "Interact with Mission Control — AI agent orchestration dashboard. Use when registering agents, managing tasks, syncing skills, or querying agent/task status via MC APIs."
Mission Control Agent Skill
Mission Control (MC) is an AI agent orchestration dashboard with real-time SSE/WebSocket, a skill registry, framework adapters, and RBAC. This skill teaches agents how to interact with MC APIs programmatically.
Quick Start
**Base URL:** `http://localhost:3000` (default Next.js dev) or your deployed host.
**Auth header:** `x-api-key: <your-api-key>`
**Register + heartbeat in two calls:**
# 1. Register
curl -X POST http://localhost:3000/api/adapters \
-H "Content-Type: application/json" \
-H "x-api-key: $MC_API_KEY" \
-d '{
"framework": "generic",
"action": "register",
"payload": { "agentId": "my-agent-01", "name": "My Agent" }
}'
# 2. Heartbeat (repeat every 5 minutes)
curl -X POST http://localhost:3000/api/adapters \
-H "Content-Type: application/json" \
-H "x-api-key: $MC_API_KEY" \
-d '{
"framework": "generic",
"action": "heartbeat",
"payload": { "agentId": "my-agent-01", "status": "online" }
}'Authentication
MC supports two auth methods:
| Method | Header | Use Case | |--------|--------|----------| | API Key | `x-api-key: <key>` or `Authorization: Bearer <key>` | Agents, scripts, CI/CD | | Session cookie | `Cookie: __Host-mc-session=<token>` (HTTPS) or `mc-session=<token>` (HTTP) | Browser UI |
**Roles (hierarchical):** `viewer` < `operator` < `admin`
- **viewer** — Read-only access (GET endpoints)
- **operator** — Create/update agents, tasks, skills, use adapters
- **admin** — Full access including user management
API key auth grants `admin` role by default. The key is set via `API_KEY` env var or the `security.api_key` DB setting.
Agents can identify themselves with the optional `X-Agent-Name` header for attribution in audit logs.
Agent Lifecycle
register → heartbeat (5m interval) → fetch assignments → report task status → disconnect
All lifecycle actions go through the adapter protocol (`POST /api/adapters`).
1. Register
{
"framework": "generic",
"action": "register",
"payload": {
"agentId": "my-agent-01",
"name": "My Agent",
"metadata": { "version": "1.0", "capabilities": ["code", "review"] }
}
}2. Heartbeat
Send every ~5 minutes to stay marked as online.
{
"framework": "generic",
"action": "heartbeat",
"payload": {
"agentId": "my-agent-01",
"status": "online",
"metrics": { "tasks_completed": 5, "uptime_seconds": 3600 }
}
}3. Fetch Assignments
Returns up to 5 pending tasks sorted by priority (critical → low), then due date.
{
"framework": "generic",
"action": "assignments",
"payload": { "agentId": "my-agent-01" }
}**Response:**
{
"assignments": [
{ "taskId": "42", "description": "Fix login bug\nUsers cannot log in with SSO", "priority": 1 }
],
"framework": "generic"
}4. Report Task Progress
{
"framework": "generic",
"action": "report",
"payload": {
"taskId": "42",
"agentId": "my-agent-01",
"progress": 75,
"status": "in_progress",
"output": "Fixed SSO handler, running tests..."
}
}`status` values: `in_progress`, `done`, `failed`, `blocked`
5. Disconnect
{
"framework": "generic",
"action": "disconnect",
"payload": { "agentId": "my-agent-01" }
}Core API Reference
Agents — `/api/agents`
| Method | Min Role | Description | |--------|----------|-------------| | GET | viewer | List agents. Query: `?status=online&role=dev&limit=50&offset=0` | | POST | operator | Create agent. Body: `{ name, role, status?, config?, template?, session_key?, soul_content? }` | | PUT | operator | Update agent. Body: `{ name, status?, role?, config?, session_key?, soul_content?, last_activity? }` |
**GET response shape:**
{
"agents": [{
"id": 1, "name": "scout", "role": "researcher", "status": "online",
"config": {}, "taskStats": { "total": 10, "assigned": 2, "in_progress": 1, "completed": 7 }
}],
"total": 1, "page": 1, "limit": 50
}Tasks — `/api/tasks`
| Method | Min Role | Description | |--------|----------|-------------| | GET | viewer | List tasks. Query: `?status=in_progress&assigned_to=scout&priority=high&project_id=1&limit=50&offset=0` | | POST | operator | Create task. Body: `{ title, description?, status?, priority?, assigned_to?, project_id?, tags?, metadata?, due_date?, estimated_hours? }` | | PUT | operator | Bulk status update. Body: `{ tasks: [{ id, status }] }` |
**Priority values:** `critical`, `high`, `medium`, `low`
**Status values:** `inbox`, `assigned`, `in_progress`, `review`, `done`, `failed`, `blocked`, `cancelled`
Note: Moving a task to `done` via PUT requires an Aegis quality review approval.
**POST response:**
{
"task": {
"id": 42, "title": "Fix login bug", "status": "assigned",
"priority": "high", "assigned_to": "scout", "ticket_ref": "GEN-001",
"tags": ["bug"], "metadata": {}
}
}Skills — `/api/skills`
| Method | Min Role | Description | |--------|----------|-------------| | GET | viewer | List all skills across roots | | GET `?mode=content&source=...&name=...` | viewer | Read a skill's SKILL.md content | | GET `?mode=check&source=...&name=...` | viewer | Run security check on a skill | | POST | operator | Create/upsert skill. Body: `{ source, name, content }` | | PUT | operator | Update skill content. Body: `{ source, name, content }` | | DELETE `?source=...&name=...` | operator | Delete a skill |
**Skill sources:** `user-agents`, `user-codex`, `project-agents`, `project-codex`, `openclaw`
Status — `/api/status`
| Action | Min Role | Description | |--------|----------|-------------| | GET `?action=overview` | viewer | System status (uptime, memory, disk, sessions) |
Self-hosted control plane for operating AI agents. Dispatch tasks, inspect runs, review failures, track spend, and coordinate agent runtimes from one local dashboard backed by SQLite. An open-source project by Builderz Labs, created and maintained by nyk.
Repo: builderz-labs/mission-control

