Monitor your GitHub Actions workflow runs directly from the macOS menu bar.
- See workflow run statuses at a glance
- Get notifications when runs complete
- Select the repositories you want to monitor
- Minimal permissions — no access to your code
- Native macOS app — lightweight and fast
- Automatic updates via Sparkle
ActionBar signs in through a GitHub App using the OAuth device flow. The app only has Actions (read) and Metadata (read) permissions, so it never has access to your code. It only calls the workflow runs API (/repos/{owner}/{repo}/actions/runs) for the repositories you select.
Your access token is stored in the macOS Keychain.
By default, ActionBar polls the API every 30 seconds; the interval is configurable, and you can refresh manually at any time. Each monitored repository requires a separate API call on every refresh, so monitoring a large number of repositories may hit GitHub's rate limits.
ActionBar does not collect, transmit, or share any personal data. The app only talks to GitHub: the official API (api.github.com) and, for update checks, this repository's releases. No analytics, telemetry, or third-party services are used. All stored data is deleted when you sign out.
Requirements: macOS 14+ and a recent version of Xcode.
- Clone the repository.
- Copy
Config/Local.xcconfig.exampletoConfig/Local.xcconfigand set your Apple Developer Team ID and a bundle identifier registered to your team. - Open
ActionBar.xcodeprojand run theActionBarscheme, or usemake run.
The app authenticates through the official ActionBar GitHub App. If you're shipping your own fork, register your own GitHub App with device flow enabled and Actions (read) permission, then update GitHubApp.clientID and GitHubApp.installationURL in Sources/ActionBar/Services/OAuthService.swift. You'll also need your own Sparkle key pair and feed URL in Resources/Info.plist (see below).
Releases are built, signed, notarized and published by the Release workflow when a version tag is pushed. First add a ## <version> section to CHANGELOG.md; it becomes the release notes on GitHub and in the update dialog. Then tag:
git tag v2.0
git push origin v2.0The workflow produces a notarized ActionBar.dmg and a Sparkle appcast.xml, and attaches both to a GitHub Release. The app checks releases/latest/download/appcast.xml for updates. The build number is the commit count, so it always increases.
It needs these repository secrets:
| Secret | Value |
|---|---|
DEVELOPER_ID_CERT_P12 |
"Developer ID Application" certificate exported from Keychain Access as .p12, base64-encoded |
DEVELOPER_ID_CERT_PASSWORD |
Password for the .p12 |
APPLE_ID |
Apple ID email used for notarization |
APPLE_APP_PASSWORD |
App-specific password for that Apple ID |
APPLE_TEAM_ID |
Apple Developer Team ID |
SPARKLE_PRIVATE_KEY |
Sparkle EdDSA private key (generate_keys --account actionbar -x key.txt) |
The source code is released under the MIT License.
The ActionBar name and app icon are not covered by the license. If you distribute a fork, please use a different name and icon.
ActionBar is an independent project and is not affiliated with GitHub.
