Overview
The Usage Dashboard provides comprehensive analytics for your AI usage across all agents, with interactive charts powered by Recharts and real-time updates.
Track queries, costs, efficiency, and patterns over time with a responsive, keyboard-accessible interface.
Opening the Dashboard
Access via keyboard shortcut or menu:
Keyboard: Cmd+Shift+U (macOS) / Ctrl+Shift+U ( Windows/Linux )
Menu: View → Usage Dashboard
View Modes
The dashboard has four focused views:
Overview
Agents
Activity
Auto Run
High-level summary with:
Summary cards (total queries, duration, avg per query)
Agent comparison chart
Session type distribution
Location distribution
Peak hours activity
Activity heatmap
Duration trends
Agent-focused analytics:
Agent statistics table
Agent efficiency comparison
Provider comparison
Agent usage over time
Temporal patterns:
Activity heatmap
Weekday vs weekend comparison
Duration trends by day
Auto Run-specific metrics:
Auto Run statistics
Tasks by time of day
Top 25 longest Auto Runs
Tab Navigation
// Keyboard shortcuts
Cmd + Shift + [ - Previous tab
Cmd + Shift + ] - Next tab
Arrow keys - Navigate when tabs focused
Time Range Filter
Filter data by time period:
Range Description Today Current day’s activity This Week Last 7 days This Month Last 30 days This Quarter Last 90 days This Year Last 365 days All Time Complete history
type StatsTimeRange = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'all'
Charts & Visualizations
Summary Cards
Key metrics at a glance:
Total Queries
Total Duration
Average Duration
{
title : 'Total Queries'
value : 1234
icon : MessageSquare
color : accent
}
Activity Heatmap
Day-by-hour activity visualization:
interface HeatmapCell {
day : string // Day of week
hour : number // 0-23
count : number // Query count
intensity : 0 - 1 // Normalized for color
}
Features:
7 rows (days of week) × 24 columns (hours)
Color intensity based on activity
Hover for exact counts
Click to filter detail views
Agent Comparison
Horizontal bar chart comparing providers:
interface AgentComparisonData {
provider : string // claude-code, codex, etc.
count : number // Query count
duration : number // Total duration (ms)
avgDuration : number // Average duration (ms)
}
Features:
Stacked bars (count + duration)
Colorblind-friendly palette option
Legend with click-to-filter
Responsive breakpoints
Source Distribution
Pie chart showing user vs Auto Run queries:
interface SourceData {
source : 'User' | 'Auto Run'
count : number
percentage : number
}
Features:
Donut chart with center label
Hover highlights
Click to drill down
Peak Hours
Bar chart of queries by hour:
interface PeakHourData {
hour : number // 0-23
count : number // Query count
label : string // "12 AM", "1 PM", etc.
}
Features:
24-hour breakdown
Highlights peak hour
Responsive layout
Duration Trends
Line chart showing duration patterns over time:
interface DurationTrendData {
date : string // YYYY-MM-DD
avgDuration : number // Average duration (ms)
count : number // Query count
}
Features:
Dual-axis (duration + count)
Moving average option
Zoom and pan support
Agent Usage Chart
Stacked area chart of agent activity over time:
interface AgentUsageData {
date : string
[ sessionId : string ] : number // Query count per agent
}
Features:
Per-agent breakdown
Stack visualization
Agent color consistency
Legend filtering
Auto Run Statistics
Grid of Auto Run-specific metrics:
Task Metrics
Performance
Timing
- Total tasks completed
- Tasks per run ( avg )
- Completion rate
Data Aggregation
Dashboard queries a SQLite database with indexed queries:
interface StatsAggregation {
totalQueries : number
totalDuration : number
avgDuration : number
byAgent : Record < string , { count : number ; duration : number }>
bySource : { user : number ; auto : number }
byLocation : { local : number ; remote : number }
byDay : Array <{ date : string ; count : number ; duration : number }>
byHour : Array <{ hour : number ; count : number ; duration : number }>
totalSessions : number
sessionsByAgent : Record < string , number >
avgSessionDuration : number
}
Real-Time Updates
Dashboard auto-refreshes on new data:
// Subscribe to stats updates
const unsubscribe = window . maestro . stats . onStatsUpdate (() => {
// Debounced refresh (1 second)
fetchStats ( true ) // isRealTimeUpdate = true
})
// Show "Updated" indicator briefly
setShowNewDataIndicator ( true )
setTimeout (() => setShowNewDataIndicator ( false ), 3000 )
Export
Export raw data to CSV:
// Export for selected time range
const csv = await window . maestro . stats . exportCsv ( timeRange )
// CSV format:
// timestamp,agent_id,agent_name,provider,duration_ms,source,location,session_id
// 2024-01-15T10:30:00Z,abc123,My Agent,claude-code,1250,user,local,xyz789
// ...
Use cases:
Import to Excel/Sheets
Custom analysis in Python/R
Long-term archival
Compliance reporting
Keyboard Navigation
Fully keyboard accessible:
Focus Tabs
Tab key focuses view mode tabs
Switch Views
Arrow keys navigate between tabs
Enter Content
Tab key moves into chart sections
Navigate Charts
Arrow keys move between sections Home/End jump to first/last
// Section navigation
interface SectionNavigation {
ArrowUp : () => void // Previous section
ArrowDown : () => void // Next section
Home : () => void // First section
End : () => void // Last section
Tab : () => void // Focus next section
}
Colorblind Mode
Accessible color palettes:
// Enable in Settings → Accessibility
colorBlindMode : boolean
// Uses deuteranopia-friendly colors:
- Blue (#0066 CC )
- Orange (# FF6600 )
- Yellow (# FFCC00 )
- Purple (#9933 CC )
Colorblind mode is automatically applied to all charts when enabled in settings.
Optimized for large datasets:
// Indexed database queries
CREATE INDEX idx_stats_timestamp ON ai_stats ( timestamp )
CREATE INDEX idx_stats_agent ON ai_stats ( agent_id )
CREATE INDEX idx_stats_source ON ai_stats ( source )
// Typical query times:
// - Day range: <10ms
// - Week range: <50ms
// - Month range: <200ms
// - All time: <500ms
// Virtual scrolling for long tables
// Debounced chart rebuilds (300ms)
// Memoized expensive calculations
// ResizeObserver for responsive charts
// Performance thresholds
const PERFORMANCE_THRESHOLDS = {
DASHBOARD_LOAD: 1000 , // Max initial load time
CHART_RENDER: 500 , // Max chart render time
INTERACTION_RESPONSE: 100 // Max UI response time
}
Memory Management
// Cleanup on unmount
useEffect (() => {
return () => {
unsubscribe () // Stop stats updates
clearTimeout ( timers ) // Clear debounce timers
resizeObserver . disconnect () // Stop resize observer
}
}, [])
Database Size
Monitor storage usage in footer:
// Display database size
const dbSize = await window . maestro . stats . getDatabaseSize ()
formatDatabaseSize ( dbSize )
// "1.5 MB" or "125 KB"
Beta Features
Dashboard is marked as Beta:
< span className = "beta-badge" > Beta </ span >
Limitations:
Some data may be incomplete for older sessions
Chart types may change based on feedback
Export format subject to refinement