Plug and Play Reviewer
Skip to how a review moves

Built for solo devs shipping 2 to 3 pull requests a day

Private AI code review that stays on your machine

A hosted control plane takes GitHub events. Your local runner reads the diff and calls your model. The patch never leaves the machine you trust.

That boundary is not a promise on a slide. CI runs a schema check that fails if source, diffs, or provider keys could land on the hosted plane. See what we store in Privacy.

An open source PR reviewer built for private AI code review. It is AI code review self hosted on a laptop or a server you run.

See how a review moves

How a review moves

GitHub PR to hosted job to local runner to retrieval to review comment. The hosted box never holds the patch.

  1. GitHub PR

    The GitHub App receives the pull request event and the head SHA.

  2. hosted job

    The control plane stores job metadata only. It does not receive the diff.

  3. local runner

    Your runner claims the job, fetches the patch, and keeps the source local.

  4. retrieval

    Repo chunks join the packed diff before the model call.

  5. review comment

    A comment does not post until a human approves it.

Hosted vs local

Source, diffs, and your provider API key stay on the runner. Finding text may sit on the dashboard so you can read it before you approve a post.

Source code

Hosted
Never
Local
Yes, on the runner

Diffs

Hosted
Never
Local
Yes, packed for the model

Your LLM provider API key

Hosted
Never
Local
Yes, in the local key store

GitHub event metadata

Hosted
Yes
Local
Yes, to claim the job

Finding title and rationale

Hosted
Yes, so the dashboard can show it
Local
Produced here

What already works

Grounded findings, suggestion blocks, and the human gate are product rules, not slogans.

Local runner

The model call happens on your laptop or server. Source never goes to the hosted site. The hosted plane only ever learns that a job ran, which repository it was for, and what it cost.

Retrieval

The reviewer gets repo chunks with the packed diff. It is not a diff-only guess.

Grounding

A finding that cannot point at the packed hunk is dropped before anyone sees it.

Suggested fixes

An optional suggested_fix can post as a GitHub suggestion when the replacement applies.

Opt-in specialists

Extra reviewers run only when a repo turns them on. They are off by default.

Human gate

The model cannot mark a finding public. Posting stays a human action.

What teams can change

You can add agents and edit prompts per repository. Those settings stay private to that repo.

Repo A never receives Repo B prompts. This is permissioned team power, not a public dump.

What stays free and what is for teams

A single person running a local reviewer can stay on a simple path. The free tier allows one GitHub user and one repository per installation.

Team controls, shared prompts, and extra repositories are the paid path. There are no prices on this page.

What the evals show

Every finding is scored by a second model call and anything ungrounded is dropped before you see it. The scorecard shows the measured result on a human-judged holdout, with the model and the sample it was run on. That holdout is seven human-judged cases from the Zod repository, so it is evidence, not a published baseline.

Open the scorecard

How to set it up

  1. GitHub App

    Install the GitHub App and pick the repositories it may read.

  2. Hosted URL

    Point the runner at the hosted URL. plug-and-play-reviewer.vercel.app is the live control plane.

  3. Local runner

    Install the runner on the machine that may see your source.

  4. Your LLM provider API key

    The key from OpenAI, Anthropic, Groq or whoever you use. It stays on the runner and never reaches the hosted database.

One-click Render still needs your own secrets and database. Railway starts from a repo import until a public template id exists.

Read the install docs