PullPing

Know when your pull requests need you, across every GitHub account.

A menu-bar inbox for every GitHub pull request you are involved in: the ones you opened, the ones waiting for your review, the ones you commented on or were mentioned in, across as many accounts as you have. Issues you opened, are assigned to or comment on come along too. Calm panels tell you what happened, a reminder nudges you until you review, and an optional phone push reaches you away from the Mac.

brew install --cask roypadina/tap/pullping

Version 0.4.0, released 30 October 2026. macOS 14 or later, Apple Silicon and Intel. Free and MIT licensed.

The PullPing menu-bar panel: pull requests grouped as Mine and To Review, with Changes requested, CI failed, Approved and Merged chips, an unread dot, and account tabs for two accounts.

See it work

Pull requests that need you, counted in the menu bar.

A review request arrives, then the panel with Mine, To Review and Involved, and the Work account on its own.

Why PullPing

  • Every account, one inbox

    Personal and work, each with its own token. PullPing tracks every pull request you opened, are assigned to, were asked to review, commented on or were mentioned in, and the issues you opened, are assigned to, comment on or were mentioned in, marked with an Issue chip. See them all together, or one account at a time, in the menu-bar panel and in a Mail-style main window with filters for Mine, To Review, Involved, Recently Closed, Muted and Hidden.

  • A count that means something

    The menu-bar number counts only what needs you: review requests, unread assignments and mentions, your own pull requests with changes requested, failed CI, new comments, or ready to merge, and new comments on your issues. The panel header spells it out, for example “1 to review · 1 changes requested”. Pick which reasons count, count everything unread, or show no number, in Settings. Lists put what needs you first; merged, closed and settled pull requests wait in a Done group.

  • Calm panels, and a nudge when it matters

    A small panel appears at the top right and never takes keyboard focus. For each kind of event, label changes included, pick Off, Banner (hides itself) or Alert (stays), separately for what you opened and for the rest. While your review is requested, PullPing reminds you again, every hour by default, until you review. Snooze, mute or hide any pull request or issue from the panel, the menu bar or the main window.

How it works

Every kind of event has its own style. These are the defaults.

Your review is requestedan Alert panel, then a reminder every hour until you review
Changes requested or CI fails on your pull requestan Alert panel, and it counts in the menu bar
A comment or an approvala Banner that hides itself after 8 seconds
A label change, or a close on an issue you openeda Banner; a closed issue shows Completed or Not planned

The first sync of an account is silent: PullPing learns what already exists and only tells you about what happens afterwards, and issues you were already part of arrive the same way. Your own actions never notify you, and several events on one pull request merge into one panel. Mute keeps a pull request listed but silences it and leaves it out of the count. Hide removes it from every list and count, but it still notifies you.

PullPing asks GitHub every 3 minutes by default (1 to 15 in Settings) and checks again right after your Mac wakes or the network returns, so an event can arrive up to one interval late. Away from the Mac, an optional phone push goes through ntfy: choose the kinds of event to send, separately from the desktop style. Nothing is sent until you tick one.

Honest limits: GitHub.com only, no Enterprise Server yet. macOS has no way to detect Focus, so panels appear during a Focus too; use Pause Notifications in the menu-bar icon's menu. CI status can be incomplete with fine-grained tokens, so use a classic token when CI matters.

The window and the settings

The PullPing main window: a sidebar of filters and accounts, the list of pull requests, and the details of the selected one with reviewers, checks and recent activity.
The main window: filters for all accounts and for each one, the list, and the reviewers, checks and activity of the selected pull request.
A PullPing Alert panel: 2 new, requested changes and CI failed, on a pull request, with Open, Snooze and Mute PR buttons.
An Alert panel: two events on one pull request merged into one panel.

On every panel

  • Open opens the pull request in your browser and marks it read.
  • Snooze silences it for 15 minutes, 1 hour, 3 hours or until tomorrow 9:00.
  • Mute PR (Mute Issue on an issue) keeps it listed but silences its panels and reminders.
  • The close button dismisses just that panel. Every action also exists in the menu-bar panel and the menus, for keyboard and VoiceOver use.
PullPing Settings, Notifications: auto-hide time and sound, then Off, Banner or Alert for each kind of event, for your own pull requests and for others.
Settings, Notifications: Off, Banner or Alert for each kind of event, for Mine (pull requests and issues you opened) and for Others.
PullPing Settings, Phone: ntfy server, topic, optional access token and fallback URL, a Send Test Notification button, and a checkbox per kind of event.
Settings, Phone: your ntfy server and topic, a test notification, and which events go to your phone.

Requirements

  • macOS 14 or laterSonoma onwards.
  • Apple Silicon and IntelOne universal download.
  • A GitHub token per accountSign in with GitHub, or a classic personal access token with the repo and read:org scopes, or a fine-grained one. Tokens live in your login keychain and are sent only to GitHub.
  • No macOS permissionsNo Accessibility, no notification authorization, no Full Disk Access. A Welcome window offers Open at Login; PullPing never adds itself silently. No analytics.

