CI status, without the tabs.
Sprocket is a tiny macOS menu bar app that watches GitHub Actions across every
repo you can see — personal, org, collaborator. One glyph reflects the worst
current state across every watched repo (failure → running → rate-limited →
success); click for the full list; get notified the moment something turns red.
- Aggregate status — one menu bar glyph reflects the worst current state across every watched repo.
- Live polling — ETag-aware. Default 30 s refresh cadence; repos with running jobs poll every 15 s. Battery-aware backoff.
- Failure first — notified on transitions to failure, timed_out, action_required. Coalesced bursts.
- Bring your own OAuth app — your token never leaves your Mac. No shared rate-limit pool, no analytics.
"I tab into GitHub fifty times a day to check if CI passed. Sprocket replaces that with a glance at the menu bar."
The popover shows your signed-in account, watched repositories, current and recent runs, workflow status, branch/event context, authors, and GitHub rate limit usage.
- macOS 26 (Tahoe) or newer
- Apple Silicon
- Swift 6.0 toolchain (Xcode 16+)
Download Sprocket-<version>-macos.zip from the
latest GitHub release, unzip it, and move Sprocket.app to
/Applications.
Or install with Homebrew:
brew tap MRL-00/Sprocket https://github.com/MRL-00/Sprocket
brew install --cask sprocketswift build # debug
swift build -c release # release
swift test # SprocketKit tests (Swift Testing)Build a runnable Sprocket.app bundle:
./Scripts/package_app.sh # release
VERSION=0.2.0 ./Scripts/package_app.sh # release with bundle version
SPROCKET_SIGNING=adhoc ./Scripts/package_app.sh # ad-hoc codesign
open build/Sprocket.appSprocket uses GitHub's device flow. Open the app, follow the
3-step welcome, and paste the OAuth Client ID from your GitHub OAuth App
(make sure Enable Device Flow is checked). Tokens are stored in the
macOS Keychain under nz.matt.sprocket.github.token.
Sources/SprocketKit/— models and actors shared by the app and CLISources/SprocketApp/— the menu bar app target (moduleSprocket)Sources/SprocketCommandLine/— thesprocketCLI (targetSprocketCLI)Tests/SprocketKitTests/— Swift Testing suitesScripts/package_app.sh— wrapsswift buildoutput intoSprocket.app