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.
ReviewGate reads it first, by your team's rules. You get what actually needs a human.
Free · self-hosted · bring your own model key
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
GitLab or GitHub sends a webhook. ReviewGate answers immediately and queues the job, so nothing times out on your instance.
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.
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.
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 →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.
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.
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.
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.
The full list of frameworks and the options of every preset are in the configuration reference →
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 →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"}