Review what needs you. Skip what doesn’t.
Steward is a Mac app for engineers who get tagged on everything. It turns GitHub’s notification pile into a short, sorted inbox, then lays out each diff in the order it should be read.
vs. GitHub notifications
Why not just use GitHub notifications?
GitHub tells you something happened. Steward tells you whether it’s your problem.
01
Less noise
Every pull request lands in one of two piles. Needs my eyes: something is actually waiting on you. FYI: worth knowing, nothing owed. GitHub sends both of these as comment. Steward reads the reviews and tells them apart.
02
Sorted by what you owe
Your team’s asks come first, then other teams’, then the FYI pile you can skim or skip. You pick which teams count. Open the app, start at the top, stop when the orange runs out.
21 notifications8 need you
- 1Needs my eyes · My team4
- 2Needs my eyes · External4
- 3FYI · My team6
- 4FYI · External7
Layered diff
Your agents write code faster than you can read it.
So let one read it first. Steward hands the diff to your own Claude Code or Codex and gets back a reading plan: foundations, then logic, then wiring, then config. You still review every line. You just stop reading them alphabetically.
GitHub’s order
Alphabetical. Great for dictionaries.
- config/default.yaml
- db/migrations/20261014_add_charge_attempts.sql
- docs/images/retry-flow.png
- docs/runbooks/gateway-timeouts.md
- src/charges/charge-service.ts
- src/charges/idempotency.ts
- src/config/schema.ts
- src/db/charge-attempts-repo.ts
- src/gateway/client.ts
- src/gateway/errors.ts
- src/retry/policy.ts
- test/charges/charge-service.test.ts
- test/gateway/client.test.ts
- test/retry/policy.test.ts
The retry policy is file 11. Its test is file 14. The YAML goes first because C comes before D.
Steward’s order
Built up, the way it was written.
- 1FoundationRecord every charge attempt2 files
- 2Core logicDecide which failures are safe to retry3 files · 1 test
- 3WiringSend a stable idempotency key2 files · 1 test
- 4WiringRetry charge submission through the policy1 file · 1 test
- 5ConfigConfiguration and defaults2 files
- 6ChoreRunbook2 files
- Added by StewardRemaining changes1 hunk
Tests sit next to the code they test. One toggle shows only the app, only the tests, or both.
-
What to verify, not what changed
Every layer opens with the thing to check (“a failed attempt is recorded before the error propagates”), then the code.
-
Shape first, bodies later
Method bodies and test setup fold away, so you read signatures before details. Real language servers for TypeScript, JavaScript, and Ruby. Z unfolds everything.
-
Nothing slips through
The model can be lazy. It can’t hide a hunk. Anything it leaves out lands in “Remaining changes”, added by Steward.
-
Your agent, on a short leash
Runs your local
claudeorcodexin an empty folder with its tools off, only when you press Generate. No Steward server, no API keys, no extra AI bill.
The obvious question
“Can’t I just vibe code this?”
You can. You’ll have a list of pull requests by Saturday lunch. Here’s Sunday.
Steward is that Sunday, a few hundred times over. It costs about what you’d burn in tokens finding all this out.
Skip the weekend- Fetch notifications with
gh - Show them in a list
- Work out why a pull request you cleared came back (GitHub re-delivered it)
- Handle GraphQL returning data and errors in the same response
- Notice a thread keeps its
mentionreason forever, so every comment looks like a mention - Stop the 2,000-person org team from making everyone “your team”
- Make ⌘Z cancel a write before GitHub ever sees it
- Have an agent order a 1,500-hunk diff, then prove it didn’t skip any
- Feed it untrusted diffs without handing it a shell
- Fold code with real language servers, not a regex you’ll regret
- Use it every morning. Fix what breaks. Repeat.
Pricing
$10. Once.
Launch price, then $20. Every future update included. No subscription, no account, no “book a demo.” Try it free for 14 days first.
I built Steward for my own review queue and use it every day. It’s a small app, and I plan to keep it sharp.
Steward for macOS
$10 Regular price $20 · USD, one-time
- The inbox and layered diffs
- Every future update
- Bring your own Claude Code or Codex
- No subscription or Steward account
14-day free trial, everything on. Less than an hour of reading the wrong pull request.
Questions
What do I need to run it?
A Mac and the GitHub CLI, signed in (gh auth login). For layered diffs, Claude Code or Codex installed and signed in too. Steward uses those logins; there’s no Steward account.
Does AI decide what’s in my inbox?
No. The inbox runs on twelve fixed rules, and every row says which one matched. AI only orders a diff, and only when you ask it to.
Does my code go to your servers?
No. The app only checks getsteward.dev for updates and refunds, and sends nothing about you or your code. Diffs come from GitHub through gh. If you generate layers, they go to your own Claude Code or Codex, which talks to its provider the way it always does. Your inbox lives in a database on your Mac.
Can I review without leaving Steward?
Read the layered diff, approve (A), mark done (E), or unsubscribe (M) from the keyboard. Comments and change requests still happen on GitHub; ↩ takes you there.
Which languages fold?
TypeScript, JavaScript, and Ruby today. Everything else shows the full diff, still in layers.
Is it really a one-time purchase?
Yes. $10 at launch, $20 after, and every future update is included. One key works on all your Macs.
Can I try it first?
Yes. Download it and you get 14 days with everything on, no key or card needed. When the trial ends, Steward locks until you add a key; your inbox stays on your Mac, so buying picks up where you left off. Changed your mind after paying? Refunds within 14 days.
I lost my license key.
It’s in the email you got after buying. Can’t find it? Enter the address you paid with and we’ll send it again.