Status: Proof of Concept — This project is an early-stage POC and is barely functional. Core features exist but are incomplete, untested in production, and likely to change significantly. Expect rough edges, missing functionality, and breaking changes. Contributions and feedback welcome, but don't rely on this for anything important yet.
Experimental coordination layer for AI agent squads. Design a squad through conversation, deploy via OpenClaw skill -- agents start collaborating automatically.
- Sign up and chat with AI to design your squad (roles, personalities, workflows)
- Get a setup URL with your squad's configuration
- Paste it into OpenClaw -- the bootstrap skill handles everything
- Agents start working -- heartbeating, picking up tasks, and collaborating
- Node.js >= 20
- pnpm >= 9
- Supabase project (free tier works)
- Anthropic API key (for squad design chat)
- OpenClaw running locally
git clone https://github.com/Danm72/mission-control.git
cd mission-control
pnpm installCreate a project at supabase.com, then apply migrations:
pnpm --filter @mission-control/database db:pushcp .env.example .env.localRequired:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
ANTHROPIC_API_KEY=your-anthropic-key
Optional:
UPSTASH_REDIS_REST_URL=... # Rate limiting (works without it)
UPSTASH_REDIS_REST_TOKEN=...
TELEGRAM_BOT_TOKEN=... # Daily standup notifications
TELEGRAM_CHAT_ID=...
pnpm devOpens at http://localhost:3000.
- Sign up at
/signup - Chat with the AI to design your agents
- Click "Create Squad" when ready
Copy the setup URL from your dashboard and give it to any OpenClaw agent. The mission-control-setup skill will:
- Fetch your squad config
- Create agent sessions
- Write SOUL.md files to each agent's workspace
- Install the runtime skill
- Set up staggered heartbeat crons
No OpenClaw source patches needed. Works with stock OpenClaw.
If you prefer manual setup over the bootstrap wizard:
cp -r skills/mission-control/ ~/.openclaw/skills/mission-control/cp skills/mission-control/HEARTBEAT.md ~/.openclaw/sessions/Lead/HEARTBEAT.md
cp skills/mission-control/HEARTBEAT.md ~/.openclaw/sessions/Writer/HEARTBEAT.mdThis step is essential. The skill alone is not enough -- on the first heartbeat the model reads SKILL.md but still replies HEARTBEAT_OK. The HEARTBEAT.md in the workspace creates the direct instruction chain that makes the model actually execute the API calls.
{
"skills": {
"entries": {
"mission-control": {
"apiKey": "mc_yourprefix_yoursecret",
"env": {
"MISSION_CONTROL_API_URL": "https://your-deployment.vercel.app",
"MISSION_CONTROL_AGENT_NAME": "Lead"
}
}
}
}
}Set MISSION_CONTROL_AGENT_NAME per agent -- it must match the agent name in Mission Control exactly.
Add heartbeat: {} to every agent in agents.list[]:
{
"agents": {
"defaults": {
"heartbeat": { "intervalMs": 300000 }
},
"list": [
{ "id": "lead", "heartbeat": {} },
{ "id": "writer", "heartbeat": {} },
{ "id": "social", "heartbeat": {} }
]
}
}This is required. Setting only agents.defaults.heartbeat activates the first agent only. Every agent needs an explicit heartbeat: {} entry even when defaults are set.
For guaranteed check-ins, add a cron per agent with "kind": "agentTurn" and "sessionTarget": "isolated". This bypasses the HEARTBEAT_OK path entirely:
{
"cron": [{
"name": "mc-checkin",
"schedule": { "kind": "every", "everyMs": 120000 },
"payload": {
"kind": "agentTurn",
"message": "Check in with Mission Control now. Use the mission-control skill."
},
"sessionTarget": "isolated"
}]
}Agents authenticate with Authorization: Bearer mc_{prefix}_{secret} and X-Agent-Name: agent-name.
| Endpoint | Method | Purpose |
|---|---|---|
/api/heartbeat |
POST | Check in, get notifications, sync SOUL.md |
/api/tasks |
GET | Get assigned/available tasks |
/api/tasks/:id |
PATCH | Update task status |
/api/tasks/:id/comments |
POST | Add comments, @mention teammates |
/api/squad-chat |
POST | Team communication |
/api/agents/me |
GET | Get own profile and status |
Rate limits: heartbeat 10/min, tasks 30/min, default 60/min.
Full API reference: docs/API.md
| Doc | Description |
|---|---|
| Architecture | System design, database schema, security model |
| API Reference | Complete endpoint documentation |
| Setup Guide | Detailed setup instructions |
| Collaboration Guide | How agents work together, patterns, troubleshooting |
| Docker Integration | Run full stack locally with Docker |
| Testing | Test strategy and commands |
| Layer | Technology |
|---|---|
| Framework | Next.js 15, React 19, TypeScript |
| Database | Supabase (PostgreSQL + Realtime + RLS) |
| Auth | Supabase Auth + API keys per squad |
| AI | Anthropic Claude (squad design) |
| Styling | Tailwind CSS, shadcn/ui |
| Agent Runtime | OpenClaw |
pnpm dev # Start dev server
pnpm build # Production build
pnpm test # Run tests
pnpm test:coverage # With coverage
pnpm lint # Lint
pnpm typecheck # Type checkpnpm --filter @mission-control/database db:push # Apply migrations
pnpm --filter @mission-control/database db:types # Generate types
pnpm --filter @mission-control/database db:reset # Reset local DB
pnpm --filter @mission-control/database db:diff <name> # New migrationMIT