Not just Looks good to me. Mean it when you say lgtm.

A desktop app for the pull requests waiting on your review. Your coding agent checks the description against the code, so you know what to read first.

Download for free
brew install --cask drmas/tap/betterlgtm

Free and open source, for macOS, Windows and Linux. Needs the GitHub CLI and Claude Code, Codex or Gemini CLI, signed in.

acme
Add idempotency keys to charge endpointpayments-api #482 High
Bump terraform AWS provider to 5.80infra #77 Medium
Move settings page to the new layoutweb #1291 Medium
Request changesConcurrent retries can still double-charge.
Needs your attention
CriticalConcurrent retries can double-charge
HighKeys aren't scoped to the merchant
Contradicted“Safe to retry concurrently”
Matches“Repeats get the cached response”
src/idempotency/store.ts
18 export async function save(key, res) {
19 const existing = await redis.get(`idem:${key}`);
BetterLGTMCritical
Two requests with the same key can both miss the cache before either saves, so both charge the card.
20 if (existing) return JSON.parse(existing);
21 await redis.set(`idem:${key}`, …);
A sample review in BetterLGTM: the inbox, the verdict and findings for an idempotency change, and the line the critical finding is about.

A review in BetterLGTM

Pull requests waiting on you, sorted by risk. A review requested from your team counts too.

  • Add idempotency keys to charge endpointacme/payments-api #482 · mira-k · requested 2h ago+214 −38CI passingHigh risk
  • Bump terraform AWS provider to 5.80acme/infra #77 · dev-ops team · requested 5h ago+6 −6CI failingMedium
  • Move settings page to the new layoutacme/web #1291 · tom-r · requested 1d ago+512 −470CI runningMedium
  • Fix typos in the CLI referenceacme/docs #305 · ana-p · requested 1d ago+9 −9CI passingLow

The pull requests here are samples. Use the tabs, or the arrow keys, to step through a review.

How a review goes

  1. A review is requested

    It lands in your inbox, directly or through a team, with CI, size and a risk estimate on the row. You get a notification when it's requested again.

  2. It's checked out on its own

    Each pull request gets a git worktree next to a shared clone, so the agent reads real files, not just the diff.

  3. Your agent reads it

    It checks every claim in the description against the code and ranks the findings by severity. With auto-analyze on, this happens before you open it.

  4. You read the change

    Section by section, with a line on what each one does. Ask about anything in the chat as you go.

  5. You approve, and mean it

    Post the review to GitHub with the findings you picked as line comments, or request changes.

Bring the agent you already use

BetterLGTM runs the coding agent you've installed and signed in to, on your own plan. Pick one when you first open the app, and switch any time in Settings. The review, chat and drafts work the same with each.

Whichever you choose, it can't edit your files or post to GitHub: the app posts your review through gh, and only when you press Submit. Each review stays with the agent that started it.

Does the code do what the description says?

Each claim is marked as matching, partly implemented, or contradicted by the code. When one doesn't hold, you get the reason and the exact lines.

Contradicted by the code

“Safe to retry, even when requests arrive concurrently.”

Two requests with the same key can both miss the cache before either saves, so both charge the card.

What changes when you review with it

TaskBy handWith BetterLGTM
Getting the codeStash your work, fetch the branch, check it out, switch back later.Each pull request gets its own worktree. Your branch stays as it was.
Checking the descriptionRead it, then hunt for the code behind each claim.Every claim is marked as matching, partly done or contradicted, with the lines.
Reading the diffFiles in alphabetical order, generated ones included.Related edits in sections, each with a line on what it does.
After the author pushesRe-read it and try to remember what you flagged.See only the new commits, and which findings are fixed.
Posting the reviewCopy your notes into line comments one by one.Pick findings, edit them, and post one review with suggested fixes.

Ask about the line you're on

The chat knows which finding, section or file you're looking at, and the agent can read the whole repository to answer.

How would you fix the double charge?

Take a short lock on the key before charging: SET idem:lock:{key} NX EX 30 in store.ts:19. A second request that can't get the lock waits for the first response instead of charging again.

Review without reaching for the mouse

Vim-style keys move through the inbox, findings and sections whenever no text field has focus. Turn them off in Settings if they're not for you.

jk
Move through the list
nN
Next or previous finding
][
Next or previous file or section
x
Mark reviewed
a
Add a finding to the review
S
Submit the review
⌘K
Go to a PR, finding, file or command
?
Show every shortcut

Also in the app

What it leaves out

BetterLGTM runs on your machine with the gh and coding agent you've already signed in to.

  • No An account and a serverIt talks to GitHub through your gh and to the model through your own agent CLI. Your code and tokens never pass through us.
  • No Your code in our statsThe app counts opens, reviews and a few actions, anonymously. Never code, findings, chat or repository and PR names. Turn it off in Settings › General.
  • No Touching your working copyEach pull request has its own worktree. The branch you're on stays exactly as you left it.
  • No Write accessThe agent can read, search and look at git history. It can't edit files or comment on GitHub.
  • The source, MIT licensedRead it, file an issue, or send a pull request on GitHub.

What's new

When a new release is out, the app offers to install it. Full changelog

  1. 0.6.1 Large review queues load again

    With a few hundred review requests, the inbox loads them 25 at a time instead of failing when GitHub gives up on the search.

  2. 0.6.0 Shortcuts you can see

    Hold ⌘ or Ctrl to see each button's shortcut, a summary of what's new after each update, and anonymous usage stats you can turn off.

  3. 0.5.1 Generated files and tests out of the way

    The guided review skips lockfiles, build output and tests, you can add your own generated-file globs, and tabs show two columns wide.

  4. 0.5.0 Choose your coding agent

    Review with Claude Code, Codex or Gemini CLI, set up on first run with a sample review to try, and findings that are double-checked against the code.

  5. 0.4.3 Fixes for the window, hidden lines and reviews

    The window closes again on macOS, hidden lines in the diff show the right code, and Open in editor works.

  6. 0.4.2 Native on every platform

    The system's own window, menu bar and right-click menus, a Settings window on macOS, and shortcuts that use your platform's keys.

  7. 0.4.1 Faster startup, PR switching and diffs

    The inbox shows its last copy right away, recently opened PRs reopen instantly, and long files render as you scroll.

  8. 0.4.0 Your own pull requests

    See what's blocking merge, self-review before asking for reviews, let Claude draft the description, and reply to feedback.

  9. 0.3.0 Suggested changes and auto-analyze

    Post small fixes the author applies in one click, and have new review requests analyzed before you open them.

Questions

What does it cost?

The app is free and MIT licensed. Analyses use your coding agent's plan or API usage, and the status bar shows the tokens each pull request used. Auto-analyze is off by default for that reason.

Where does my code go?

Your agent reads it from a local worktree through your own claude, codex or gemini, the same as when you use it yourself. BetterLGTM has no server and never sees your tokens.

Can the agent change my code or post on GitHub?

No. Claude Code can only read, search and run read-only git commands like git log and git diff, Codex runs in its read-only sandbox, and Gemini CLI in its read-only plan mode. Reviews are posted by the app, through your gh, when you press Submit.

Does it follow our review guidelines?

Yes. It reads a repository's REVIEW.md or the review section of CONTRIBUTING.md and says which file it used. You can add your own instructions, globally or per repository, in Settings.

Where is everything stored?

Clones and worktrees live in ~/.betterlgtm, analyses and chats in the app's data folder, and settings in the app's own storage. You can move the folder or clear everything from Settings.

Can I build it myself?

Yes. You need Rust, Node.js 22 and the Tauri prerequisites, then npm install and npm run tauri dev. See CONTRIBUTING.md.

Download BetterLGTM

Free. Version 0.6.1. The app updates itself from here on.

macOS

Apple silicon.dmg, 3.3 MB Intel.dmg, 3.6 MB

Signed and notarized by Apple.

Windows

Installer.exe, 2.7 MB Windows Installer.msi, 3.6 MB

Not signed yet. If SmartScreen warns, choose More info › Run anyway.

Older versions and release notes are on the releases page.