OpenClaw plugin that connects your AI agent to DashBot — giving it a real-time dashboard with chat, status monitoring, and agentic cards.
- Real-time: Two-way communication over Action Cable WebSockets — messages stream instantly.
- Zero config: Auto-detects memory backend (QMD or OpenClaw SQLite) and status sources.
- Lightweight: Single plugin, no external dependencies beyond OpenClaw and DashBot.
graph TD
Dashboard["🖥️ Dashboard"]
DashBot["⚡ DashBot"]
Plugin["🔌 This Plugin"]
Gateway["🤖 OpenClaw Gateway"]
Dashboard <--> DashBot
DashBot <-->|Action Cable| Plugin
Plugin <--> Gateway
The plugin runs inside your OpenClaw gateway and connects to DashBot's Action Cable server. When a user sends a message in the dashboard, it flows through the plugin to the agent and back. The plugin also streams agent status data (sessions, cron jobs, memory stats) for the status page.
git clone https://github.com/wembledev/dashbot-openclaw.git
cd dashbot-openclaw
npm install
openclaw plugins install -l /path/to/dashbot-openclawPoint the plugin at your DashBot instance. The token must match DASHBOT_API_TOKEN in DashBot's .env:
openclaw config set channels.dashbot.enabled true
openclaw config set channels.dashbot.url http://localhost:3000
openclaw config set channels.dashbot.token <your-token>
openclaw gateway restartopenclaw logsYou should see:
Subscribed to ChatChannel
Open the DashBot dashboard and send a message — it round-trips through the agent.
| Key | Description |
|---|---|
channels.dashbot.enabled |
Enable/disable the channel |
channels.dashbot.url |
Base URL of your DashBot instance |
channels.dashbot.token |
Shared API token (must match DashBot's DASHBOT_API_TOKEN) |
Generate a token:
ruby -e "require 'securerandom'; puts SecureRandom.hex(32)"Set it in both places — DashBot's .env and the plugin config.
The plugin automatically provides real-time agent status to DashBot's status page — no extra configuration needed.
| Data | Source |
|---|---|
| Sessions | OpenClaw session state |
| Cron jobs | OpenClaw cron state |
| Memory | QMD (auto-detected) or OpenClaw SQLite |
Override the memory backend with DASHBOT_MEMORY_BACKEND=qmd or DASHBOT_MEMORY_BACKEND=openclaw.
index.ts → Plugin entry point
src/channel.ts → OpenClaw ChannelPlugin (chat + status commands)
src/connection.ts → Action Cable WebSocket client (auto-reconnect)
src/outbound.ts → Sends responses over WebSocket (HTTP fallback)
src/status-reporter.ts → Reads OpenClaw state, streams to dashboard
src/types.ts → TypeScript interfaces
npm install
npm run dev # tsc watch mode
npm test # vitest
npm run check # type-check
npm run lint # eslintAfter changes, restart the gateway to reload:
openclaw gateway restartnpm test # run all tests
npm run test:watch # watch modeThis project is licensed under the MIT License.