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.
  1. Create the bot token in GitLabA project (or personal) access token with the api scope — the bot reads the diff and writes comments with it. The details are in Connecting GitLab.
  2. Fill in .envCreate an .env file 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/v4 and without a trailing slash. GITLAB_WEBHOOK_SECRET — at least 8 characters; you put the same value into the webhook in step 5.
  3. 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
  4. 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.
  5. Add the webhook in the GitLab projectSettings → Webhooks: URL https://your-bot-address/api/webhooks/gitlab, Secret token = your GITLAB_WEBHOOK_SECRET, triggers Merge request events and Comments (the latter for the bot's replies in threads). Press Test — the expected answer is 202. The details and the self-hosted caveats are here.
  6. 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 app
    doneA 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