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.
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.
BetterLGTMCriticalA 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
In short
- Adds an
Idempotency-Keyheader toPOST /v1/charges. - Caches the first response in Redis for 24 hours.
- Repeats with the same key get the cached response.
Needs your attention
- CriticalConcurrent retries can double-charge
store.ts:19 - HighKeys aren't scoped to the merchant
keys.ts:12 - Contradicted“Safe to retry, even when requests arrive concurrently.”
- Partly“Keys are stored in Redis for 24 hours.”
Thanks, this is close. The lock below closes the race; the merchant scoping can follow in its own PR.
The pull requests here are samples. Use the tabs, or the arrow keys, to step through a review.
How a review goes
-
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.
-
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.
-
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.
-
You read the change
Section by section, with a line on what each one does. Ask about anything in the chat as you go.
-
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.
-
Claude Code
AnthropicRuns with a fixed list of read-only tools, and can stop automatic analyses at a spending limit.
claude -pSupported -
Codex
OpenAIRuns in Codex's read-only sandbox. It may search the web while it reviews.
codex execSupported -
Gemini CLI
GoogleRuns in Gemini CLI's read-only plan mode.
gemini -pExperimental
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
| Task | By hand | With BetterLGTM |
|---|---|---|
| Getting the code | Stash 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 description | Read it, then hunt for the code behind each claim. | Every claim is marked as matching, partly done or contradicted, with the lines. |
| Reading the diff | Files in alphabetical order, generated ones included. | Related edits in sections, each with a line on what it does. |
| After the author pushes | Re-read it and try to remember what you flagged. | See only the new commits, and which findings are fixed. |
| Posting the review | Copy 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
- Re-check findings. After the author pushes, see which are fixed and which are still open.
- Risk and tests. The risk level and why, the sensitive areas touched, and what's tested.
- Your own pull requests. See what's blocking merge, self-review, and let the agent write the description.
- Your team's guidelines. The analysis follows a repository's REVIEW.md or the review part of CONTRIBUTING.md.
- Linked issues. Requirements from the issues a PR closes are checked like description claims.
- A full diff view. Unified or split, whitespace hiding, and regex search across the repository.
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
ghand 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
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
Windows
Installer Windows InstallerNot signed yet. If SmartScreen warns, choose More info › Run anyway.
Older versions and release notes are on the releases page.