Skip to main content

Prerequisites

Mission Control requires Node.js 20+ (LTS recommended) and pnpm for dependency management.

Node.js

Install Node.js 20 or later from nodejs.org or use a version manager:
Verify installation:

pnpm

Mission Control uses pnpm for fast, efficient dependency management. Install pnpm using one of these methods:
Verify installation:

Native Build Tools

Mission Control uses better-sqlite3 which requires native compilation. Install build tools for your platform:

Development Setup

1

Clone Repository

2

Install Dependencies

This installs all dependencies and compiles native modules. The process takes 1-2 minutes on first run.
The better-sqlite3 module is compiled during installation. If compilation fails, ensure you have the required build tools installed.
3

Configure Environment

Copy the example environment file:
Edit .env with your configuration. See Environment Variables for details.
4

Start Development Server

The server starts at http://localhost:3000. Changes to source files trigger automatic recompilation.

Production Deployment

Direct Deployment

Build and run Mission Control directly on your server:
1

Install Dependencies

The --frozen-lockfile flag ensures reproducible builds by using the exact versions in pnpm-lock.yaml.
2

Build Application

Creates an optimized production build in .next/. Build time is typically 2-3 minutes.
The production build bundles platform-specific native binaries. Build on the same OS and architecture as your target server. A build created on macOS will not work on Linux.
3

Start Production Server

The server binds to 0.0.0.0:3005 by default. Override with environment variables:

Docker Deployment

Deploy Mission Control using Docker for isolation and portability:
The Docker image uses a multi-stage build with node:20-slim, compiles native modules inside the container, and runs as non-root user nextjs.

Persistent Data

Mount a volume to persist the SQLite database across container restarts:

docker-compose

Create docker-compose.yml:
docker-compose.yml
Start with:

Environment Variables

Configure Mission Control via environment variables in .env:

Authentication

Change AUTH_PASS and API_KEY from defaults before production deployment. These credentials provide full administrative access.
Password with special characters: If your password contains #, quote it or use base64 encoding:

Network Access

In production mode, Mission Control blocks requests unless the Host header matches MC_ALLOWED_HOSTS. Use wildcards like *.example.com or 100.* for Tailscale IPs.

OpenClaw Integration

OPENCLAW_HOME is required for memory browser, log viewer, and gateway config features. Point to your OpenClaw installation directory.
Memory Browser Configuration: OpenClaw stores agent memory in workspace directories, not $OPENCLAW_HOME/memory/. Set OPENCLAW_MEMORY_DIR to your agents root:
This makes the Memory Browser show daily logs, MEMORY.md, and other markdown files from all agent workspaces.

Data Paths

Google OAuth (Optional)

Create OAuth credentials in Google Cloud Console. Set authorized origins to your Mission Control URL and redirect URI to https://yourdomain.com/api/auth/google.

Claude Code Integration (Optional)

Mission Control automatically discovers Claude Code sessions from ~/.claude/projects/ and extracts token usage from JSONL transcripts.

Data Retention (Optional)

Control how long Mission Control retains historical data (in days, 0 = keep forever):

Reverse Proxy Setup

Deploy Mission Control behind a reverse proxy with TLS for any network-accessible deployment. Never expose the application directly to the internet.
Caddy automatically provisions TLS certificates via Let’s Encrypt:
Caddyfile
Start Caddy:

nginx

Configure nginx with manual certificate management:
nginx.conf
If using nginx as a reverse proxy, configure trusted proxies:
.env

Troubleshooting

”Module not found: better-sqlite3”

Native compilation failed. Install build tools:

“Invalid ELF header” or “Mach-O” errors

The native binary was compiled on a different platform. Rebuild on the target OS:

Database locked errors

Only one Mission Control instance can access the SQLite database at a time. Ensure no other processes are using .data/mission-control.db.

”Gateway error: origin not allowed”

The gateway is rejecting connections from Mission Control. Add your dashboard URL to the gateway’s allowed origins in openclaw.json:
openclaw.json
Restart the gateway after making changes.

”Gateway error: device identity required”

Device identity signing requires a secure browser context (HTTPS or localhost). Access Mission Control over HTTPS or use localhost instead of 127.0.0.1.

Development Commands

Mission Control includes several development commands:
Run pnpm quality:gate before submitting pull requests to ensure all checks pass.

Next Steps

Quickstart

Register your first agent and explore the dashboard

API Reference

Complete documentation for all 66 REST endpoints

Security Guide

Security best practices and hardening

Integrations

Connect OpenClaw, Claude Code, and custom agents