What It Does

Lookout sits silently in the menu bar as a binoculars icon. When something on GitHub needs you, the icon switches to a red-tinted filled variant and slowly pulses until the items are resolved.

Click the binoculars to drop a popover with the items grouped by repository — each row showing the kind, title, and how long ago it was updated. Click any row to open it on github.com. The popover’s footer has a Mark all read button that calls GitHub’s notifications API to clear unread state in one sweep.

Three Sources, One Inbox

Lookout polls three GitHub queries concurrently and dedupes the results into a single list:

SourceWhat it covers
Notifications APIThe unified feed: mentions, review requests, assigns, comments, state changes, CI activity on subscribed threads
Review requestedOpen PRs awaiting your review
Failing CI on your PRsYour own open PRs with at least one failing check

Polling runs at the interval GitHub itself recommends (usually 60 seconds), and uses If-Modified-Since so untouched polls don’t burn rate-limit budget. Polling pauses when the system sleeps and resumes — with an immediate refresh — on wake.

Setup

Lookout needs a classic GitHub Personal Access Token. Fine-grained PATs do not work with GitHub’s Notifications API and are rejected by the server.

  1. Create a token at github.com/settings/tokens/new with these scopes: notifications, repo (or public_repo if you only watch public repositories), read:user.
  2. Launch Lookout. A setup sheet asks for the token. Paste it and click Save.
  3. The token is validated against GET /user, then stored in your macOS Keychain (service cc.jorviksoftware.Lookout). It is sent only to api.github.com.

To replace the token later: right-click the menu-bar icon → Re-enter GitHub Token…

Controls

ActionResult
Left-click binocularsOpen the items popover
Right-click binocularsStandard Jorvik menu (About, Refresh, Re-enter Token, Check for Updates, Settings, Quit)
Click an item rowOpen it on github.com
Refresh buttonForce an immediate poll
Mark all readClear every GitHub notification (calls PUT /notifications)

Settings

Right-click the icon and choose Settings… to configure:

Auto-updates are handled by Sparkle. Use the “Check for Updates…” menu item to check on demand; Sparkle’s prompt offers an “Automatically download and install updates in the future” checkbox the first time an update is available. Lookout checks for new versions automatically once a day in the background.

Installation

Two formats on every release — both signed and notarised, pick whichever suits:

After installation, launch Lookout — a binoculars icon appears in the menu bar. On first launch a sheet asks for your GitHub token (see Setup above).

Privacy

Building from Source

Lookout is a Swift app with no dependencies beyond macOS system frameworks. No Xcode project is required.

  1. Clone the repo: git clone https://github.com/PerpetualBeta/Lookout.git
  2. Run gmake build
  3. Launch with open .build/Lookout.app

gmake build drives the shared release.mk pipeline — compiles the Swift sources with swiftc, links against Cocoa, SwiftUI, ServiceManagement, and Security, and signs the bundle with the Developer ID identity.

Requirements