Status: ✅ Ready to Test
# Direct Redis population - bypasses all API layers
python scripts/populate_redis_direct.pyThis creates:
- 5 agent heartbeats
- 10 coordination signals
- 15 event stream entries
- 2 pending approval requests
- 333 quality feedback samples
Total: 364 Redis keys
Option A: Simple script
./scripts/start_dashboard.shOption B: Direct Python
python -c "from src.empathy_os.dashboard import run_simple_dashboard; run_simple_dashboard()"Option C: From examples (includes test data generation)
python examples/dashboard_demo.pyNavigate to: http://localhost:8000
The dashboard will show:
- ✅ System health status
- ✅ 5 active agents with heartbeats
- ✅ 10 coordination signals
- ✅ 15 stream events
- ✅ 2 pending approval requests
- ✅ Quality metrics for all workflows
- Refreshes every 5 seconds automatically
- Manual refresh anytime with browser refresh (F5)
-
System Stats (top bar)
- Active agents count
- Pending approvals count
- Recent signals count
- Event streams count
-
Active Agents (Pattern 1)
- Agent ID and status
- Current task
- Progress bar
- Color-coded status (green=running, yellow=idle)
-
Approval Requests (Pattern 5)
- Approval type
- Requesting agent
- Context details
- Approve/Reject buttons
-
Quality Metrics (Pattern 6)
- Workflow/stage quality scores
- Tier breakdown (cheap/capable/premium)
- Sample counts
- Trend indicators
-
Recent Signals (Pattern 2)
- Signal type
- Source → Target agent
- Relative timestamps
-
Event Stream (Pattern 4)
- Event type
- Source agent
- Relative timestamps
-
Underperforming Stages (Pattern 6)
- Stages below 70% quality threshold
- Quality ranges
- Sample counts
The populate_redis_direct.py script writes directly to Redis without using any of the telemetry API classes. This means:
- ✅ No dependencies beyond redis-py
- ✅ No memory backend initialization needed
- ✅ No UsageTracker singleton required
- ✅ Fast and simple
To refresh with new random data:
# Clear Redis (optional)
redis-cli FLUSHDB
# Regenerate data
python scripts/populate_redis_direct.pyDashboard will pick up new data on next auto-refresh (5 seconds).
Cause: Redis data expired (TTL) or was cleared
Solution:
python scripts/populate_redis_direct.pyCause: Redis is not running
Solution:
redis-serverCause: Another process using port 8000
Solution: Stop other server or use different port:
python -c "from src.empathy_os.dashboard import run_simple_dashboard; run_simple_dashboard(port=8080)"The dashboard exposes these REST endpoints:
GET /api/health- System health statusGET /api/agents- List active agentsGET /api/signals?limit=20- Recent coordination signalsGET /api/events?limit=30- Recent eventsGET /api/approvals- Pending approval requestsGET /api/feedback/workflows- Quality metricsGET /api/feedback/underperforming?threshold=0.7- Underperforming stagesPOST /api/approvals/{id}/approve- Approve requestPOST /api/approvals/{id}/reject- Reject request
Test with curl:
curl http://localhost:8000/api/health
curl http://localhost:8000/api/agents┌─────────────────────────────────────────┐
│ Browser (http://localhost:8000) │
└────────────────┬────────────────────────┘
│
│ HTTP GET (every 5s)
│
┌────────────────▼────────────────────────┐
│ simple_server.py (Python stdlib only) │
│ - HTTPServer (no FastAPI/Flask) │
│ - Serves HTML/CSS/JS │
│ - REST API endpoints │
└────────────────┬────────────────────────┘
│
│ redis-py
│
┌────────────────▼────────────────────────┐
│ Redis (localhost:6379) │
│ - 364 keys with test data │
│ - TTL-based expiration │
└─────────────────────────────────────────┘
Core: Python stdlib only
http.server- Web serverjson- Data serializationpathlib- File handlingurllib.parse- URL parsing
Data Layer: redis-py (already installed)
- Direct Redis access
- No telemetry API
- No memory backend initialization
Frontend: Vanilla JavaScript
- No frameworks
- No build process
- Works in any modern browser
Next Steps:
- Start dashboard:
./scripts/start_dashboard.sh - Open browser:
http://localhost:8000 - Watch auto-refresh show real-time data
- Click "Approve" or "Reject" on approval requests to see interaction
- Check console for API request logs
Documentation:
- Full guide: docs/DASHBOARD_GUIDE.md
- Implementation summary: docs/DASHBOARD_SUMMARY.md