How nanako0129/tokenbar works
Syrtis is a local-first macOS menu-bar monitor that reads AI coding-tool usage, derives usage and quota summaries, and presents them in a dashboard and menu-bar indicators. The main workflow runs from the user opening the status item through refresh and Rust-backed aggregation into Swift dashboard views. The README documents broad reporting, quota, chart, settings, and update capabilities; their exact internal wiring is not fully sampled, so subsystem-level links are limited to documented behavior. Rust source paths and the Swift FFI bridge implementation are not sampled.
Main entry points: lib.rs Rust FFI Core · DashboardModel.swift Dashboard Model · UsageDataSource.swift Usage Data Source · PopoverView.swift Dashboard Panel
Components 19
Menu Bar Shell
- Status Item
Sources/Syrtis/StatusItemController.swift - App Startup
Sources/Syrtis/main.swift - Quota Menu Items
Sources/Syrtis/ClientTray.swift - App Updates
Sources/Syrtis/UpdaterService.swift
Usage Collection
- Usage Data Source
Sources/Syrtis/UsageDataSource.swift
Reports and Quotas
- Rust FFI Core
crates/tb_core_ffi/src/lib.rs - Usage Reports
Sources/TokenBarCore/TBCore.swift - Quota Reports
Sources/TokenBarCore/QuotaResolver.swift
Dashboard and Settings
- Dashboard Model
Sources/Syrtis/DashboardModel.swift - Dashboard Panel
Sources/Syrtis/PopoverView.swift - Report Views
Sources/Syrtis/Views/ViewSwitch.swift - Usage Charts
Sources/Syrtis/Views/UsageChartCard.swift - 3D Activity Graph
Sources/Syrtis/Charts/ContributionGraph3D.swift - Settings Window
Sources/Syrtis/SettingsWindowController.swift
External Services
- Tool Session Logs
- Quota Providers
- macOS Keychain
- Sparkle Service
Other components
- User
Connections 18
- User → Status Item: opens dashboard
- Status Item → App Startup: activates app
- App Startup → Usage Data Source: starts refresh
- Usage Data Source → Tool Session Logs: reads logs
- Usage Data Source → Rust FFI Core: requests parsing
- Rust FFI Core → Usage Reports: returns data
- Rust FFI Core → Quota Providers: fetches quotas
- Rust FFI Core → macOS Keychain: reads credentials
- Usage Reports → Dashboard Model: supplies reports
- Quota Reports → Dashboard Model: supplies quota data
- Dashboard Model → Dashboard Panel: provides state
- Dashboard Panel → Report Views: selects lens
- Report Views → Usage Charts: renders usage
- Usage Charts → 3D Activity Graph: renders activity
- Dashboard Panel → Settings Window: opens settings
- Dashboard Model → Quota Menu Items: updates indicators
- User → App Updates: requests update
- App Updates → Sparkle Service: checks releases