2026-02-07 13:41:05 +00:00
# OpenClaw Mission Control
2026-02-07 15:43:26 +00:00
[](https://github.com/abhi1693/openclaw-mission-control/actions/workflows/ci.yml)
2026-02-11 09:59:21 +00:00
Mission Control is the **web UI and HTTP API ** for operating OpenClaw. It’ s designed for teams that want a clear control plane for managing **boards ** , **tasks ** , **agents ** , **approvals ** , and (optionally) **gateway connections ** .
2026-02-07 13:41:05 +00:00
2026-02-12 00:47:07 +05:30
<img width="1878" height="870" alt="image" src="https://github.com/user-attachments/assets/b432d66f-8c9b-4c5e-b7e5-81c86a73aa7d" />
2026-02-11 23:46:11 +05:30
2026-02-07 15:42:09 +00:00
## Active development
OpenClaw Mission Control is under active development. Expect breaking changes and incomplete features as we iterate.
- Use at your own risk for production workloads.
- We welcome **bug reports ** , **feature requests ** , and **PRs ** — see GitHub Issues: https://github.com/abhi1693/openclaw-mission-control/issues
2026-02-11 09:59:21 +00:00
## Architecture (high level)
2026-02-07 13:41:05 +00:00
2026-02-11 09:59:21 +00:00
Mission Control is a small, service-oriented stack:
2026-02-07 13:41:05 +00:00
2026-02-11 09:59:21 +00:00
- **Frontend:** Next.js (default http://localhost:3000)
- **Backend:** FastAPI (default http://localhost:8000)
- **Database:** Postgres
2026-02-11 10:40:02 +00:00
- **Gateway integration (optional):** WebSocket protocol documented in [Gateway WebSocket protocol ](./docs/openclaw_gateway_ws.md )
2026-02-07 13:41:05 +00:00
2026-02-11 09:59:21 +00:00
## Documentation
2026-02-07 13:41:05 +00:00
2026-02-11 09:59:21 +00:00
Start with the docs landing page:
2026-02-11 10:40:02 +00:00
- [Docs landing ](./docs/README.md )
2026-02-07 13:41:05 +00:00
2026-02-11 09:59:21 +00:00
Operational deep dives:
2026-02-11 10:40:02 +00:00
- Deployment: [Deployment guide ](./docs/deployment/README.md )
- Production notes: [Production notes ](./docs/production/README.md )
- Troubleshooting: [Troubleshooting ](./docs/troubleshooting/README.md )
2026-02-11 09:59:21 +00:00
2026-02-11 19:10:23 +05:30
## Authentication
2026-02-11 09:59:21 +00:00
2026-02-11 19:10:23 +05:30
Mission Control supports two auth modes via `AUTH_MODE` :
2026-02-11 09:59:21 +00:00
2026-02-11 19:10:23 +05:30
- `local` : shared bearer token auth for self-hosted deployments
- `clerk` : Clerk JWT auth
2026-02-11 10:08:36 +00:00
2026-02-11 19:10:23 +05:30
`local` mode requires:
- backend: `AUTH_MODE=local` , `LOCAL_AUTH_TOKEN=<token>`
- frontend: `NEXT_PUBLIC_AUTH_MODE=local` , then enter the token in the login screen
`clerk` mode requires:
- backend: `AUTH_MODE=clerk` , `CLERK_SECRET_KEY=<secret>`
- frontend: `NEXT_PUBLIC_AUTH_MODE=clerk` , `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=<key>`
2026-02-11 09:59:21 +00:00
## Deployment modes
### 1) Self-host (Docker Compose)
**Prerequisites:** Docker + Docker Compose v2 (`docker compose` )
2026-02-07 13:41:05 +00:00
```bash
cp .env.example .env
2026-02-11 19:30:25 +05:30
# REQUIRED for local auth mode:
# set LOCAL_AUTH_TOKEN to a non-placeholder value with at least 50 characters.
2026-02-11 09:59:21 +00:00
# REQUIRED: the browser must be able to reach the backend.
2026-02-08 15:47:40 +00:00
# NEXT_PUBLIC_API_URL must be reachable from the *browser* (host), not an internal Docker network name.
2026-02-11 09:59:21 +00:00
# Missing/blank NEXT_PUBLIC_API_URL will break frontend API calls (e.g. Activity feed).
2026-02-07 13:41:05 +00:00
2026-02-11 19:10:23 +05:30
# Auth defaults in .env.example are local mode.
2026-02-11 19:30:25 +05:30
# For production, set LOCAL_AUTH_TOKEN to a random value with at least 50 characters.
2026-02-11 19:10:23 +05:30
# For Clerk mode, set AUTH_MODE=clerk and provide Clerk keys.
2026-02-11 10:08:36 +00:00
2026-02-07 13:41:05 +00:00
docker compose -f compose.yml --env-file .env up -d --build
```
Open:
- Frontend: http://localhost:3000
- Backend health: http://localhost:8000/healthz
2026-02-11 09:59:21 +00:00
Stop:
2026-02-07 13:41:05 +00:00
```bash
docker compose -f compose.yml --env-file .env down
```
2026-02-11 09:59:21 +00:00
Useful ops:
2026-02-07 13:41:05 +00:00
```bash
# 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
2026-02-10 16:05:49 +05:30
# Reset data (DESTRUCTIVE: deletes Postgres volume)
2026-02-07 13:41:05 +00:00
docker compose -f compose.yml --env-file .env down -v
```
2026-02-11 09:59:21 +00:00
### 2) Contributor local dev loop (DB in Docker, apps on host)
2026-02-07 13:41:05 +00:00
2026-02-10 16:05:49 +05:30
This is the fastest workflow for contributors: run Postgres via Docker, and run the backend + frontend in dev mode.
2026-02-07 13:41:05 +00:00
2026-02-11 10:40:02 +00:00
See: [Development workflow ](./docs/03-development.md )
2026-02-07 13:41:05 +00:00
2026-02-11 09:59:21 +00:00
## Testing and CI parity
2026-02-07 13:41:05 +00:00
2026-02-11 10:40:02 +00:00
- Testing guide: [Testing guide ](./docs/testing/README.md )
- Coverage policy: [Coverage policy ](./docs/coverage-policy.md )
2026-02-07 15:54:42 +00:00
2026-02-07 13:41:05 +00:00
From repo root:
```bash
make help
make setup
make check
```
2026-02-11 10:09:29 +00:00
## License
This project is licensed under the MIT License. See [`LICENSE` ](./LICENSE ).