Real-time Activity Dashboard for OpenClaw AI Agents
A beautiful, modern dashboard that monitors your OpenClaw agent's activity, token usage, costs, and scheduled tasks - all in real-time.
- π Token Usage Tracking - Real data from OpenClaw session files
- π° Cost Monitoring - Daily and weekly cost breakdowns by provider/model
- π¬ Message Counter - Track actual Telegram messages (filters out system events)
- β° Cron Job Status - Live view of scheduled jobs from OpenClaw cron
- π Historical Charts - 7-day token usage visualization with Chart.js
- π Session Analytics - Per-session usage statistics
- π Dark Mode - Beautiful dark theme
- π Kanban Board - Drag & drop task management (To Do β In Progress β Done β Archived)
- π Notes for Agent - Leave instructions for your agent to check during heartbeats
- π€ Live Agent Status - Real-time online/offline indicator (polls every 10s)
- π Action Log - Activity history with timestamps (last 100 entries)
- π Quick Deliverables - Fast access to important folders
- Python 3.10+
- OpenClaw running with session logging enabled
# Clone the repository
git clone https://github.com/littlesteve01/mission-control-dashboard.git
cd mission-control-dashboard
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Create data directory
mkdir -p data# Start the server
source .venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 8087
# Or use the run script
./run.shVisit: http://localhost:8087
The dashboard reads real data directly from OpenClaw:
| Source | Path | Description |
|---|---|---|
| Sessions | ~/.openclaw/agents/main/sessions/*.jsonl |
Token usage, costs, messages |
| Cron Jobs | ~/.openclaw/cron/jobs.json |
Scheduled tasks |
No manual logging required - everything is automatically extracted from your OpenClaw session history.
| Endpoint | Description |
|---|---|
GET /api/stats |
Today's summary (tokens, costs, messages) |
GET /api/dashboard |
Complete dashboard data in one call |
GET /api/health |
Health check with uptime |
| Endpoint | Description |
|---|---|
GET /api/tokens/summary?days=7 |
Daily token/cost breakdown |
GET /api/tokens/today |
Today's detailed usage |
GET /api/tokens/total |
All-time totals |
GET /api/calls/by-provider?days=7 |
Usage by provider/model |
GET /api/sessions?days=7&limit=20 |
Per-session statistics |
| Endpoint | Description |
|---|---|
GET /api/cron |
All enabled cron jobs |
GET /api/cron/summary |
Summary with next runs |
GET /api/cron/next?count=5 |
Next scheduled jobs |
GET /api/cron/recent?count=10 |
Recent job runs |
| Endpoint | Description |
|---|---|
GET /api/kanban |
Get all tasks grouped by column |
POST /api/kanban |
Create new task |
PATCH /api/kanban/{id} |
Update task |
DELETE /api/kanban/{id} |
Delete task |
POST /api/kanban/{id}/move |
Move task to different column |
| Endpoint | Description |
|---|---|
GET /api/notes |
Get all notes |
POST /api/notes |
Create note |
PATCH /api/notes/{id}/read |
Mark as read |
DELETE /api/notes/{id} |
Delete note |
| Endpoint | Description |
|---|---|
GET /api/agent/status |
Get real-time agent status |
| Endpoint | Description |
|---|---|
GET /api/logs |
Get action log entries |
DELETE /api/logs/clear |
Clear old logs |
| Endpoint | Description |
|---|---|
GET /api/deliverables |
Get quick access items |
POST /api/deliverables |
Add deliverable |
| Endpoint | Description |
|---|---|
POST /api/cache/clear |
Force re-read of session files |
mission-control/
βββ app/
β βββ main.py # FastAPI application
β βββ database.py # SQLite connection
β βββ models.py # SQLAlchemy models
β βββ schemas.py # Pydantic schemas
β βββ services/
β βββ session_parser.py # JSONL session file parser
β βββ aggregator.py # Stats aggregation
β βββ cron_reader.py # Cron job reader
βββ templates/
β βββ index.html # Dashboard UI
βββ static/
β βββ style.css # Styles
βββ data/ # SQLite database (gitignored)
βββ screenshots/ # Documentation images
βββ requirements.txt
βββ run.sh
βββ README.md
-
Session Parser parses OpenClaw's JSONL session files
- Extracts
usageobjects (tokens, costs) from messages - Filters system messages vs real user messages
- Caches results (re-parses only on file change)
- Extracts
-
Aggregator computes statistics
- Daily aggregations with history
- Provider/model breakdowns
- 30-second result caching
-
Cron Reader reads OpenClaw's cron configuration
- Job schedules (cron expressions, intervals)
- Last/next run times and status
- File Caching: Session files cached, only re-parsed when modified
- Result Caching: Stats cached for 30 seconds
- Lazy Loading: Services initialized on first request
- Incremental: Only reads files from requested time range
- FastAPI - Modern Python web framework
- SQLAlchemy - ORM for local task tracking
- SQLite - Lightweight local database
- Jinja2 - HTML templates
- Chart.js - Beautiful charts
- Vanilla JS - No frontend framework needed
Edit app/services/session_parser.py:
class SessionParser:
SESSIONS_DIR = os.path.expanduser("~/.openclaw/agents/main/sessions")- Add extraction logic in
session_parser.py - Add aggregation in
aggregator.py - Add endpoint in
main.py - Update the dashboard template
MIT License - feel free to use this for your own OpenClaw setup!
Contributions welcome! Please feel free to submit a Pull Request.
Made with πΎ for the OpenClaw community


