quickstart
Your first review
The path from an empty .env to the bot's first comment on a real merge request. Every step is checkable — if a checkpoint does not match, read the hint next to it.
what you needDocker and Docker Compose · access to your self-hosted GitLab (rights to create a token and a webhook in the project) · a key to a model provider (Anthropic, for example). Everything else is inside the image. This quickstart is written for GitLab; if you host on GitHub, take the steps about the token, the
GITLAB_* variables and creating the webhook from Connecting GitHub — the rest (the image, the run, the check, config.yml) is word for word the same.- Create the bot token in GitLabA project (or personal) access token with the
apiscope — the bot reads the diff and writes comments with it. The details are in Connecting GitLab. - Fill in
.envCreate an.envfile from the template below with the minimum: the GitLab address, the token, the webhook secret and the model key..env — the minimum to start # GitLab GITLAB_BASE_URL=https://gitlab.your-company.com GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx GITLAB_WEBHOOK_SECRET=pick-a-long-random-string # Redis (the queue) — already wired up inside docker-compose REDIS_HOST=redis REDIS_PORT=6379 # The model — your own key (see «Models and your own key») LLM_PROVIDER=anthropic ANTHROPIC_API_KEY=sk-ant-...importantGITLAB_BASE_URL— without/api/v4and without a trailing slash.GITLAB_WEBHOOK_SECRET— at least 8 characters; you put the same value into the webhook in step 5. - Bring the containers upDownload the ready-made client docker-compose.yml and put it next to
.env. The bot container and Redis (the queue) come up together. PostgreSQL (review metrics) is optional and off by default; you do not need it to start.terminal curl -O https://reviewgate.dev/docker-compose.yml docker compose up -d - Check that the bot is alive
terminal curl http://localhost:3000/api/health # {"status":"ok","ts":...,"version":"0.1.x"}checkpointA{"status":"ok"}response means the bot is up. If not, read the logs:docker compose logs -f app— most often it is an invalid.env, and the bot says plainly what is missing. - Add the webhook in the GitLab projectSettings → Webhooks: URL
https://your-bot-address/api/webhooks/gitlab, Secret token = yourGITLAB_WEBHOOK_SECRET, triggers Merge request events and Comments (the latter for the bot's replies in threads). Press Test — the expected answer is202. The details and the self-hosted caveats are here. - Open a test merge requestCreate a merge request with a couple of changes. Within a minute or two the bot leaves a summary comment and inline comments on the diff — and it does not touch the Merge button: by default ReviewGate only comments and blocks nothing (a hard severity gate is enabled separately in the config). The logs are a convenient place to watch it happen:
terminal docker compose logs -f appdoneA comment from the bot in the merge request means the whole path works. Next, set up your team's rules in .reviewgate/config.yml.
What next
- Review configuration — team rules, your own review guideline, presets, the severity gate.
- Models and your own key — picking a cheaper model or running one locally.
- License — what the status line in the summary means.