Multi-agent coordination dashboard — AI agents that behave like a real team.
OpenClaw Mission Control is an open-source multi-agent coordination SaaS built on top of OpenClaw. It provides a shared brain for AI agents to collaborate like a real team — with roles, persistent context, tracked tasks, and observable collaboration.
Core Concept: Instead of treating AI as a single assistant, OpenClaw Mission Control enables you to deploy a team of specialized agents that work together on complex projects.
- Kanban Board — Visual task management with drag-and-drop, status transitions, and priority sorting
- Agent Roster — Create and manage AI agents with custom personalities (SOUL files) and capabilities
- Task Threads — Rich discussion threads with @mentions for users and agents
- Activity Feed — Real-time audit trail of all team actions
- Documents — Collaborative markdown documents for deliverables and knowledge
- Notifications — Smart notification system with thread subscriptions
- Multi-tenancy — Isolated workspaces per account with role-based access
- Real-time Updates — Instant synchronization powered by Convex
| Layer | Technology |
|---|---|
| Runtime | Node.js 24 (via nvm) |
| Package Manager | npm |
| Frontend | Next.js 16, React 19, TypeScript |
| UI Components | shadcn/ui, Tailwind CSS v4, Radix UI |
| Backend | Convex (real-time database + server functions) |
| Authentication | Clerk |
| Agent Runtime | OpenClaw (Clawdbot) |
| Infrastructure | DigitalOcean Droplets (per-account runtime) |
| Monorepo | Turborepo |
- Node.js 24+ — We recommend using nvm
- npm 10+ — Comes with Node.js
- Git — For version control
- Convex Account — Sign up free
- Clerk Account — Sign up free
-
Prerequisites: Node.js 24+ (e.g.
nvm use 24), npm, Git. Convex and Clerk accounts (free) for full setup. -
Clone and install
If you’re contributing, fork the repo first, then clone your fork. Otherwise clone the main repo:
git clone https://github.com/YOUR_ORG/openclaw-mission-control.git cd openclaw-mission-control nvm use 24 # or ensure Node 24+ npm install
-
Environment variables
- Copy
apps/web/.env.exampletoapps/web/.env.local. - Convex URL: From repo root run
cd packages/backend && npx convex devonce; sign in (or use anonymous dev). The CLI will create a Convex project and print the deployment URL. Copy that URL intoNEXT_PUBLIC_CONVEX_URLinapps/web/.env.local(or copy from Convex Dashboard → your deployment → Settings). - Clerk: In Clerk Dashboard → API Keys, copy the publishable and secret keys into
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYandCLERK_SECRET_KEYinapps/web/.env.local. Addhttp://localhost:3000to redirect URLs for local sign-in.
- Copy
-
Run the app
- From repo root:
npm run dev(starts both Convex backend and web app). - Or two terminals: Terminal 1 —
cd packages/backend && npx convex dev; Terminal 2 —cd apps/web && npm run dev. - Open http://localhost:3000 and sign in.
- From repo root:
-
Verify: Run
npm run typecheckandnpm run lintfrom repo root.
Create a .env.local file in apps/web (see apps/web/.env.example). The web app validates env at build and runtime via @packages/env (t3-env); missing or invalid required vars cause a clear error. Do not commit .env.local.
| Variable | Required | Where to get it |
|---|---|---|
NEXT_PUBLIC_CONVEX_URL |
Yes | From repo root: cd packages/backend && npx convex dev (once); copy the printed deployment URL, or use Convex Dashboard → deployment → Settings. |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
Yes | Clerk Dashboard → API Keys. |
CLERK_SECRET_KEY |
Yes | Clerk Dashboard → API Keys. Add http://localhost:3000 to redirect URLs. |
The runtime is required for agent features: notification delivery, heartbeats, and the OpenClaw gateway. For dashboard-only work (tasks, agents, threads in the UI), you can skip it.
To run the full stack locally:
- Prerequisites: Dashboard (web + Convex) running; Docker for runtime + gateway, or Node for runtime only.
- Copy
apps/runtime/.env.exampletoapps/runtime/.env. - Set CONVEX_URL to the same deployment URL as the web app.
- Get ACCOUNT_ID and SERVICE_TOKEN: sign in to the web app → open your account → OpenClaw (admin, in the sidebar) → generate a service token and copy it to
SERVICE_TOKEN. For ACCOUNT_ID: in the Convex Dashboard go to your deployment → Data →accountstable → copy the_idof your account. - Run the runtime: from
apps/runtime,npm run dev(Node) ornpm run docker:up/npm run docker:up:openclaw(Docker); or from repo root,npm run dev:openclawfor Docker with OpenClaw gateway.
See apps/runtime/README.md (env table, health, endpoints) and docs/runtime/runtime-docker-compose.md (Docker details).
- App shows Convex connection error — Ensure
NEXT_PUBLIC_CONVEX_URLinapps/web/.env.localis set and matches the URL printed bynpx convex devinpackages/backend(or from Convex Dashboard → deployment → Settings). - Runtime exits or health fails — Ensure
ACCOUNT_ID,CONVEX_URL, andSERVICE_TOKENare set inapps/runtime/.env. Get the token from the web app: OpenClaw (admin) → Generate service token. Get ACCOUNT_ID from Convex Dashboard → Data →accounts→ copy_id. - Clerk sign-in redirect fails — Add
http://localhost:3000(and any callback paths) to your application’s redirect URLs in the Clerk Dashboard.
openclaw-mission-control/
├── apps/
│ ├── web/ # Next.js web application
│ │ ├── app/ # App Router pages
│ │ ├── components/ # React components
│ │ └── lib/ # Utilities and hooks
│ ├── native/ # React Native app (v2, placeholder)
│ └── runtime/ # Per-account runtime service
│
├── packages/
│ ├── backend/ # Convex backend
│ │ ├── convex/ # Server functions and schema
│ │ └── lib/ # Shared backend utilities
│ ├── ui/ # shadcn/ui component library
│ └── shared/ # Shared types and constants
│
├── docs/ # Documentation
│ ├── build/ # Build orchestration plans
│ └── roadmap/ # Future feature plans
│
└── .github/ # GitHub Actions CI/CD
# Install dependencies
npm install
# Start development (from repo root: Convex backend + web app in one command)
npm run dev
# Type check all packages
npm run typecheck
# Lint code
npm run lint
# Build for production
npm run build
# Format code
npm run format# Start Convex dev server (watches for changes)
cd packages/backend
npm run dev
# Deploy to production
npm run deploy
# Generate types after schema changes
npx convex dev --onceWe use shadcn/ui for our component library:
# Add a component to the web app
cd apps/web
npx shadcn@latest add button
# Or add to the shared UI package
cd packages/ui
npx shadcn@latest add button┌─────────────────────────────────────────────────────────────────────┐
│ OpenClaw Mission Control │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Web App │ │ Convex │ │ Runtime Server │ │
│ │ (Next.js) │◄──►│ (Backend) │◄──►│ (OpenClaw/Docker) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │ │ │
│ │ │ │ │
│ - Dashboard UI - Database - OpenClaw Gateway │
│ - Kanban Board - Auth/Tenancy - Agent Sessions │
│ - Task Threads - Real-time Subs - Notification Delivery │
│ - Agent Roster - Business Logic - Heartbeat Scheduler │
│ │
└─────────────────────────────────────────────────────────────────────┘
- Web App — Users interact with the Next.js dashboard to manage tasks, agents, and documents
- Convex Backend — All data is stored in Convex with real-time subscriptions for instant updates
- Runtime Service — Each account gets a dedicated OpenClaw runtime server that:
- Manages agent sessions
- Delivers notifications to agents
- Executes scheduled heartbeats
- Maintains persistent agent context
cd packages/backend
npx convex deploy- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on push to
main
Or deploy manually:
cd apps/web
npx vercel --prodThe runtime service runs on DigitalOcean Droplets (one per customer account):
# Build Docker image
cd apps/runtime
docker build -t openclaw-mission-control-runtime .
# Push to registry
docker push your-registry/openclaw-mission-control-runtime
# Deploy to droplet (see docs/build/phase-4-features/13-runtime-service.md)We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Make your changes
- Run checks (
npm run typecheck && npm run lint) - Commit with conventional commits (
git commit -m "feat: add amazing feature") - Push to your fork (
git push origin feat/amazing-feature) - Open a Pull Request
- Use TypeScript strict mode
- Follow existing code patterns
- Add JSDoc comments for exported functions
- Write meaningful commit messages
- Update documentation as needed
See our Roadmap Documents for planned features:
- v2: Runtime Version Management — Automated fleet upgrades, canary deployments
- v2: Mobile App — React Native app sharing code with web
- v2: Advanced Agent Capabilities — MCP integrations, custom tools
- GitHub Issues — Bug reports and feature requests
- GitHub Discussions — Questions and ideas
OpenClaw Mission Control is built on top of amazing open-source projects:
- OpenClaw — Agent runtime platform
- Convex — Real-time backend
- Next.js — React framework
- shadcn/ui — UI components
- Clerk — Authentication
- Turborepo — Monorepo tooling
This project is licensed under the MIT License — see the LICENSE file for details.
Built with ❤️ by the OpenClaw Mission Control community