After talking about what ClawControlPanel does, I want to pull back the curtain on how it's actually built. This isn't just a Next.js app running on a server—it's a carefully orchestrated stack designed for isolation and reliability.
Building an AI agent platform comes with a unique challenge: How do you give an agent enough power to be useful (creating files, running scripts) without risking your host machine?
Here is how I’ve solved that for Mission Control.
The foundation of the entire system is Incus (the community-led successor to LXD). For every deployment, I am creating LXC containers.
Why containers instead of just a standard VM or a bare-metal process?
Inside each of these LXC containers, I run two core services side-by-side:
By running them together in the same container, the dashboard can talk to the gateway over a local WebSocket (ws://127.0.0.1:18789) with zero latency and high security. The container only exposes the dashboard's port to the outside world.
The project itself is split into several logical layers that keep the "Planning → Execution" flow smooth:
Built with Next.js 15 (App Router) and Tailwind CSS, the UI is designed to be highly reactive. Instead of constant polling, we use Server-Sent Events (SSE). When an agent updates a task status or sends a message, it "pushes" to your screen instantly.
We use SQLite for the database. It’s light, fast, and lives inside the container. It tracks every task, every agent’s "SOUL.md" (personality), and the history of every mission.
This is where the magic happens. The backend features:
task-workflow.ts that ensures a task can't jump from "Planning" to "Done" without passing through the necessary gates.graph TD
subgraph "Host Machine (Ubuntu/Debian)"
subgraph "Incus / LXC Container"
CCP[ClawControlPanel - Next.js]
OCG[OpenClaw Gateway - Runtime]
DB[(SQLite DB)]
CCP <-->|WebSockets| OCG
CCP <-->|SQL| DB
end
end
User((User)) -->|HTTPS| CCP
OCG -->|API| LLM[AI Providers]
This stack gives me the perfect balance: the ease of development of a modern web app with the industrial-grade isolation of Linux containers.
Stay tuned as I keep refining the orchestration layer! 🚀🏗️