Every commit is a PR
Each commit gets a Conversation tab and a Files changed tab, numbered and grouped into colour-coded stacks: one PR per commit, the way the stack will go up on GitHub.
Open source · MIT · runs on your machine
Local Review shows every commit on your branch as its own pull request, grouped into the stacks you mean to open, in a GitHub-style review UI that runs on your machine.
Comment, get your agent to fix things, and mark PRs ready while it is still just you and your agent. Nothing goes to GitHub until the stack is right.
$ npx local-review Needs Node 22+ and git. Reads your repos, never writes to them. Set up your first project
Why Local Review
Your agent writes the commits. You review them as the PRs they will become, on your own machine, and nobody else sees a thing until the stack is right.
Each commit gets a Conversation tab and a Files changed tab, numbered and grouped into colour-coded stacks: one PR per commit, the way the stack will go up on GitHub.
One project can span several repos, each with its own branch and stacks, so a change that touches the API, the client and the infra is reviewed as one piece of work.
Comments are plain YAML files. Your agent reads them, fixes the commits and replies in the same files, and its replies appear in your browser as it works.
Local Review never fetches, checks out, commits or rebases. All git access goes through one read-only allow-list, so it cannot touch the repos it shows you.
Local Review never talks to GitHub and only answers on localhost. It never deletes your review, and snapshots it every hour that something changes.
When a stack is ready, your agent opens it as GitHub stacked PRs with the titles and descriptions you approved, one stack at a time, then records what it created.
How it works
A project is one YAML file: the repos involved, the branch to review in each, and where each stack starts. Pick stacks by commit subject and they survive every rebase.
Read the diff with split or unified views, comment on a line or a range, resolve threads and tick files as viewed. Readiness badges show where every PR in every stack stands.
Hand the project to your coding agent. It reads your threads, fixes each commit where it stands and answers in the review files. Threads follow their code through the rebase.
Mark each PR ready. The plan command prints every branch, base, title and body, and on your go-ahead your agent opens the stack on GitHub and records each PR back in Local Review.
Works with your agent
There is no plugin and no API key. Local Review keeps your review in YAML files under ~/.local-review, so any coding agent that can read and write files can take part: Claude Code, Codex, or the next one.
local-review guide prints the agent guide: the data model, how to answer threads, how to fix a commit mid-stack, how to publish, and what to do after merges.
local-review plan prints exactly what each PR should be on GitHub, as Markdown, JSON or YAML, so publishing is mechanical.
Paste the hand-off prompt into your agent and it works through your open threads the way the guide says: fix, reply, resolve only what it should.
threads:
- id: t-1a2b3c4d
path: src/config/loader.ts
side: right
line: 42
resolved: false
comments:
- id: c-5e6f7a8b
author: ada
body: |
This swallows the parse error. Can we
surface the file name and line instead?
- id: c-9d0e1f2a
author: claude
body: |
Done in the amended commit: the error now
reads "config.yaml:12: unexpected key". Get started
One command starts it. Point a project at the branch your agent just wrote, and every commit on it is a PR you can review, in the stacks you mean to open. Your repos are only ever read.
$ npx local-review Needs Node 22+ and git. Reads your repos, never writes to them. Set up your first project