Know which pull requests are waiting on you.

Steward turns your GitHub notifications into one row per pull request, sorted by whether it’s your team’s work and whether its current state needs you. Each row tells you which rule put it there.

For macOS · Requires the GitHub CLI · One-time purchase

Steward’s inbox with 21 sample pull requests grouped into Needs My Eyes and FYI, each split into My Team and External. The selected pull request explains why it’s there: your review is requested, and the author is on your team.
The current build with synthetic data. The screenshot follows your system’s light or dark setting.

Two questions for every pull request

Is the author on one of your teams? Does the pull request need something from you right now? GitHub’s notification reason is one input to the second question, not the answer.

How Steward groups pull requests
My teamAuthors on the teams you pick ExternalEveryone else, bots included
Needs my eyesWaiting on your review or reply

A teammate asked for your review, or something changed after you approved.

  • Review requested
  • Re-review
  • Changes requested
  • Mentioned

Another team asked for your review, or for your team’s.

  • Review requested
  • Team review
  • Team mentioned
FYIUseful to know, nothing owed

Your team’s work, moving along without you.

  • You approved
  • Approved
  • Merged

Wider activity you can skim later or skip.

  • Subscribed
  • Request resolved
  • Closed

Same comment notification, different answer

GitHub sends both of these with the reason comment. Steward checks the reviews and the pull request’s current state, then tells you what the notification means for you.

Detail for “Move checkout to server components”. Why it’s here: Needs My Eyes, My Team. @bob requested changes after you approved. GitHub reason: comment. Reviewers: @bob requested changes 1 hour ago; you approved 2 days ago.
Needs my eyes Bob requested changes after you approved. Your approval no longer settles it.
Detail for “Add Storybook stories for checkout”. Why it’s here: FYI, My Team. You approved; it’s waiting on others, not you. GitHub reason: comment. Reviewers: @jordan commented; you approved.
FYI You approved, and a new comment doesn’t change that. It’s waiting on someone else.

The rules, in order

Checked from top to bottom; the first match decides. There’s no model and no score, so the same inputs always produce the same row.

OrderWhenResultThe row says
1You opened it, or it’s still a draftHiddenNo row
2You or one of your teams was mentionedNeeds my eyes“You were mentioned.”
3It merged or closedFYI“Merged — nothing left for you to do.”
4Someone requested changes after you approvedNeeds my eyes“@bob requested changes after you approved.”
5Your review is requested, but you approved the latest commitFYI“Your review is requested, but you already approved these changes.”
6Your review, or your team’s, is requestedNeeds my eyes“Your review is requested.”
7You’re involved, and changes were requested since your last reviewNeeds my eyes“@bob requested changes since your last review.”
8You’re involved, and it lost an approval it hadNeeds my eyes“This pull request was approved, but changes have since been requested.”
9Your own review is the latest activityCleared“Your own review is the latest activity.”
10Fully approvedFYI“Fully approved — you’re not blocking it.”
11You approved, and others haven’t yetFYI“You approved; it’s waiting on others, not you.”
12Anything else: comments, CI, subscriptionsFYI“New comments that don’t change your responsibility.”

Mentions and lost approvals stay in Needs my eyes until you mark them Done, even if quieter activity arrives later. When pull-request details can’t be loaded, Steward falls back to GitHub’s reason and says so on the row.

Local-first, built on gh

Your inbox lives in a database on your Mac. Everything that touches GitHub goes through the CLI you’re already signed into.

GitHub access
Steward runs gh for every request. It never reads, stores, or logs your token, and there’s no Steward account to create.
Storage
Rows, history, and pending actions live in a local SQLite database. GitHub remains the source of truth for shared activity.
Sync
On launch, every 10 minutes, and whenever you press ⌘R. The first sync reads the last 30 days of notifications.
Writes
Two, both on request: Done marks the notification thread done, and Unsubscribe drops your subscription. They wait a moment before sending, so a quick ⌘Z cancels them. Read state stays local.
Scope
Pull-request notifications only. Your own pull requests and drafts stay out; a draft appears once it’s ready for review.
Teams
“My team” means the teams you pick. A 2,000-person org-wide team doesn’t count unless you choose it.

Keyboard

JK
Next and previous pull request
[]
Previous and next section
↩
Open in GitHub
E
Mark done
⇧E
Mark the whole section done
U
Toggle read
M
Unsubscribe
X
Select; ⇧J ⇧K extend
⌘Z
Undo; ⇧⌘Z redo
⌘K
Command palette

GitHub API details it handles

  • A re-delivered notification doesn’t bring back a pull request you marked Done. Genuinely newer activity does.
  • GraphQL can return data and errors in the same response. Steward keeps what loaded and marks which context is missing.
  • A thread can keep its mention reason through later activity, so only a change into mention counts as a new mention.
  • If team membership can’t be loaded, authors are treated as external and the row says why.

Pay once

$10 at launch, then $20. One purchase covers every future update. There’s no subscription and no account.

I built Steward for my own review queue and use it every day. It’s a small app, and I plan to keep maintaining it.

Steward for macOS

$10 Regular price $20 · USD, one-time

  • Everything in the app today
  • Every future update
  • No subscription or Steward account

Questions

What do I need to run it?

A Mac, a GitHub account, and the GitHub CLI installed and signed in (gh auth login). Steward uses that login.

Does it use AI to sort my inbox?

No. Classification is a fixed set of rules over the pull request’s state and your reviews, listed above. Every row shows the rule that matched.

Does Steward review code?

Not yet. Today it’s the inbox, and opening a pull request takes you to GitHub. A review workspace, then optional review with your own local agent tools, come after.

Which notifications does it show?

Pull requests only: no issues, releases, Actions, or discussions. Pull requests you opened are left out of the inbox.

Couldn’t I build this myself?

Yes. A list of your pull requests is an afternoon’s work. Trusting it every morning takes longer: classification rules that hold up, sync that survives a flaky connection, undo that cancels a write before it reaches GitHub, and the API quirks above. Steward is that work, maintained.

Is it really a one-time purchase?

Yes. $10 at launch, $20 after, and every future update is included.