Skip to main content
This guide will get you up and running with Mission Control in under 5 minutes using Docker Compose.

Prerequisites

Before you begin, ensure you have:
  • Docker Engine installed
  • Docker Compose v2 (docker compose command)
  • Basic familiarity with terminal/command line

Quick Start with Docker Compose

1

Clone the repository

git clone https://github.com/abhi1693/openclaw-mission-control.git
cd openclaw-mission-control
2

Configure environment

Copy the example environment file:
cp .env.example .env
Open .env and set your authentication token. This is required for security:
# Generate a secure token (minimum 50 characters)
openssl rand -hex 32
Update your .env file:
.env
# --- app ports (host) ---
FRONTEND_PORT=3000
BACKEND_PORT=8000

# --- database ---
POSTGRES_DB=mission_control
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_PORT=5432

# --- backend settings ---
CORS_ORIGINS=http://localhost:3000
DB_AUTO_MIGRATE=true
LOG_LEVEL=INFO
AUTH_MODE=local

# REQUIRED: Set this to your generated token (min 50 chars)
LOCAL_AUTH_TOKEN=your-generated-token-here

# --- frontend settings ---
# REQUIRED: Public URL used by the browser to reach the API
NEXT_PUBLIC_API_URL=http://localhost:8000
The LOCAL_AUTH_TOKEN must be at least 50 characters long when AUTH_MODE=local. Generate a strong token using openssl rand -hex 32 or a password manager.
3

Start Mission Control

Launch the full stack with a single command:
docker compose -f compose.yml --env-file .env up -d --build
This will start:
  • PostgreSQL 16 database
  • Redis for background jobs
  • Backend API (FastAPI)
  • Frontend UI (Next.js)
  • Webhook worker for async tasks
The first build may take a few minutes. Subsequent starts will be much faster.
4

Access Mission Control

Once the containers are running, open your browser:When prompted for authentication, enter the LOCAL_AUTH_TOKEN you configured in step 2.

Verify Installation

Check that all services are healthy:
# View running containers
docker compose ps

# Check backend health
curl http://localhost:8000/healthz

# View logs
docker compose logs -f backend
docker compose logs -f frontend

What’s Running

The Docker Compose stack includes:

PostgreSQL

Port: 5432 (mapped to host)Database: mission_control

Redis

Port: 6379 (mapped to host)Used for background job queue

Backend API

Port: 8000 (mapped to host)FastAPI with auto-migrations

Frontend UI

Port: 3000 (mapped to host)Next.js dashboard

Managing the Stack

docker compose -f compose.yml --env-file .env down

Next Steps

Installation Guide

Learn about other installation methods including systemd and manual setup

Environment Variables

Configure authentication, gateways, and advanced settings

API Reference

Explore the REST API for automation and integrations

Docker Deployment

Deploy Mission Control to production with Docker

Troubleshooting

Port Already in Use

If you see an error like “address already in use”, change the ports in your .env file:
.env
FRONTEND_PORT=3001
BACKEND_PORT=8001
Then update NEXT_PUBLIC_API_URL to match:
.env
NEXT_PUBLIC_API_URL=http://localhost:8001

Database Connection Issues

Ensure the database is healthy:
docker compose ps db
If the database isn’t healthy, check its logs:
docker compose logs db

Frontend Can’t Reach Backend

Verify NEXT_PUBLIC_API_URL in your .env is accessible from your browser:
curl http://localhost:8000/healthz
If you’re running on a remote server, replace localhost with your server’s IP or domain.

Build docs developers (and LLMs) love