Visual Mission Control dashboard for OpenClaw — Slack setup wizard, live agent feed, and human-in-the-loop approval rail.
- Live Feed — streams all agent messages and tool calls in real time via CopilotKit +
clawg-ui - Approval Rail — intercepts risky tool calls (bash, file writes, email, etc.) and pauses execution until you approve or block them from the UI
- Approval Context for Agent — the chat agent can see pending approvals and discuss them with you, offering risk assessments and recommendations before you approve or block
- Slack Setup Wizard — 4-step guided flow to connect OpenClaw to a Slack workspace, no config file editing required
- Slack Settings — toggle respond-to-all vs. mention-only mode, disconnect
SOUL.md is an OpenClaw "soul" file for an Auditor agent. When loaded as a soul, it instructs the agent to proactively surface pending approvals, provide risk assessments, and recommend approve/block decisions — all using the approval context that this plugin shares with the chat agent. Pair it with the Approval Context for Agent feature for a fully contextual security review workflow.
React UI (this plugin)
├── CopilotKit hooks → clawg-ui (AG-UI) → OpenClaw agent
└── REST polling → clawg-mission-control plugin API
└── approval queue, Slack config
Two plugins run side by side on the OpenClaw gateway:
@contextableai/clawg-ui— provides the AG-UI endpoint the React UI connects to for agent event streamingclawg-mission-control(this) — HTTP routes, approval queue, Slack config writer, serves the React UI
- OpenClaw gateway installed and running
- Node.js 20+
Install the clawg-ui plugin first:
openclaw plugins install @contextableai/clawg-ui
openclaw gateway restart# 1. Clone this repo
git clone <repo-url> clawg-mission-control
cd clawg-mission-control
# 2. Pair a device token for clawg-ui (one time)
curl -X POST http://localhost:18789/v1/clawg-ui \
-H "Content-Type: application/json" -d '{}'
# Copy "token" from response, share "pairingCode" with the gateway owner, then run:
openclaw pairing approve clawg-ui <pairingCode>
# 3. Configure environment
cp .env.example .env
# Edit .env and paste your device token into VITE_CLAWG_AI_DEVICE_TOKEN
# 4. Install dependencies and build the UI
npm install
cd ui && npm install && npm run build && cd ..
# 5. Install and start
openclaw plugins install -l .
openclaw gateway restart
# 6. Open
open http://localhost:18789/mission-control# Terminal 1 — gateway
openclaw gateway run
# Terminal 2 — UI dev server with proxy
cd ui && npm run dev
# → http://localhost:5173/mission-controlThe Vite dev server proxies /mission-control/api, /mission-control/events, and /v1/clawg-ui to localhost:18789.
clawg-mission-control/
├── index.ts ← plugin entry point: hooks + route registration
├── openclaw.plugin.json ← plugin manifest
├── src/
│ ├── event-bus.ts ← in-memory pub/sub for approval events
│ ├── approval-queue.ts ← pauses risky tool calls pending UI approval
│ ├── slack-config.ts ← reads/writes Slack config via OpenClaw API
│ └── server.ts ← HTTP routes served on the gateway
└── ui/
└── src/
├── App.tsx
├── config.ts
├── lib/api.ts
├── hooks/useApprovals.ts
├── hooks/useApprovalContext.ts
├── components/
│ ├── ApprovalCard.tsx
│ ├── ActionCard.tsx
│ └── WizardStep.tsx
└── screens/
├── LiveFeed.tsx
├── SetupWizard.tsx
└── SlackSettings.tsx
bash, exec, shell, write, write_file, edit, delete, rm, browser, fetch, email, send_email
See OPENISSUES.md.
MIT