
The Usage Dashboard only tracks activity from within Maestro. It does not include historical data from before you started using Maestro, nor does it capture usage from agents run outside of Maestro (e.g., directly from the command line).
Opening the Dashboard
Keyboard shortcut:- macOS:
Opt+Cmd+U - Windows/Linux:
Alt+Ctrl+U
- Click the hamburger menu (☰) in the top-left corner
- Select Usage Dashboard
- Press
Cmd+K/Ctrl+Kand search for “Usage Dashboard”
Dashboard Tabs
The dashboard is organized into tabs, each providing different insights into your usage. Overview, Agent Overview, Agents, Groups, Tokens, Activity, Auto Run, and Shortcuts are always present. Three more appear only when there is something for them to show:
The per-provider quota tabs read what the provider reports about your plan window, so an account authenticated with an API key rather than a plan login never produces one.
Overview
The Overview tab gives you a high-level summary of your AI usage: Summary Cards:- Sessions - Total number of registered sessions
- Total Queries - Number of messages sent to AI agents
- Total Time - Cumulative time spent waiting for AI responses
- Avg Duration - Average response time per query
- Top Agent - Your most-used AI agent
- Interactive vs Auto - How the selected range’s AI time divides between work you waited on and work that ran without you, with a split bar underneath
- The fill runs to the highest milestone you have ever unlocked, and stays there. A stretch of hands-on work cannot take back a milestone you earned.
- The marker is your live score, which moves in both directions.
The two stats systems keep different amounts of history. Query events (interactive and Auto Run) are never pruned, so they go back to your install. Cue run rows are pruned after 7 days, so the score takes its Cue time from the same lifetime counter the About card’s Cue Time tile shows, which survives that prune. Cue counts only runs that finished naturally, matching how Conductor time is credited.
- Interactive - Manual queries from AI Terminal conversations
- Auto Run - Automated queries from playbook execution
Agent Overview
A compact card per active agent, sized for scanning the whole fleet in one screen rather than studying any one of them. Each card carries the agent name, a live status dot, its query count, and a 7-day activity sparkline. Worktree agents render with a dashed accent border, a WT badge, and their checked-out branch, so a parent and its worktrees are distinguishable at a glance. Internal terminal sessions are left out. A fuzzy filter above the grid narrows the cards live as you type, matching on the agent name (with or without its leading emoji) and on a worktree’s branch name.Groups
One tile per Left Bar group, rolling every member agent’s activity into a single set of numbers. Bundle a client’s agents into a group and this tab answers what that client cost.
- Filter groups narrows the tiles by name.
- Sort by orders them by Name, Queries, Time, Cost, or Agents.
- Clicking a tile opens a per-group detail view: a sortable table of the member agents, showing the same measures the group total was summed from, so a row and the header always reconcile. Clicking a row opens that agent’s own detail view on top.
Cost and tokens only exist for turns recorded after the stats database began storing them, so a long-lived install shows older activity with query and time figures but no spend.
Agents
The Agents tab shows one card per agent, so you can scan your whole fleet at once. Each card carries the agent name, a live status dot, its age, and three stats: Queries, Tabs, and Auto % (the share of that agent’s queries that came from Auto Run or Cue), plus a 7-day activity sparkline. Worktree agents render with a dashed border, a WT badge, and their checked-out branch. Filtering: the filter box above the grid narrows the cards as you type. Matching is fuzzy, socbst finds “Cyber Stocks”, and it searches the agent name (with or without its leading emoji) as well as a worktree’s branch name. A count next to the box shows how many of your agents match. Press Esc or click the ESC pill to clear the filter; clearing it is what Esc does first, so the dashboard stays open.
Provider accounts: when your agents are split across more than one provider account, an All providers dropdown appears beside the filter box, listing each account with the number of agents behind it (Claude Code - smash (7), Codex - Default account (3), OpenCode (2)). Pick one to narrow the grid to those agents. Every card is also badged with its account name, so you can read the split without touching the filter. A plain ~/.claude or ~/.codex has no name of its own, so those cards badge the provider instead (CLAUDE CODE DEFAULT, CODEX DEFAULT) rather than a bare “default account” that would read the same on both. An account is whichever CLAUDE_CONFIG_DIR or CODEX_HOME that agent runs against; providers that keep one credential store show up as a single entry named after the provider.
The N agents chip on each row of the Anthropic Usage and OpenAI Usage tabs is a shortcut into this: click it and Maestro opens the Agents tab already narrowed to that account, so you can see which agents are burning the plan you are looking at. Agents that run over SSH are marked remote: on the remote host that directory holds the host’s own login, which can be a different account from the one the row measures. A row the last refresh could not update shows a stale chip with the time its bars were read.
An account keeps its row after you move every agent off it, which is what you normally do the moment that plan hits its limit. The row holds the last reading Maestro took, badged stale with its age, so you can watch for the reset without keeping an agent parked on a capped account. Maestro remembers an account because it sampled it for a real agent, not because a directory looks like one, and it forgets the row only when that account directory is gone from disk.
Sorting: the Sort by control orders the grid by Name, Created, Recent, Queries, Tabs, Auto %, or Provider (which groups the fleet one account at a time). The stat being sorted on is highlighted on every card, so it is obvious what the order means. Recent ranks by when each agent last ran a query, so the fleet reads newest-work-first; under it the card’s corner badge switches from the agent’s age to that last-query time, and an agent that has not run anything in the selected range drops to the bottom with no badge at all. When a filter is active, the default Name sort ranks the best match first; any other sort keeps the order you chose.
Tile size: + and - resize the tiles, and 0 returns them to the default. The buttons beside the Sort by control do the same. A wider tile shows more of a long agent name before it truncates; a narrower one fits more agents on screen at once. Maestro remembers the size you picked, and the Groups tab keeps its own separate size.
Per-agent details: click any card to open a detail view for that agent, covering total queries, total and average duration, active days, a full-window daily activity chart, duration distribution (min / median / p95 / max), the user-vs-auto query split, and Auto Run totals.
Two actions in the detail view’s header take you out of the numbers and onto the agent itself:
- Jump to Agent switches to that agent and lands on its AI transcript, even if you last left it on a terminal, file, or browser tab, and expands whichever Left Bar section it is hiding in.
- Agent Settings opens the Edit Agent dialog for it.
Tab breakdown
The detail view also breaks the agent’s activity down by AI tab, as a grid of tab tiles. Each tile shows the tab name, Queries, Time (total agent time in that tab, with the per-query average on hover), Auto %, when it was last active, and a 14-day sparkline. The tab currently in focus is badged Active, snoozed tabs are badged Snoozed, and closed tabs render with a dashed border.- Show picks how far back to look: Open (the default, tabs currently open on that agent), Last 10, Last 25, or All.
- Sort by orders the tiles by Recent, Queries, Time, or Name.
Maestro records which tab issued each query, but tab names live with the tab itself. A tab that is open, snoozed, or was closed during this app session is shown by name; older closed tabs can only be identified by a short ID (e.g.
DEADBEEF). This is why Open is the default view - a long-running agent accumulates many retired tabs that can no longer be named.Tokens
Token and cost consumption, broken down by agent, model, provider account, and time. This tab has a different data source from the rest of the dashboard. Where the other tabs read Maestro’s own record of what it ran, Tokens reads each agent’s on-disk transcripts, which is where the provider writes the token counts it actually billed. Two things it is careful about:-
Estimated versus reported cost. Only some agents report a real cost figure. Everything else is priced from a built-in rate table, and those numbers are marked with a
~and explained in a footnote, so an estimate is never presented as authoritative. -
Multiple provider accounts. Running several accounts from separate provider homes is common, and the Accounts breakdown reports each one’s spend separately rather than blending or dropping them. Each row names its provider as well as its account (
Claude Code - Default account,Codex - project-acc-1), so two providers’ default accounts can never land in one row. Hover a row to see the account’s full directory. Which providers can split by account depends on whether the provider’s CLI ships a variable that selects its home directory:OpenCode and Factory Droid ship no per-account home variable, so their spend is reported under a single row per provider. Maestro finds an account from the variable set on an agent (or on the provider, in Settings), from your own shell environment, and from~/.<provider>-*directories on disk. Accounts that share one transcript directory by symlink are counted once, not once per account. A home is not always a login.COPILOT_HOMErelocates Copilot CLI’s transcripts but leaves its login machine-wide, so two Copilot homes report as two rows that bill one GitHub account. Multiple Accounts covers what each provider’s variable does and does not move. SSH-remote agents are not attributed by account: their transcripts live on the remote host.
OpenAI Usage
One row per Codex account (CODEX_HOME), each with its plan badge, its email, and a bar per usage window: Session (5h), Weekly, and any per-model limits the account reports, every one labelled with when it reopens.
Usage resets
OpenAI grants Codex accounts occasional reset credits. Redeeming one reopens that account’s consumed usage windows straight away instead of waiting for the clock. Codex only exposes this inside its own terminal UI, so Maestro surfaces it here: any account holding credits grows a Usage resets block under its bars, listing each credit with its expiry and a Reset now button. Redeeming always asks first, because the credits are finite, expire (typically about a month after they are granted), and cannot be refunded. Maestro spends the soonest-to-expire credit so none lapses while others sit unused, and re-reads your usage immediately afterwards, so the bars show the reopened windows rather than the exhausted ones you just paid to clear. An account with no credits shows no block at all, so the row stays as it was.Automatic resets
Individual agents can redeem a credit on their own when they hit a wall. The toggle is in the agent’s Codex Settings, directly under Reasoning Effort, in both the New Agent and Edit Agent dialogs: Redeem a reset credit when this agent hits its usage limit - off by default. Turned on, an agent that stops on a plan-quota limit spends one credit and lets its usual auto-retry pick the work back up once the window is open. Maestro will not do this quietly: every automatic redemption raises a notification naming the agent and how many windows reopened. The automation is deliberately more cautious than the button:
Turn it off and nothing changes about the manual button: the credits stay yours to spend from the dashboard whenever you choose.
Shortcuts
How much of the keyboard you actually use, from two sources: which shortcuts you have ever fired, and how often shortcuts fired per day. The mastery figure counts only shortcuts that have a key bound to them. An action with no chord assigned cannot be fired, so it is excluded from both the total and the “unused” list - listing one would send you off to press a chord that does not exist. The same numbers drive the mastery bar in the keyboard shortcuts help modal, so the two can never disagree. The Unused Shortcuts list is the useful half: bound chords you have never pressed, which is the shortest path to getting faster.Activity
The Activity tab shows your usage patterns over time:- Interactive vs Delegated - stacked bars, one per day, splitting each day into interactive work and delegated work (Auto Run + Cue). Toggle between Time and Queries; hovering a bar breaks the day out into Interactive, Auto Run, and Cue, with that day’s delegated share. On a long range the bars are grouped into equal blocks of days so the chart stays readable, and quiet days are drawn as gaps rather than skipped. Because Cue run rows are pruned after 7 days, ranges longer than a week show Auto Run only for the older days, and the chart says so under the legend
- Duration trends chart showing how your usage varies
- Time-based filtering to spot patterns
- Useful for understanding your productivity cycles
Auto Run
The Auto Run tab focuses specifically on automated playbook execution: Metric Cards:- Total Sessions - Number of Auto Run sessions
- Tasks Done - Total tasks completed (with attempted count)
- Avg Tasks/Session - Average tasks completed per Auto Run session
- Success Rate - Percentage of tasks that completed successfully
- Avg Session - Average duration of an Auto Run session
- Avg Task - Average duration per individual task
scripts/repair-autorun-durations.mjs rebuilds each affected run’s duration from its own task timestamps (dry run by default; --apply writes, after a backup). Runs with no recorded tasks cannot be reconstructed and are left as they are.
Time Range Filtering
Use the time range dropdown in the top-right corner to filter all dashboard data:
The selected time range applies to all tabs and charts. Your preferred time range is saved and restored between sessions.
Keyboard Navigation
Exporting Data
Click Export in the top-right corner and pick a format. Both cover the selected time range and hold the same data:
The export includes query events (with per-turn tokens and cost), Auto Run sessions and tasks, agent lifecycle, Agent Resilience outages, wizard runs, daily shortcut usage, multi-window usage, token usage by agent, model, project, and account, and Maestro Cue runs when Cue is on. Cue keeps 7 days of run history, so a longer range includes only the last week of Cue runs.
A toast confirms where the file was saved and how many rows it holds.
Data Collection
What’s Tracked
The Usage Dashboard collects:- Query events - Each message sent to an AI agent, including duration and which agent handled it
- Auto Run sessions - Start/end times of automated playbook runs
- Auto Run tasks - Individual task completions within playbooks
What’s NOT Tracked
- Message content (your prompts and AI responses)
- File contents or paths
- Token counts or costs (tracked per-session in the main UI, not aggregated in the dashboard)
- Activity outside of Maestro
Enabling/Disabling Collection
Stats collection is enabled by default. To disable:- Open Settings (
Cmd+,/Ctrl+,) - Go to the General tab
- Find Usage Dashboard section (marked with Beta badge)
- Toggle off Enable stats collection
Accessibility
The Usage Dashboard adopts Maestro’s colorblind-friendly chart palette (Wong, Nature Methods 2011) when Color Blind Mode is enabled in Settings → Display → Accessibility. Agent and source distinctions switch to a high-contrast set tested against protanopia, deuteranopia, and tritanopia. See Configuration → Accessibility for everything the toggle changes across the rest of the app.Additional Features
Real-time Updates: The dashboard automatically refreshes when new queries are recorded. An “Updated” indicator briefly appears when new data arrives. Database Size: The footer displays the current size of the stats database, helping you monitor storage usage over time. Footer Summary: The middle of the footer states what the tab in front of you is actually showing, and it changes with the tab:24 of 84 agents once you narrow the
Agents grid, 126 runs · 12 pipelines · 8 failed on Cue, 3 accounts · peak window 87% on a plan quota tab. It reflects the filters you set, not just the
time range, so it is the fastest way to confirm a filter is on when the grid
looks emptier than you expected. A tab with nothing to say yet (still loading,
or an empty range) leaves the slot blank rather than showing a row of zeroes.
Tips
- Check the Activity Heatmap to understand your most productive hours
- Use Peak Hours to identify your most productive time of day
- Compare agents to see if one consistently performs faster than others
- Monitor Auto Run vs. Interactive ratio to understand your automation level
- Export regularly if you want to track long-term trends externally
- Use time filtering to focus on recent activity or see the big picture