First launch

PullPing is not notarized by Apple, which needs a paid developer account (it is ad-hoc signed). So macOS blocks the first launch with a "could not verify" message. Open System Settings > Privacy & Security, scroll down and click Open Anyway. Or clear the quarantine flag once:

xattr -dr com.apple.quarantine "/Applications/PullPing.app"

After that it opens like any other app. If you would rather not trust a download, build it from source.

Questions

Which token do I need, and can PullPing change anything on GitHub?

A classic token with repo (or public_repo) and read:org is the simplest; organizations with SAML SSO also need the token authorized for each organization. Fine-grained tokens work with read access to pull requests, issues, commit statuses and checks, one token per organization. PullPing only reads: it never comments, reviews or merges.

Why did a notification arrive a few minutes late?

PullPing polls GitHub instead of receiving pushes, every 3 minutes by default. Refresh now (⌘R) checks immediately, at most once every 10 seconds, and it also checks after wake and when the network comes back.

What is the difference between Mute and Hide?

Mute keeps the pull request listed under Muted, silences its panels and reminders and leaves it out of the menu-bar count. Hide removes it from every list and count but it still notifies you. Stop Tracking removes it and ignores it from then on; Edit > Undo brings it back.

Does it track issues too?

Yes. Open issues you opened, are assigned to, are mentioned in or comment on sit next to your pull requests with an Issue chip. Comments, mentions, assignments, label changes, renames and closing notify like pull request events, and a closed issue shows Completed or Not planned. Settings, General, Track Issues turns them off.

What does a phone push contain?

The kind of event and repository, the pull request's title, who did what, and a short summary of the latest activity, sent only to your ntfy server (and an optional fallback topic you set). Keep the topic private: on a public server anyone who knows it can read it.

What's new

The latest changes in the changelog. Downloads and checksums: GitHub releases.

0.4.02026-10-30

Added

  • Issues. Open issues you opened, are assigned to, are mentioned in or commented on are tracked next to your pull requests, with an Issue chip on their rows. Comments, mentions, assignments, renames, reopening and closing notify like pull request events; a closed issue shows Completed or Not planned. Settings → General → Track Issues turns them off and removes them from the lists. Issues you were already involved in arrive quietly, marked read.
  • Label changes on pull requests and issues: a new Labels changed kind in Settings → Notifications and Phone (banner on yours, off for others by default).
  • Assigned to me in Settings → General → Count in the Menu Bar: an unread assignment, on a pull request or an issue, counts toward the menu-bar number. New comments on an issue assigned to you count as new comments.

Changed

  • The Notifications and Phone tables call their first column Mine: pull requests and issues you opened.
  • Upgrade only: a 0.3.0 build cannot read state or settings written by this version (state moves to state.broken.json, settings reset).
0.3.02026-10-30

Changed

  • Lists are sorted by what needs you: pull requests waiting on you first, then ones with unread activity, then the most recently active. The panel, the main window and every filter use the same order.
  • Pull requests with nothing left for you move to a Done group at the bottom: merged or closed ones, and others' pull requests you're only involved in once everything is read and no review is asked of you or your team. In the panel Done is collapsed, like Hidden; in the main window it's a section you can collapse, and PullPing remembers your choice.
0.2.02026-10-30

Added

  • The welcome window now says why PullPing exists and shows the app icon, a Ko-fi support box and a wider layout.
  • Welcome Guide… in Settings → General → About reopens the welcome window.
0.1.22026-10-30

Added

  • Settings → General → Count in the Menu Bar: choose which reasons count toward the menu-bar number. Review requests from your team now have their own switch and their own line in the panel header.

Changed

  • Account names you set in Settings now show everywhere: the panel's account switch, row chips, notification panels, the main window sidebar, error lines and phone notifications ("Account: …").
  • The panel's menu button is now ⋯ (More) instead of a gear, with the same items as the right-click menu, including Pause Notifications.

Fixed

  • An empty "PullPing Settings" window could appear after closing Settings or reopening PullPing.
  • The panel header no longer overflows and clips with long account names; the account switch becomes a menu when it doesn't fit.
0.1.12026-10-30

Added

  • Sign in with GitHub: add an account by approving a short code on github.com (OAuth device flow), no personal access token needed. Organizations that restrict OAuth apps may need an owner to approve PullPing first.

Keep the next one coming

If PullPing saves you from a forgotten review, you can support its development. Optional, always appreciated.

I'm a software engineer from Israel who builds small, focused Mac tools to fix the little annoyances in my own day — then shares them free and open source. If this app saves you time, a coffee on Ko-fi keeps the next one coming. ☕

Roy Padina

Buy me a coffee on Ko-fi

Not today? A star on GitHub or a bug report helps too.

What a coffee pays for

  • The Apple Developer Program, so the apps can be notarized and the "Open Anyway" step goes away.
  • Evenings on bug reports, new macOS versions and Intel builds.
  • The next small tool.