Files
openclaw-mission-control/README.md
2026-02-07 15:54:42 +00:00

4.1 KiB
Raw Blame History

OpenClaw Mission Control

Web UI + API for operating OpenClaw: managing boards, tasks, agents, approvals, and gateway connections.

Note on auth (Clerk)

Clerk is optional for local/self-host. The frontend enables Clerk only when NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is set. If you dont want to configure Clerk, make sure that variable is unset/blank.

Quick start (self-host with Docker Compose)

Prerequisites

  • Docker + Docker Compose v2 (docker compose)

Run

cp .env.example .env

# IMPORTANT: if you are not configuring Clerk, disable it by ensuring
# NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is NOT set.
# (The default `frontend/.env.example` contains placeholders that you should delete/blank.)

docker compose -f compose.yml --env-file .env up -d --build

Open:

Stop

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

Common Compose commands

# Tail logs
docker compose -f compose.yml --env-file .env logs -f --tail=200

# Rebuild a single service
docker compose -f compose.yml --env-file .env up -d --build backend

# Reset data (DESTRUCTIVE: deletes Postgres/Redis volumes)
docker compose -f compose.yml --env-file .env down -v

Quick start (local development)

This is the fastest workflow for contributors: run Postgres/Redis via Docker, and run the backend + frontend in dev mode.

Prerequisites

  • Docker + Docker Compose v2
  • Python 3.12+ + uv
  • Node.js (recommend 18+) + npm

1) Start Postgres + Redis

cp .env.example .env

docker compose -f compose.yml --env-file .env up -d db redis

2) Backend (FastAPI)

cd backend

cp .env.example .env

# deps
uv sync --extra dev

# run API on :8000
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Notes:

  • If you run the DB/Redis containers, the backend should use the defaults in backend/.env (localhost:5432 and localhost:6379).

  • Database migrations:

    cd backend
    uv run alembic upgrade head
    

3) Frontend (Next.js)

cd frontend

# Configure API URL (and optionally disable Clerk for local dev by removing/blanking Clerk env vars)
cp .env.example .env.local

npm install
npm run dev

Open http://localhost:3000.

Key concepts / high-level architecture

  • Mission Control backend exposes a REST API at /api/v1/* and also hosts health endpoints (/healthz, /readyz).
  • Mission Control frontend calls the backend via NEXT_PUBLIC_API_URL.
  • Postgres stores boards/tasks/agents/etc.
  • Redis is used for background work (RQ).
  • OpenClaw Gateway connectivity is over WebSockets; protocol details live in docs/openclaw_gateway_ws.md.

Common commands

Coverage policy

CI enforces a scoped 100% coverage gate (statements + branches) for a small set of unit-testable modules. See docs/coverage-policy.md.

From repo root:

make help
make setup
make lint
make typecheck
make test
make check

Troubleshooting

Frontend keeps redirecting / Clerk errors

You likely have NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY set (even to a placeholder). To run without Clerk:

  • Remove the NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY line from frontend/.env.local, or set it to an empty value.

Backend cant connect to Postgres/Redis

  • Confirm containers are up:

    docker compose -f compose.yml --env-file .env ps
    
  • If youre running backend locally (not in compose), make sure backend/.env points to localhost:

    • DATABASE_URL=postgresql+psycopg://postgres:postgres@localhost:5432/mission_control
    • REDIS_URL=redis://localhost:6379/0

Port already in use

Adjust ports in .env (copied from .env.example):

  • FRONTEND_PORT
  • BACKEND_PORT
  • POSTGRES_PORT
  • REDIS_PORT