Skip to content

adridder/mission-control

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mission Control

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.

How It Works

  1. Sign up and chat with AI to design your squad (roles, personalities, workflows)
  2. Get a setup URL with your squad's configuration
  3. Paste it into OpenClaw -- the bootstrap skill handles everything
  4. Agents start working -- heartbeating, picking up tasks, and collaborating

Quick Start

Prerequisites

  • Node.js >= 20
  • pnpm >= 9
  • Supabase project (free tier works)
  • Anthropic API key (for squad design chat)
  • OpenClaw running locally

1. Clone and Install

git clone https://github.com/Danm72/mission-control.git
cd mission-control
pnpm install

2. Set Up Supabase

Create a project at supabase.com, then apply migrations:

pnpm --filter @mission-control/database db:push

3. Configure Environment

cp .env.example .env.local

Required:

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=...

4. Start Development

pnpm dev

Opens at http://localhost:3000.

5. Create Your Squad

  1. Sign up at /signup
  2. Chat with the AI to design your agents
  3. Click "Create Squad" when ready

6. Connect OpenClaw

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.

OpenClaw Skill Setup (Manual)

If you prefer manual setup over the bootstrap wizard:

1. Install the skill

cp -r skills/mission-control/ ~/.openclaw/skills/mission-control/

2. Copy HEARTBEAT.md to each agent's workspace

cp skills/mission-control/HEARTBEAT.md ~/.openclaw/sessions/Lead/HEARTBEAT.md
cp skills/mission-control/HEARTBEAT.md ~/.openclaw/sessions/Writer/HEARTBEAT.md

This 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.

3. Configure openclaw.json

{
  "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.

4. Add heartbeat to each agent

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.

5. (Optional) Add cron fallback

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"
  }]
}

Agent API

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

Documentation

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

Tech Stack

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

Development

pnpm dev              # Start dev server
pnpm build            # Production build
pnpm test             # Run tests
pnpm test:coverage    # With coverage
pnpm lint             # Lint
pnpm typecheck        # Type check

Database

pnpm --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 migration

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.3%
  • Shell 1.9%
  • PLpgSQL 1.6%
  • Other 0.2%