README.md

May 29, 2026 · View on GitHub

Stargazer Bar — GitHub stars in your menu bar

Stargazer Bar

GitHub stars in your macOS menu bar.
A tiny native app for watching multiple public repositories' stars and
release downloads without keeping GitHub open.

Latest release License Platform Homebrew

Download  ·  Website  ·  Issues


Stargazer Bar is an open-source macOS GitHub stars menu bar app for maintainers who want lightweight launch or release telemetry across public repositories. It works as a small GitHub release download counter too: stars stay in the menu bar, release downloads live in the dropdown, and the app reads GitHub directly without a backend.

Install

Homebrew (recommended)

brew install --cask jazzyalex/stargazer-bar/stargazer-bar

Direct download

Grab the signed, notarized Apple silicon DMG from the latest release.

Features

  • ⭐  Live star counts for multiple public repos in your menu bar — no browser tab required
  • 📦  Release download totals from GitHub's latest releases API page (up to 100 releases)
  • 🔔  Per-repository star sounds, so each tracked project can have its own update cue
  • 🔑  Track any public repo manually without a GitHub account; sign-in only powers the repo picker
  • 🔄  Sparkle auto-updates, EdDSA-signed and notarized
  • 🔒  Private by default — no backend, no telemetry, Keychain-stored tokens
  • 🪶  Native Apple silicon app, designed to stay out of the way
Stargazer Bar menu showing multiple tracked repositories

Privacy

The app stores tracked repository metadata and settings locally in UserDefaults. Optional GitHub OAuth tokens are stored in Keychain. There is no backend and no telemetry. The only non-GitHub network activity is optional Sparkle update checking.

Build from source

xcodebuild -project GHMenuStars.xcodeproj -scheme GHMenuStars -configuration Debug build
xcodebuild -project GHMenuStars.xcodeproj -scheme GHMenuStars -configuration Debug \
  -destination 'platform=macOS,arch=arm64' test

The Connect GitHub feature uses GitHub's OAuth device flow. Manual repository tracking works without credentials; the signed-in repository picker requires a GitHub OAuth app client id.

For local builds, copy Config/Local.xcconfig.example to Config/Local.xcconfig and set GHMENUSTARS_GITHUB_OAUTH_CLIENT_ID. The local config file is gitignored. You can also pass GHMENUSTARS_GITHUB_OAUTH_CLIENT_ID=... to xcodebuild, or launch with GH_MENU_STARS_GITHUB_CLIENT_ID=... for one-off debugging.

Release & deploy

Stargazer Bar uses Sparkle 2 for signed automatic updates. The production appcast is published at:

https://jazzyalex.github.io/stargazer-bar/appcast.xml

The release helper builds the Release app, signs with Developer ID, notarizes and staples the app and DMG, generates a Sparkle EdDSA-signed appcast for the zipped archive (release notes from docs/CHANGELOG.md), creates or updates the GitHub release, commits the appcast, verifies the public release, and updates the Homebrew cask tap:

VERSION=0.2 tools/release/deploy-stargazer-bar.sh
tools/release/verify-deployment.sh 0.2

The script expects gh authentication, a Developer ID Application certificate, notary credentials, and the Sparkle EdDSA private key in Keychain. tools/release/.env may provide TEAM_ID, DEV_ID_APP, NOTARY_KEY_PATH, NOTARY_KEY_ID, NOTARY_ISSUER, or SPARKLE_ED_KEY_FILE.

Homebrew tap settings:

UPDATE_CASK=1
CASK_REPO=jazzyalex/homebrew-stargazer-bar

To test the full local release path without publishing or modifying docs/appcast.xml:

VERSION=0.2 tools/release/test-release-path.sh

This builds the Release app, signs with Developer ID, packages a DMG and Sparkle ZIP, checksums them, renders release notes, and generates a signed Sparkle appcast under dist/release-path-test. It notarizes when credentials are configured; set REQUIRE_NOTARY=1 to fail the test if notarization is unavailable.

License

BSD 3-Clause · See Third-Party Notices

Made with care for people who like their tools small and quiet.