Step-by-step guide from clone to your first automated review — Docker, manual install, or desktop app.
You need a few things ready before GitClaw can review pull requests.
Docker path: Docker and Docker Compose. Manual path: Node.js 20.9+ and npm. Desktop path: download an installer — no Docker required.
An API key from OpenRouter, Anthropic, Groq, or a local OpenAI-compatible server such as Ollama.
A GitHub App for GitHub reviews. GitLab and/or Bitbucket OAuth apps only if you use those providers.
Git providers must reach your instance to deliver PR events. Use your production domain, or a tunnel (ngrok, cloudflared) while developing locally.
Pick one path. Docker is the fastest way to get running.
The compose stack runs Postgres and the app. Migrations apply automatically on container start.
git clone https://github.com/Abhivera/gitclaw.git cd gitclaw cp .env.example .env docker compose up --build
Open http://localhost:3000 when the containers are healthy. Skip to Configure to fill in .env.
git clone https://github.com/Abhivera/gitclaw.git cd gitclaw npm install
gitclaw):docker compose up -d postgres
cp .env.example .env
npm run db:migrate
npm run dev
Open http://localhost:3000.
.exe, macOS .dmg, Linux .AppImage or .deb)..env with your GitHub App and AI keys.The desktop app uses an embedded Postgres instance — no separate database setup. For webhooks, use a tunnel and set APP_URL plus ALLOWED_DEV_ORIGINS to your public hostname (see Deploy).
Edit .env in the project root (or the desktop configuration folder). Restart the app after changes.
If you have not already: cp .env.example .env
| Variable | Description |
|---|---|
APP_URL | Public URL of your instance (e.g. http://localhost:3000 locally, or your production domain). |
DATABASE_URL | Postgres connection string. Docker and desktop set this automatically; manual install uses port 5438 by default. |
GITHUB_APP_ID | GitHub App ID from your app settings. |
GITHUB_APP_PRIVATE_KEY | PEM private key. Use \n for newlines inside .env. |
GITHUB_WEBHOOK_SECRET | Webhook secret from the GitHub App. |
GITHUB_APP_SLUG | App slug — used for the install URL in the dashboard. |
OPENROUTER_API_KEY / ANTHROPIC_API_KEY / GROQ_API_KEY | Set one AI provider key, or configure OPENAI_BASE_URL for Ollama or another OpenAI-compatible endpoint. |
Add GITLAB_CLIENT_ID and GITLAB_CLIENT_SECRET, or BITBUCKET_CLIENT_ID and BITBUCKET_CLIENT_SECRET, only if you connect those providers. Self-hosted GitLab: set GITLAB_BASE_URL.
Webhooks require a URL that GitHub, GitLab, or Bitbucket can reach from the internet.
Docker: run docker compose up -d --build on your server with APP_URL set to your public HTTPS URL.
Manual: build and start the production server behind your reverse proxy (nginx, Caddy, etc.):
npm run build npm run start
Start a tunnel to your local port, then add the public hostname to your config.
ngrok http 3000
cloudflared tunnel --url http://127.0.0.1:3000
Set ALLOWED_DEV_ORIGINS to your tunnel hostname (e.g. abc123.ngrok-free.app). Update APP_URL if needed. GitClaw reloads configuration on save.
Git providers expect HTTPS webhook endpoints in production. Terminate TLS at your load balancer or reverse proxy before traffic reaches GitClaw.
Open the dashboard at APP_URL and go to Integrations.
https://<your-host>/api/github/webhook.GITHUB_APP_SLUG in .env and restart if needed.https://<your-host>/api/gitlab/callback.https://<your-host>/api/bitbucket/callback.Once a provider is connected, GitClaw reviews pull requests automatically.
GitClaw listens for PR open and update webhooks. It diffs only what changed since the last review, so follow-up commits do not re-review the entire PR.
Findings appear as inline comments on the PR plus a summary. Categories include security, performance, and maintainability.
Mention @gitclaw in a PR comment to ask follow-up questions in context.
Add a .gitclaw.yaml in any repository to set ignore paths, review tone, and custom instructions. Track activity from the dashboard overview and analytics pages.