Skip to main content
Reference · Information

Dashboard

Live Pane type

Multi-project portfolio: total savings across every workspace, project-level table, per-feature charts, and insights (top filter rule by hit, freshest KB entity, etc.).

Live tiles

The Dashboard's Live Tiles strip shows three coordinator-backed tiles — Budget Burn (30 s cache), Validation Queue (5 s), and Repo Dirty (10 s) — each driven by a PaneRefreshScheduler under one bounded worker pool (cap 4). State is persisted per tile in pane_refresh_state so values survive an app restart.

When a fetch returns a partial result, the tile renders a yellow warning strip with a triangle icon and the notice text (e.g. "no spend yet"); a hard failure renders a red strip with an octagon icon. Error wins over notice — the tile never shows both at once. Each tile sets a single accessibilityLabel so VoiceOver reads "tile name, partial: notice" or "tile name, error: detail" instead of an unlabeled stack.

Models & Inference tile (V.19a-4)

The Models & Inference tile sits below the Live Tiles strip and surfaces local-MLX prefix-cache visibility on every 2 s tick. Four metric cards: cache hit rate (hit_count / (hit + cold_miss) from cache_lifecycle spans), cached tokens (SUM(token_events.cached_prompt_tokens) over matched sessions), active tier (most recent matched token_events.model_tier), and memory pressure.

Values are derived from a JOIN of runtime_telemetry_span (where name LIKE 'cache_lifecycle.%') × token_events (where cache_origin IS NOT NULL OR cached_prompt_tokens > 0) on session_id. The JOIN runs in pure Swift via MLXInferenceTileCorrelator — narrow inputs, scalar-only snapshot output. The tile is scoped to the local MLX inference path; external CLI provider observability (Codex / Claude Code / Gemini CLI / OpenCode) lives in V.17a's separate provider_runtime_event spine.

On JOIN mismatch the tile renders a yellow stale badge next to the section header, never silent dropout: "stale: cache_lifecycle span without token_events row" (orphan span), "stale: token_events row without cache_lifecycle span" (orphan accounting row), or "stale: cache and accounting paths disconnected" (both directions). The badge surfaces a wiring gap so the operator can investigate before trusting the numbers.

Keyboard

Open via ⌘K → type the pane name. Close with ⌘W. Focus with ⌘+digit (the pane's position on the canvas).

Related