PR Radar Download
macOS menu bar app + desktop widget

A real AI agent reviews your pull requests.

PR Radar lives in your menu bar, shows only the reviews a person actually asked of you, then reads the code and reviews it for you - across your whole organisation, against the ticket the change was supposed to implement.

11 read-only tools Claude or local Off by default

We send the macOS download link to your inbox, which is how we confirm the address is really yours.

A PR Radar desktop widget for a 'work' account reading '3 asked you', listing pull requests with author, repo, PR number, CI status and age. The top row is failing CI and carries the agent's review verdict: a warning triangle badge with the number 2, meaning two blocking findings. Another row shows a review in progress. The same PR Radar widget in dark mode, showing three directly-requested reviews and the agent's verdict badges.

The reviewer

It investigates before it judges

Turn it on and every PR gets a Review button. It is a real agent, not a one-shot diff summary: it reads the change, opens the surrounding files, searches every other repository in your organisation for whoever calls the thing that changed, and follows the work into your ticket, its epic, docs, metrics, flags and infrastructure before it forms an opinion.

prr-diffprr-read prr-reposprr-git prr-grepprr-jira prr-epicprr-confluence prr-datadogprr-ld prr-aws
  • It checks the blast radius. A change is only safe if its callers survive it, and they usually live in another repository. PR Radar mirrors your organisation locally so the agent can go and look.
  • It knows what was asked. It finds the ticket the branch implements and the epic behind it, so it can catch the change that is clean, tested, and not what anyone wanted.
  • Read-only by construction. No write, edit or general file-read tool in a review. Those eleven are its entire reach, and read-only is enforced by the tools rather than requested in the prompt.
  • Claude or local. Run it through Claude Code, or a local model with Ollama that sends nothing to a provider.
  • Never approves for you. Posting is a step you confirm, and it never files an approval in your name.
  • Bounded. A per-review cost ceiling you set on the hosted engine; a turn cap on the local one.
Request changes claude sonnet · $0.41

The retry guard keys on the request id, but the id is regenerated inside the retry loop, so a retried charge takes a fresh id and passes the guard.

blocker src/invoices/retry.ts:88

requestId is regenerated inside the loop, so the idempotency guard on line 94 never matches a retry and the charge is submitted twice.

major src/invoices/retry.ts:120

A 5xx from the payment provider is swallowed and treated as success.

A real review shape: a verdict, a plain-language summary, and findings that each cite a file and a line.

The queue

Only the reviews that are really yours

GitHub's "review requested" inbox counts two things as one number: what a person assigned to you by name, and what merely landed on a team you belong to. PR Radar defaults to the first.

  • Asked-me-directly by default. The team firehose stays one right-click away, as a quiet second line.
  • Oldest request first, not recently-updated, because that is the one someone is stuck on.
  • Bots filtered without a list. On one busy account that cut the team queue from 535 to 146, with nothing hardcoded.
92
reached a team you belong to
3
a person actually asked you

While you were doing something else

The review is already done when you look

Switch it on and PR Radar reviews a pull request the moment somebody asks you by name, and tells you when it has finished. The queue you open is a queue of answers, not a queue of work.

  • Only when a person asks you. Automatic review never fires on the team firehose - on one real account that is the difference between 3 reviews and 92.
  • You are told, once. A standard macOS notification when a review is requested, and when one finishes, with its verdict. A burst of twelve is one notification, never twelve.
  • It stops spending. A ceiling per period that actually halts, because this is a paid agent running with nobody watching.
  • From your phone, optionally. A Telegram bot can take a PR link and hand back the review. It only ever answers accounts you list by numeric id, and with no list it refuses to start rather than answering everyone.
  • It still never posts. Automatic reviewing, yes. Automatic posting, never - that stays a button you press.
322
repositories mirrored locally so the agent can search them
16 GB
on disk, behind a consent screen that shows the number first

Your token

The widget holds no token and cannot reach the network

A macOS widget runs in its own sandboxed process. PR Radar's ships with no network access at all and is never handed a token; it only draws a snapshot the app already fetched. Even the Review button reviews nothing when clicked, it asks the app to.

Your token lives in the macOS Keychain, not a config file. One widget per account, each with its own token, organizations, scope and colour, so a work login and a personal one never mix.

Mirroring an organisation means PR Radar clones and fetches, so it is worth saying exactly who writes where. The agent never writes anything, anywhere - every tool a review is given is read-only, enforced by the tools rather than asked for in the prompt. The app writes only inside the mirror directory it created for itself, under Application Support, one per account. That directory is checked before any git command runs, and it may not overlap a folder you pointed it at to read. There is no git pull, no reset --hard and no clean anywhere in the app, and a clone carrying work that exists nowhere else is reported and left alone rather than synced over. PR Radar cannot corrupt a repository you work in, because the only directory it writes to is one it made.

On the desktop

Legible even when macOS greys it out

macOS desaturates desktop widgets whenever the desktop is not the frontmost window, which, with an editor open, is almost always. So no meaning lives in colour: every status, verdict and stale-request marker is a distinct shape first.

Desktop focused
The widget in full colour. The widget in full colour, dark mode.
Any other window focused
The identical widget flattened to greyscale by macOS, still fully readable because every state is a shape. The greyscale widget in dark mode, still readable.
Same widget, same instant. The verdict badges and status glyphs survive the flattening because each is a silhouette first.

Get PR Radar

Put it on your desktop

Enter your email and we will send the download link. Unzip, drag to Applications, paste a GitHub token, and drop a widget on the desktop.

macOS 15 or laterApple Silicon & Intel Signed and notarized1.3.1-5acc3a7b