Merge Goblin
A Mac menu bar app that reviews GitHub pull requests with the Claude, Codex or Cursor subscription you already pay for, and posts one clearly labelled review with line comments.
Reviewed 500+ pull requests at work. Teammates can run it side by side and each PR is still reviewed exactly once. Installs with one Homebrew command.
Merge Goblin is an AI code reviewer that lives in the Mac menu bar. Press ⌥⌘G, type a pull request number, and it reads the diff, the repository's own review guidelines and the linked ticket, then comes back with a review you can edit before it posts. On a schedule it also picks up the pull requests where you are a requested reviewer.
It drives the AI command-line tool you are already signed into (Claude, Codex or Cursor), so a review costs nothing beyond a subscription you already pay for. It posts one clearly labelled review with comments on the exact lines, never approves or blocks, and teammates can all run it without anyone's pull request being reviewed twice.
Tech Stack
Key Features
- Review any pull request by number from a global shortcut, with a preview you can edit before anything is posted
- Background reviews of the pull requests that ask for your review
- One grouped review with line-anchored comments and suggested changes, plus a check of whether the change does what its ticket asked
- Follows the repository's own review guidelines, with no config
- Works with Claude, Codex or Cursor; switching provider is one click
- Off switch, snooze, daily spend cap and a one-click health check in a native SwiftUI menu bar app
Technical Highlights
- The model gets a read-only checkout and returns JSON; it never touches GitHub, so providers are swappable and the verdict is safe
- A skeptical second pass tries to disprove each finding against the source before an unattended review posts
- Team mode assigns each pull request to one teammate by hash, and an atomic git-ref claim guarantees it is reviewed only once
- The GitHub token is kept out of the model, and hostile pull request titles cannot break notifications
- Self-update checks the release checksum (and, once releases are signed, the signing team) before it swaps the app
- Shell engine runs on the Bash 3.2 that ships with macOS, covered by about 150 shell tests plus XCTests
Architecture
Engine
- launchd runs the scheduled review cycle
- Pick pull requests, assign one owner, claim it with a git ref
- Build the prompt from the annotated diff, the repo's rules and the linked issue
- Validate the findings, drop lines that cannot be commented on, post one review
Menu bar app
- SwiftUI app that reads the engine state and drives it through the CLI
- Review window with a preview to edit, drop or post each finding
- Settings for providers, models, repositories, teammates and spend
- Distributed as a Homebrew cask and a DMG
Challenges & Solutions
Making a review useful enough that people read it rather than mute it
Keeping a model that reads a stranger's pull request away from tokens, a shell and the network
Letting a whole team run it without double reviews or wasted spend
Staying reliable on a laptop that sleeps, hits AI usage limits and sometimes runs a slow model
Gallery