Docker Compose is the simplest way to deploy Reviewate. Ideal for small teams and single-server deployments.
git clone https://github.com/numberly/reviewate.git
cd reviewate
cp .env.example .env
# JWT secret — paste into JWT_SECRET_KEY
openssl rand -hex 32
# Encryption key — paste into ENCRYPTION_KEY
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Also set a strong POSTGRES_PASSWORD and update it in DATABASE_URL to match.
Follow the guide for your platform to create the OAuth app, configure webhooks, and add credentials to .env:
Disable platforms you don't use:
GITHUB_ENABLED=false # if GitLab only
GITLAB_ENABLED=false # if GitHub only
GOOGLE_ENABLED=false # if you don't need Google OAuth login
# Option 1: Anthropic API key
ANTHROPIC_API_KEY=sk-ant-...
# Option 2: Claude subscription (for headless/container use)
# CLAUDE_CODE_OAUTH_TOKEN=... # generate with: claude setup-token
Optional model overrides:
# REVIEWATE_REVIEW_MODEL=sonnet # default: sonnet
# REVIEWATE_UTILITY_MODEL=haiku # default: haiku
# REVIEWATE_BASE_URL= # for LiteLLM proxy or custom endpoint
See Model Configuration for the two-tier model system.
For local testing (defaults in .env.example):
DOMAIN=localhost
COOKIE_DOMAIN=localhost
FRONTEND_URL=http://localhost:3000
NUXT_PUBLIC_API_BASE_URL=http://localhost:8000
NUXT_PUBLIC_API_OPENAPI_URL=http://localhost:8000/openapi.json
For a custom domain with a reverse proxy:
DOMAIN=reviewate.example.com
COOKIE_DOMAIN=reviewate.example.com
FRONTEND_URL=https://reviewate.example.com
NUXT_PUBLIC_API_BASE_URL=https://reviewate.example.com/api
NUXT_PUBLIC_API_OPENAPI_URL=https://reviewate.example.com/api/openapi.json
Use your preferred reverse proxy (Traefik, Caddy, nginx). See the nginx/ folder in the repository for an example configuration.
docker compose --profile all up -d
Access the dashboard at http://localhost:3000 (or your custom domain).
Check backend health:
curl http://localhost:8000/health
docker compose logs backend -f
| Profile | Services | When to use |
|---|---|---|
all | postgres, redis, migrate, backend, frontend | Full stack (recommended) |
app | migrate, backend, frontend | You already have PostgreSQL and Redis |
test | postgres, migrate, pgweb | Local development and running tests |
All profiles include a Docker socket proxy that restricts container API access to only the operations Reviewate needs.
If you already have managed databases (RDS, Cloud SQL, Elasticache, etc.), use the app profile:
# .env
DATABASE_URL=postgresql://user:pass@your-postgres:5432/reviewate
REDIS_URL=redis://your-redis:6379/0
docker compose --profile app up -d
git pull
docker compose pull
docker compose --profile all up -d
Database migrations run automatically on startup.