AgentBar
macOS AI Coding Agent Monitor
- Swift
- SwiftUI
- macOS
Extended and re-engineered an MIT-licensed macOS AgentBar foundation with additional integrations, activity detection, quota telemetry, privacy boundaries, and release hardening. Upstream: scari/AgentBar. This is not a from-scratch product. The GitHub repository is currently private, so unauthenticated visitors will get a 404 on the release URL until it is public.

Problem
Local coding agents leave session, quota, and process state scattered across apps. AgentBar keeps a menu-bar view of that state without turning the machine into a prompt logger.
System design
What this repository added
- Cursor activity/session and usage handling
- Antigravity sessions and quota telemetry
- Buzz activity/process detection
- Generalized agent activity tracking and provider state fixes
- Privacy-focused metadata handling, Keychain usage, credential expiry
- Native menu-bar status behavior and session status correctness
- Release hardening, CI, and docs
Key engineering decisions
Privacy-conscious by default
Prefer content-blind local metadata. Gemini CLI counting decodes only type and timestamp. Cursor local reads stay on required metadata. Prompt and transcript logging is avoided. This is a design choice, not a certification.
Runtime provider settings
Integration settings update without requiring a full app restart where the architecture allows it.
WAL-aware Cursor DB reads
Local database access accounts for WAL so session state is not stale or racy.
Unsigned release, stated plainly
v0.1.0 is an unsigned Release build. It is not Apple-notarized.
Verification
Tests
700
Passed
699
Failed
0
1 intentional system Keychain skip
CFBundleShortVersionString = 0.1.0. GitHub Release exists. Provenance is recorded in UPSTREAM.md (imported commit 3bff0daaeb5a2c6cdc9e357b9a0048f455748fba, MIT).
Release commit 9b43da9ca1d8c1419f7ff53d5e5060a5b9be5ee0
What I learned
Extending an upstream macOS app is mostly boundary work: which files you read, what you persist, and how you test integrations you do not control. Attribution belongs on the page, not in a footnote you hope nobody opens.