Quick start
This guide walks through the two fastest ways to run AICodeReviewer (AICR): Docker Compose for a deployment-like setup, and local Node.js for development. Pick one, then verify with a health check and a dry-run review.
Docker Compose
Section titled “Docker Compose”The example/ directory ships a ready-to-edit Compose stack.
cd example/
# 1. Create .env from the sample and fill in secretscp .env.sample .env# Edit .env: set AICR_LLM_API_KEY, AICR_GITEA_TOKEN, AICR_WEBHOOK_SECRET
# 2. Edit config.yaml: set your Gitea URL, repo, and model
# 3. Build and startdocker compose up -dThe Compose file mounts config.yaml read-only and persists three named
volumes: aicr-data (queue DB, run history), aicr-workspaces (cloned repo
caches), and aicr-logs. It exposes the service on port 8080 and ships a
health check against /healthz.
What goes where:
example/.env— every secret as an environment variable. Never commit this file. See Authentication & secrets.example/config.yaml— non-secret configuration. References env var names (e.g.api_key_env: AICR_LLM_API_KEY), never values.example/docker-compose.yaml— the stack definition.
Local Node.js
Section titled “Local Node.js”For development or evaluation without Docker:
# From the repository root:
# 1. Install dependencies and build runtime packagespnpm installpnpm build
# 2. Set environment variables (one-time source, or export manually)source example/.env
# 3. Start the servernode packages/cli/dist/index.js serve \ --config example/config.yaml \ --port 8080Verify the server is running
Section titled “Verify the server is running”Once the server is up, confirm it answers the health endpoint:
curl http://localhost:8080/healthz# okThe /healthz endpoint returns a plain-text ok and is the canonical liveness
probe (also used by the Compose health check). If you enabled the observability
dashboard (admin.* in config), visit http://localhost:8080/dashboard.
Dry-run a review
Section titled “Dry-run a review”Before wiring up a webhook, run a one-shot review against a local checkout to confirm the LLM and pipeline are healthy. Dry-run does not publish any output.
export AICR_LLM_API_KEY=sk-xxx
node packages/cli/dist/index.js review \ --config example/config.yaml \ --repo "my-org/my-repo" \ --provider gitea \ --source-root . \ --dry-runFlags of note:
--provider— the trigger provider kind from your config (gitea,github,gitlab,p4,svn).--source-root— the checkout to review.--dry-run— prepare and run the review but skip all output channels.
If the dry-run succeeds, the LLM credentials, agent, and sandbox are wired up correctly. Next, point a VCS webhook at the server — see Your first webhook review.
Next steps
Section titled “Next steps”- Authentication & secrets — understand the three-layer model before opening the server to webhooks.
- Output channels — where findings get published.
- VCS providers — webhook and trigger setup per provider.