How robinebers/openusage works
OpenUsage is a native macOS menu-bar dashboard for AI coding-plan usage. Its central workflow is to load local provider credentials, fetch or scan usage, normalize results into provider snapshots, and present cached data in the dashboard and menu-bar pins. The same runtime supports a one-shot CLI and loopback HTTP API. The README also documents customization, spend estimates from local logs and refreshed pricing, settings, proxy support, iCloud sync, and notifications. Provider and UI internals are represented at subsystem level where source excerpts were not sampled.
Main entry points: UsageReader.swift Usage reader · StatusItemController.swift Status item panel · DashboardView.swift Dashboard popover · ProviderRuntime.swift Provider runtime
Components 23
App shell
- Status item panel
Sources/OpenUsage/App/StatusItemController.swift - App container
Sources/OpenUsage/App/AppContainer.swift
Provider data
- Provider runtime
Sources/OpenUsage/Providers/ProviderRuntime.swift - Provider catalog
Sources/OpenUsage/Providers/ProviderCatalog.swift - Provider integrations
Sources/OpenUsage/Providers - Provider credentials
Sources/OpenUsage/Providers - Usage clients
Sources/OpenUsage/Providers - Provider snapshots
Sources/OpenUsage/Models/ProviderSnapshot.swift
Dashboard
- Dashboard popover
Sources/OpenUsage/Views/DashboardView.swift - Widget data
Sources/OpenUsage/Stores/WidgetDataStore.swift - Layout customization
Sources/OpenUsage/Stores/LayoutStore.swift - Menu bar pins
Sources/OpenUsage/Models/MenuBarContent.swift - Settings screens
Sources/OpenUsage/Views/SettingsScreen.swift
Shared services
- Usage reader
Sources/OpenUsage/Services/UsageReader.swift - Snapshot cache
Sources/OpenUsage/Stores/ProviderSnapshotCache.swift - Spend aggregation
Sources/OpenUsage/Services/UsageHistoryAggregator.swift - Model pricing
Sources/OpenUsage/Pricing/PricingCatalog.swift - iCloud sync
Sources/OpenUsage/Stores/ICloudUsageSyncStore.swift
Read interfaces
- One-shot CLI
Sources/OpenUsageCLI/OpenUsageCLI.swift - Local HTTP API
Sources/OpenUsage/Services/LocalUsageServer.swift
Other components
- Mac user
- Local usage logs
- Other local apps
Connections 24
- Mac user → Status item panel: opens panel
- Status item panel → App container: uses services
- Status item panel → Dashboard popover: hosts view
- App container → Provider catalog: assembles
- Provider catalog → Provider runtime: selects provider
- Provider runtime → Provider credentials: loads auth
- Provider runtime → Usage clients: requests usage
- Usage clients → Provider integrations: integrates providers
- Provider integrations → Provider snapshots: maps usage
- Provider integrations → Local usage logs: scans logs
- Usage reader → Provider runtime: refreshes providers
- Usage reader → Snapshot cache: updates cache
- Snapshot cache → Provider snapshots: stores snapshots
- Dashboard popover → Usage reader: reads usage
- Dashboard popover → Widget data: renders widgets
- Dashboard popover → Layout customization: reads layout
- Status item panel → Menu bar pins: shows pins
- Spend aggregation → Model pricing: estimates cost
- Spend aggregation → Local usage logs: aggregates logs
- One-shot CLI → Usage reader: reads cached limits
- Local HTTP API → Usage reader: serves usage
- Other local apps → Local HTTP API: requests limits
- Mac user → Settings screens: configures app
- Settings screens → iCloud sync: configures sync