Skip to content

Getting Started

Minimal steps to go from zero to a working review.

Prerequisites

  • Python 3.13+ and uv — required for CLI and webhook modes
  • Claude Code CLI installed and on PATH — required for CLI and webhook modes
  • CI mode needs none of the above — it runs inside a Docker container

Quick Start

Add your LLM provider API key as a repository secret, then create a workflow file. The example below uses Anthropic — see CI Mode for other providers (OpenAI, Google Gemini, DeepSeek, Groq, etc.).

# .github/workflows/review.yml
name: Code Review
on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

permissions:
  contents: read
  pull-requests: write

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: gauthierdmn/nominal-code@main
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          github_token: ${{ secrets.GITHUB_TOKEN }}

Open a pull request — the review runs automatically.

Next: CI Mode full guide (all providers, GitLab CI setup, inputs, examples)

git clone https://github.com/gauthierdmn/nominal-code.git
cd nominal-code/app
uv sync

export GITHUB_TOKEN=ghp_...

uv run nominal-code review owner/repo#42

The review prints to stdout and posts to the PR.

Next: CLI Mode full guide (all options, platform examples)

git clone https://github.com/gauthierdmn/nominal-code.git
cd nominal-code/app
uv sync

export REVIEWER_BOT_USERNAME=my-reviewer
export ALLOWED_USERS=alice,bob
export GITHUB_TOKEN=ghp_...
export GITHUB_WEBHOOK_SECRET=your-secret

uv run nominal-code serve

Set up a webhook on your repository pointing to https://your-server:8080/webhooks/github, then mention @my-reviewer in a PR comment.

Next: Webhook Mode full guide (platform setup, auto-trigger, multi-platform)

Create a config.yaml:

reviewer:
  bot_username: "my-reviewer"
  triggers:
    - pr_opened

access:
  allowed_users:
    - alice
    - bob

Then run:

git clone https://github.com/gauthierdmn/nominal-code.git
cd nominal-code/app
uv sync

export GITHUB_TOKEN=ghp_...
export GITHUB_WEBHOOK_SECRET=your-secret
export CONFIG_PATH=../config.yaml

uv run nominal-code serve

Secrets stay as env vars, everything else lives in the YAML file.

Next: Configuration (full YAML schema, examples)

Next Steps