Pull requests, tasks and parallel agents · on your Mac
You're the reviewer. Pruse keeps up with you.
Every pull request from all your repositories on one board, and a diff that keeps up with your keyboard.
Investigate with Claude Code, turn what it finds into a plan you edit, and hand it back step by step,
each in its own worktree. It never runs anyone else's code.
Everything a careful reviewer wants. Nothing that reviews for you.
Every repository, one board
Open Pruse and see what needs you across all your repositories — as cards that say, in a sentence, where each PR stands. Filter, hide drafts, or arrange them on your own board: columns you name, cards you drag, kept on your Mac.
Up next#482 Idempotent retriesWaiting for your review.#91 Tenant exportChecks are running.
Waiting on author#479 Ledger writesChanges were requested.
✦
Brief me
A private briefing before you dive in: what the PR does, where to start, the spots worth a close look — and, on a re-review, which open threads look addressed and which don't. It prepares you; the verdict stays yours.
A diff that keeps up with your hands
Virtualized, syntax-highlighted, unified or side by side, whitespace hidden if you like — and images shown before and after. Move with jk, jump files with np, mark viewed with v and glide to the next file, comment with c.
jknext / previous change
npnext / previous file
vviewed, and on to the next
whide whitespace-only changes
aask about the selected lines
✎
Drafts that survive new pushes
Comments stay local until you submit. If the author pushes meanwhile, Pruse finds your lines again by content and moves them.
❝
The whole conversation
Description, checks, reviews and threads in one calm column — outdated threads right where they were said. Reply, resolve, and jump from any thread to its line.
Merges that can't surprise you
Merge, squash or rebase from the Conversation tab. Pruse tells GitHub exactly which commit you looked at — if someone pushed after you, the merge is refused instead of shipping code nobody reviewed.
You reviewed a41c9e2
Author pushed 7f03b1d
Merge refused — review the new commit first
Re-review
Force-pushed? Rebased? See only what's new.
Submitting a review pins the exact commit you saw. When the author pushes again — even a rebase — Pruse shows Changed since your review and diffs just that.
What happened
What you read
All changes251lines · 4 files
Since your review3lines · 1 file
Survives force-pushes
The commit you reviewed is pinned in your clone, so rewriting the branch can't make it disappear.
Rebase-aware
Your old changes are replayed onto the new base first. What the base brought in stays out of your way.
Viewed stays viewed
Files you already ticked keep their check — unless their content actually changed.
Parallel work
Agents write in worktrees. You review as they go.
Give Claude Code a task in its own worktree, keep reviewing, and come back when it needs you. Ask it to put its plan into Pruse: edit the steps beside the chat, start each one, and watch it tick them off. Its changes land in a live diff; committing stays yours.
Worktrees
ledger-export✦ Needs you · approve plan
fix/refund-rounding✦ Working · fixing rounding test
Fix CSV export on Safari 1. Replace the a[download] click with a Blob URL 2. Revoke the URL after the download starts 3. Test: export triggers a download in WebKit
Yes, manually approve editsYes, and use auto modeNo, keep planning
Plan · 3 to go
In progressFix CSV export on Safari2/3
Use a Blob URL for the download
Revoke it after the download starts
Test: export downloads in WebKit
To doHandle empty reports0/2
Work on this now
To doExcel export0/4
Work on this now
Worktrees where you keep them
New ones go next to your existing ones — .claude/worktrees/ if you use claude -w. Your checkout hooks run as usual.
Claude Code, your way
Its own tools and your settings. Manual, Accept edits, Plan or Auto; plans shown in full before you approve. Paste screenshots, keep typing while it works (messages queue), and resume any session. Your plan's 5-hour and weekly limits sit in the title bar.
Your dev servers, one click
Scripts from every folder of a monorepo, saved commands, Run all. Logs and the real port for each; running a script in one worktree moves it off the others.
Git that can't lose work
Discard with Undo, stash & switch branches, amend or undo only what isn't pushed, hooks shown live as they run. Commit messages and PR descriptions follow your repo's template and rules.
Your commands
Type / for your repo's commands and skills, Claude Code's own and your plugins' — with their arguments.
Every repo, one keystroke
A rail with every repository you work in — your own labels and colors, badges for agents, reviews and running servers. ⌘1–⌘9, or ⌘K for any repo, worktree or PR. Local repos without GitHub work too.
Tells you when it matters
An agent needs you or finished, a dev server crashed, a review is requested, news on your PR. On your Mac — and on your phone through ntfy when you're away.
A real terminal
Your own shell in every worktree — colors, nvim with its icons, anything interactive. Several per worktree, and they keep running while you look elsewhere.
Tasks
Plan the work. Hand it over when you're ready.
Write down what needs doing — or have Claude put its plan here — link what comes after what, and give a task to Claude Code in a new branch and worktree, or let the next one start by itself once you've checked the last.
To do 3Excel exportafter CSV exportRate-limit webhook retriesNext upDrop legacy v1 refunds
In progress 2CSV export for reports✦ working · task/csv-exportFix login on Safari✦ needs you · task/safari-login
In review 1Design the export API#491 · 3 changed
Done 6Set up CI cache
Excel export
AfterCSV export for reports ✕+ another
How Claude runs itWhere “CSV export” runs (task/csv-export)New branch and worktreeMain checkout
Add an Excel export next to the CSV one. Reuse the column mapping; test with a 10k-row report.
Start by itselfNoWhen it's in review or doneWhen its agent finishes
A list or a board
Drag between To do, In progress, In review and Done. The order is your priority.
Linked by you
“Do this after that.” Cards show what they wait for; nothing is picked for you.
Saved per card
Where it runs, the branch, the mode and the first message — /commands too. Start now, or by itself when the one before is reviewed or its agent is done.
Live on every card
Working, needs you or finished, steps ticked off as Claude goes, the branch and what changed — straight from its worktree.
Principles
Other people's code never runs. Your worktrees are yours.
Pull request checkouts are untrusted: there, the agent can only read and search, and Pruse runs nothing — enforced from outside, in layers. In your own worktrees, Claude Code works as you know it, and asks before every change unless you choose a mode that doesn't.
01
Only three tools exist
The session is created with Read, Grep and Glob. There's no shell, no editor, no web fetch to misuse.
02
Nothing loads from the repo
No project settings, hooks, instructions or MCP servers — a malicious PR can't configure the agent that reads it.
03
Every other request is refused
Anything that isn't a read inside the checkout is denied — and shown to you, so you see what it tried.
04
No doors on the client
Pruse advertises no terminal and no file writing to the agent. There's nothing to ask for.
0servers of ours your code touches
0comments posted without your click
1token, from your existing gh login
From the terminal
One command away from any repo.
~/code/payments
$Opening acme/payments#482 in Pruse…$ pruse inbox REVIEW REQUESTED
#482 Idempotent retries for webhooks maya +214 −37
#479 Split ledger writes by tenant theo +88 −12$ pruse diff # your own uncommitted changes
Get Pruse for your Mac.
Free, for Apple Silicon Macs. Signed and notarized by Apple. Everything runs on your machine.
Needs git. For pull requests, the GitHub CLI, logged in (gh auth login) — local repositories work without it. Claude Code is optional — without it, Pruse is simply a great diff.
Should a
409still record the attempt? Otherwise the dashboard shows it as never sent.