AI code review

Another PR, another wall of code.

ReviewGate reads it first, by your team's rules. You get what actually needs a human.

in your terminal on the pre-push hook in the pull request

Free · self-hosted · bring your own model key

review inside the agent's loop

The review runs before the pull request exists

Agents write more and more of the code, and waiting for a pull request to learn about a mistake is one round trip too many. The same team rules and the same judge work in the editor: the agent calls the review itself over MCP, and the hook refuses a git push that carries blocking findings. The bot on the pull request stays independent — an agent cannot approve its own work.

$ reviewgate review --json --fail-on major
# one file, no Node and no Docker · macOS · Linux · Windows
how it works

From webhook to review comment in minutes

01

A pull request opens or gets new commits

GitLab or GitHub sends a webhook. ReviewGate answers immediately and queues the job, so nothing times out on your instance.

02

The review runs on your standards

The diff, your team rules from .reviewgate/config.yml and the stack preset go to the model you chose — reached with your key and nothing else. Optional modes (an independent judge, full file context) add whole files to the same prompt; the recipient does not change.

03

Comments land in the pull request

Inline comments anchored to diff positions, a summary grouped by severity, and a gate — a check run on GitHub, a commit status on GitLab — that can block the merge.

precision, not noise

Findings you can trust

A cheap model finds; a strong judge weighs each finding against the real code and drops the false ones, so fewer false positives reach the pull request. A re-push reviews only what changed and does not repeat itself: the bot never spams, and it respects resolved threads.

What else the engine does →
  • two passes: generate → verify
  • judges against the code, not the diff
  • incremental, without spam
  • respects resolved threads
  • one-click fixes (committable suggestions)
three gaps a cloud reviewer cannot reach

Why this instead of a hosted reviewer

NO PER-SEAT PRICE

Self-hosted without a sales call

ReviewGate is free and runs as a single Docker image inside your infrastructure. Competitors charge $24–48 per seat and put self-hosting behind an Enterprise contract; here you pay your model provider and nobody else.

ONE POLICY

The same rules on four surfaces

You write your conventions once, in a file in the repository. That policy reviews the agent in your editor, blocks a bad push from the hook, answers the CLI, and gates the pull request — the same rules and the same judge everywhere, so a local run is judged by what the bot is judged by.

BEFORE THE PUSH

The gate runs before anyone sees the diff

A cloud reviewer can only speak once the pull request exists. The pre-push hook stops blocking findings while the branch is still yours, and your coding agent can call the same review itself and fix what it finds.

stack presets

11 languages and dozens of frameworks, out of the box

Senior-level review on your team's stack: a preset knows the idioms and the usual traps of each language instead of looking for "a bug, any bug". Without a preset it still works on any language through your own rules.

this is how it looks in a pull request
src/app/cart/badge.component.tspreset: typescript
27+ this.cart.items$.subscribe((items) => {28+ this.badgeCount = items.length;29+ });
warning · rxjs-subscription-leak The cart.items$ subscription outlives the component — a leak. Use takeUntilDestroyed() or the async pipe.

The full list of frameworks and the options of every preset are in the configuration reference →

for security teams

Code and diffs are never logged and never leave

Only review metadata is stored — the number of findings, their severity, the statuses. The license is checked offline, with no call home. Air-gapped deployments run a local model (Ollama, vLLM) and then nothing goes out at all.

How the security model works →
  • self-hosted, a single Docker image
  • metadata only in the database
  • any provider · cloud or local (Ollama)
  • offline license check, no telemetry
  • one outbound destination by default
install

Your first review, today

Bring the bot up inside your own infrastructure, point it at GitLab or GitHub, and give it your model key.

$ docker compose up -d
$ curl http://localhost:3000/api/health  # {"status":"ok"}