Mission Control : un dashboard pour orchestrer ses agents IA
Comment déployer Mission Control sur OpenClaw en mode Docker isolé : architecture, device pairing, SSH tunnel. Tous les obstacles documentés.
Partie 5 de la série sur l’agent IA self-hosted
Jusqu’ici dans cette série, j’ai construit un agent IA local fonctionnel : OpenClaw avec Qwen3, SearXNG pour la recherche web, Telegram comme interface. L’agent tourne, répond, agit.
Mais il manque quelque chose : la visibilité. Comment savoir ce que l’agent fait vraiment ? Comment dispatcher des tâches de manière structurée ?
C’est ce que propose Mission Control — un dashboard d’orchestration open-source qui se connecte à l’OpenClaw Gateway et offre un Kanban board, un Live Feed temps réel et un système d’agents spécialisés.
Architecture du POC

[Browser Mac]
|
SSH Tunnel
|
v
localhost:4000 ──► mission-control (conteneur Docker isolé)
|
ws://openclaw-openclaw-gateway-1:18789
|
v
openclaw (gateway existante)
réseau openclaw_default
Principe clé : Mission Control rejoint le réseau Docker existant (openclaw_default) comme external network. Aucun nouveau réseau, aucune modification du setup OpenClaw.
Prérequis
- OpenClaw Gateway en cours d’exécution (réseau
openclaw_default) - Docker + Docker Compose sur la VM hôte
- Le token Gateway (
OPENCLAW_GATEWAY_TOKENdans votre config)
Déploiement
1 — Récupérer le nom exact du conteneur OpenClaw
C’est le point critique. Mission Control se connecte via le nom DNS Docker du conteneur.
docker network inspect openclaw_default \
--format '{{range .Containers}}{{.Name}} {{end}}'
# → openclaw-openclaw-gateway-1
2 — Cloner et configurer
mkdir ~/mission-control-poc && cd ~/mission-control-poc
git clone https://github.com/crshdn/mission-control.git app
Fichier .env :
OPENCLAW_GATEWAY_URL=ws://openclaw-openclaw-gateway-1:18789
OPENCLAW_GATEWAY_TOKEN=TON_TOKEN_ICI
DATABASE_PATH=/app/data/mission-control.db
WORKSPACE_BASE_PATH=/app/workspace
PORT=4000
3 — docker-compose.yml
services:
mission-control:
image: node:20-alpine
working_dir: /app
entrypoint: >
sh -c "npm install && npm run build && npx next start -p 4000"
ports:
- "127.0.0.1:4000:4000"
env_file:
- .env
volumes:
- ./app:/app
- mc-data:/app/data
- mc-workspace:/app/workspace
restart: unless-stopped
networks:
- openclaw_default
volumes:
mc-data:
mc-workspace:
networks:
openclaw_default:
external: true
docker compose up -d
docker compose logs -f mission-control
# Attendre : ✓ Ready in 577ms
Obstacle #1 : le nom du conteneur
Mission Control affichait OFFLINE. Les logs :
[OpenClaw] Connecting to: ws://openclaw:18789
[OpenClaw] Disconnected (code: 1006)
J’avais écrit openclaw comme hostname, mais le vrai nom DNS Docker est openclaw-openclaw-gateway-1. Fix :
# .env
OPENCLAW_GATEWAY_URL=ws://openclaw-openclaw-gateway-1:18789
docker compose down && docker compose up -d
Obstacle #2 : le device pairing
Après correction de l’URL :
[OpenClaw] Disconnected (code: 1008, reason: "pairing required")
OpenClaw exige l’approbation explicite de tout nouvel appareil — mesure de sécurité intentionnelle.

docker exec -it openclaw-openclaw-gateway-1 sh
openclaw devices list
# → Pending (2) — le premier est Mission Control
openclaw devices approve 0c561bf3-6b1d-4c78-ab23-a144a712cfbc
Accès depuis le Mac via SSH Tunnel
Le port est bindé sur 127.0.0.1 — pas accessible directement depuis le Mac.
# Terminal Mac
ssh -L 4000:127.0.0.1:4000 user@ai-server -N -f
# → http://localhost:4000
Résultat
Après approbation du device, Mission Control passe ONLINE — 4 agents bootstrappés automatiquement : Builder, Tester, Reviewer, Learner.
Premier test bout en bout
Tâche simple : “Dis bonjour et liste tes outils disponibles”, assignée au Builder Agent.
Le Live Feed retrace chaque étape en temps réel :
✓ New task: Test initial
✓ "Test initial" assigned to Builder Agent
✓ Task moved to assigned
✓ Task dispatched to Builder Agent
✓ Builder Agent session created
La boucle complète fonctionne.
Ce que ça apporte
Par rapport à l’interface Telegram seule :
| Avant (Telegram) | Après (Mission Control) |
|---|---|
| Conversation linéaire | Kanban board avec 7 colonnes |
| Pas de visibilité | Live Feed temps réel |
| Un seul contexte | Multi-agents spécialisés |
| Pas de traçabilité | Historique complet des events |
Commandes de maintenance
# Arrêter
docker compose down
# Logs
docker compose logs -f mission-control
# Mettre à jour
docker compose down && cd app && git pull && cd .. && docker compose up -d
Stack : Ubuntu VM · Docker Compose · OpenClaw 2026.3.3 · Mission Control v1.5.0
Suite de la série : OpenClaw en mode vocal →
Partager cet article