A zero-dependency local dashboard for OpenClaw AI agents, featuring cost tracking, session monitoring, cron management, and AI-powered natural language queries.
OpenClaw Dashboard is a local monitoring dashboard for the OpenClaw AI agent framework, built with a zero-dependency architecture (pure HTML/CSS/JS frontend ~1160 lines, Python stdlib backend ~400 lines).
Core Features#
11 Dashboard Panels:
- Header Bar: Bot name, online/offline status, auto-refresh countdown, theme selector
- Alerts Banner: Smart alerts (high cost, cron failures, high context usage, gateway offline)
- System Health: Gateway status, PID, uptime, memory, compression mode, active sessions
- Cost Cards: Today's cost, total cost, monthly estimate, cost distribution donut chart
- Token Usage & Cost: Token and cost breakdown by model (7d/30d/all-time tabs)
- Cron Jobs: Scheduled task status, schedule, last/next run time, model
- Active Sessions: Recent sessions (model, type tags, context %, tokens)
- Sub-Agent Activity: Sub-agent run records (cost, duration, status, token breakdown)
- Charts & Trends: Cost trend line charts, model cost bar charts (pure SVG)
- Bottom Row: Available models grid, skills list, Git log
- AI Chat: Natural language queries for dashboard data
Key Features:
- 6 built-in themes (3 dark + 3 light, 19 CSS variables for customization)
- Smart refresh: On-demand + configurable auto-refresh (default 30s debounce)
- 5-level model parsing chain for accurate model names
- Local-first, no cloud dependencies
Installation#
Requirements: Python 3.6+, OpenClaw installed at ~/.openclaw, modern browser, macOS 10.15+ / Linux (Ubuntu 18.04+, Debian 10+)
One-line Install:
curl -fsSL https://raw.githubusercontent.com/mudrii/openclaw-dashboard/main/install.sh | bash
Manual Install:
git clone https://github.com/mudrii/openclaw-dashboard.git ~/.openclaw/dashboard
cd ~/.openclaw/dashboard
cp examples/config.minimal.json config.json
python3 server.py &
Configuration#
Key config.json settings:
bot.name/bot.emoji: Bot display name and icontheme.preset: Theme preset (nord, etc.)refresh.intervalSeconds: Refresh intervalserver.port/server.host: Server port and bind addressai.enabled/ai.gatewayPort: AI Chat feature configalerts: Alert thresholds (daily cost, context usage, memory)
Config priority: CLI flags > Environment variables > config.json > Defaults
Architecture#
Data Pipeline: Browser → server.py → refresh.sh → data.json (atomic write)
API Endpoints:
GET /api/refresh: Refresh and return dashboard data JSONPOST /api/chat: AI natural language query
Data Sources: openclaw.json, agents//sessions/.jsonl, cron/jobs.json, process table
Security Notes#
- Default bind 127.0.0.1 (localhost only)
- LAN mode has no built-in authentication
- No HTTPS, requires reverse proxy for TLS
- data.json contains sensitive data