Skip to main content

AI-powered code review tool for git branches

Project description

ReviewCerberus

ReviewCerberus Logo

AI-powered code review tool that analyzes git branch differences and generates comprehensive review reports with structured output.

Key Features

  • GitHub Action: Automated PR reviews with inline comments and summary
  • Comprehensive Reviews: Detailed analysis of logic, security, performance, and code quality
  • Structured Output: Issues organized by severity with summary table
  • Multi-Provider: AWS Bedrock, Anthropic API, or Ollama
  • Smart Analysis: Context provided upfront with prompt caching
  • Git Integration: Works with any repository, supports commit hashes
  • Verification Mode: Experimental Chain-of-Verification to reduce false positives

Quick Start

Run with Docker (recommended):

docker run --rm -it -v $(pwd):/repo \
  -e MODEL_PROVIDER=anthropic \
  -e ANTHROPIC_API_KEY=sk-ant-your-api-key \
  kirill89/reviewcerberus-cli:latest \
  --repo-path /repo --output /repo/review.md

That's it! The review will be saved to review.md in your current directory.

See Configuration for AWS Bedrock setup and other options.

GitHub Action

For automated PR reviews, add to .github/workflows/review.yml:

name: Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: Kirill89/reviewcerberus/action@v1
        with:
          model_provider: anthropic
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

The action posts review comments directly on your PR. See GitHub Action for all options.


Usage

Basic Commands

# Run code review
poetry run reviewcerberus

# Custom target branch
poetry run reviewcerberus --target-branch develop

# Custom output location
poetry run reviewcerberus --output /path/to/review.md
poetry run reviewcerberus --output /path/to/dir/  # Auto-generates filename

# Output as JSON instead of markdown
poetry run reviewcerberus --json

# Different repository
poetry run reviewcerberus --repo-path /path/to/repo

# Add custom review guidelines
poetry run reviewcerberus --instructions guidelines.md

# Enable verification mode (experimental)
poetry run reviewcerberus --verify

Example Commands

# Full review with custom guidelines
poetry run reviewcerberus --target-branch main \
  --output review.md --instructions guidelines.md

# Review a different repo
poetry run reviewcerberus --repo-path /other/repo

What's Included

Comprehensive Code Review

Detailed analysis covering:

  • Logic & Correctness: Bugs, edge cases, error handling
  • Security: OWASP issues, access control, input validation
  • Performance: N+1 queries, bottlenecks, scalability
  • Code Quality: Duplication, complexity, maintainability
  • Side Effects: Impact on other system parts
  • Testing: Coverage gaps, missing test cases
  • Documentation: Missing or outdated docs, unclear comments

Structured Output

Every review includes:

  • Summary: High-level overview of changes and risky areas
  • Issues Table: All issues at a glance with severity indicators (๐Ÿ”ด CRITICAL, ๐ŸŸ  HIGH, ๐ŸŸก MEDIUM, ๐ŸŸข LOW)
  • Detailed Issues: Each issue with explanation, location, and suggested fix

Verification Mode (Experimental)

Enable with --verify flag to reduce false positives using Chain-of-Verification (CoVe):

  1. Generate Questions: Creates falsification questions for each issue
  2. Answer Questions: Answers questions using code context
  3. Score Confidence: Assigns 1-10 confidence score based on evidence

Each issue in the output includes a confidence score and rationale.


How It Works

  1. Detects current git branch and repository
  2. Collects all context upfront: changed files, commit messages, and diffs
  3. Analyzes using AI agent with access to:
    • Full diff context (truncated at 10k chars per file)
    • File reading with line ranges
    • Pattern search across codebase
    • Directory listing
  4. Generates structured review output rendered as markdown

Progress Display:

Repository: /path/to/repo
Current branch: feature-branch
Target branch: main

Found 3 changed files:
  - src/main.py (modified)
  - src/utils.py (modified)
  - tests/test_main.py (added)

Starting code review...

๐Ÿค” Thinking... โฑ๏ธ  3.0s
๐Ÿ”ง read_file_part: src/main.py

โœ“ Review completed: review_feature-branch.md

Token Usage:
  Input tokens:  6,856
  Output tokens: 1,989
  Total tokens:  8,597

Configuration

All configuration via environment variables (.env file):

Provider Selection

MODEL_PROVIDER=bedrock  # or "anthropic" or "ollama" (default: bedrock)

AWS Bedrock (if MODEL_PROVIDER=bedrock)

AWS_ACCESS_KEY_ID=your_key
AWS_SECRET_ACCESS_KEY=your_secret
AWS_REGION_NAME=us-east-1
MODEL_NAME=us.anthropic.claude-opus-4-5-20251101-v1:0  # optional

Docker example with Bedrock:

docker run --rm -it -v $(pwd):/repo \
  -e AWS_ACCESS_KEY_ID=your_key \
  -e AWS_SECRET_ACCESS_KEY=your_secret \
  -e AWS_REGION_NAME=us-east-1 \
  kirill89/reviewcerberus-cli:latest \
  --repo-path /repo --output /repo/review.md

Anthropic API (if MODEL_PROVIDER=anthropic)

ANTHROPIC_API_KEY=sk-ant-your-api-key-here
MODEL_NAME=claude-opus-4-5-20251101  # optional

Ollama (if MODEL_PROVIDER=ollama)

MODEL_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434  # optional, default
MODEL_NAME=deepseek-v3.1:671b-cloud     # optional

Docker example with Ollama:

# Assumes Ollama running on host machine
docker run --rm -it -v $(pwd):/repo \
  -e MODEL_PROVIDER=ollama \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  kirill89/reviewcerberus-cli:latest \
  --repo-path /repo --output /repo/review.md

Optional Settings

MAX_OUTPUT_TOKENS=10000     # Maximum tokens in response
TOOL_CALL_LIMIT=100         # Maximum tool calls before forcing output
VERIFY_MODEL_NAME=...       # Model for verification (defaults to MODEL_NAME)

Custom Review Prompts

Customize prompts in src/agent/prompts/:

  • full_review.md - Main review prompt
  • context_summary.md - Context compaction for large PRs

GitHub Action

Use ReviewCerberus as a GitHub Action for automated PR reviews.

Action Inputs

Input Description Default
model_provider Provider: bedrock, anthropic, or ollama bedrock
anthropic_api_key Anthropic API key -
aws_access_key_id AWS Access Key ID (Bedrock) -
aws_secret_access_key AWS Secret Access Key (Bedrock) -
aws_region_name AWS Region (Bedrock) us-east-1
model_name Model name (provider-specific) -
verify Enable Chain-of-Verification false
min_confidence Min confidence score 1-10 (requires verify) -
instructions Path to custom review guidelines -

Example with Verification

- uses: Kirill89/reviewcerberus/action@v1
  with:
    model_provider: anthropic
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    verify: "true"
    min_confidence: "7"

Example with AWS Bedrock

- uses: Kirill89/reviewcerberus/action@v1
  with:
    model_provider: bedrock
    aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    aws_region_name: us-east-1

What the Action Does

  1. Runs the review using the Docker image
  2. Resolves any existing review threads from previous runs
  3. Posts a summary comment with all issues
  4. Creates inline review comments on specific lines

Development

Local Installation

For local development (not required for Docker usage):

# Clone and install
git clone <repo-url>
poetry install

# Configure credentials
cp .env.example .env
# Edit .env with your provider credentials

See Configuration for credential setup.

Run Tests

make test
# or
poetry run pytest -v

Linting & Formatting

make lint     # Check with mypy, isort, black, mdformat
make format   # Auto-format with isort and black

Building Docker Image

make docker-build           # Build locally
make docker-build-push      # Build and push (multi-platform)

Version is auto-read from pyproject.toml. See DOCKER.md for details.

Project Structure

โ”œโ”€โ”€ src/                             # Python CLI
โ”‚   โ”œโ”€โ”€ config.py                    # Configuration
โ”‚   โ”œโ”€โ”€ main.py                      # CLI entry point
โ”‚   โ””โ”€โ”€ agent/
โ”‚       โ”œโ”€โ”€ agent.py                 # Agent setup
โ”‚       โ”œโ”€โ”€ model.py                 # Model initialization
โ”‚       โ”œโ”€โ”€ runner.py                # Review execution
โ”‚       โ”œโ”€โ”€ prompts/                 # Review prompts
โ”‚       โ”œโ”€โ”€ schema.py                # Data models (structured output)
โ”‚       โ”œโ”€โ”€ git_utils/               # Git operations
โ”‚       โ”œโ”€โ”€ formatting/              # Context and output rendering
โ”‚       โ”œโ”€โ”€ verification/            # Chain-of-Verification pipeline
โ”‚       โ”œโ”€โ”€ progress_callback_handler.py
โ”‚       โ””โ”€โ”€ tools/                   # 3 review tools
โ”‚
โ””โ”€โ”€ action/                          # GitHub Action (TypeScript)
    โ”œโ”€โ”€ action.yml                   # Action definition
    โ”œโ”€โ”€ src/                         # Action source code
    โ””โ”€โ”€ dist/                        # Bundled action

Code Quality Standards

  • Strict type checking: All functions require type annotations
  • Return types: Must be explicit (warn_return_any = true)
  • Formatting: Black + isort with black profile
  • Testing: Integration tests with real git operations

Requirements

  • Python 3.11+
  • Git
  • One of:
    • AWS Bedrock access with Claude models
    • Anthropic API key
  • Poetry (for development)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reviewcerberus-1.2.4.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reviewcerberus-1.2.4-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file reviewcerberus-1.2.4.tar.gz.

File metadata

  • Download URL: reviewcerberus-1.2.4.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for reviewcerberus-1.2.4.tar.gz
Algorithm Hash digest
SHA256 8052f696bf11600f1f80fadf975ad673e7708bcd2092eab0d6bf10e895438ec1
MD5 52742b856c4cfc9d1cfeb7f5f8a17a11
BLAKE2b-256 23123798a1960580617810e818ecf182d2a5e8dd84f338e41f2f7590c50c57ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for reviewcerberus-1.2.4.tar.gz:

Publisher: pypi-publish.yml on Kirill89/reviewcerberus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file reviewcerberus-1.2.4-py3-none-any.whl.

File metadata

  • Download URL: reviewcerberus-1.2.4-py3-none-any.whl
  • Upload date:
  • Size: 47.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for reviewcerberus-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2665605df46b2a8650829d2809a8a73425f5dd0ba1b22e9d28cbb6a20c23c624
MD5 a91ee1106120aa716d3d6ae3c4799aa1
BLAKE2b-256 0d244bb4208340e86b78143063ce4b612c1fcc763358e8a9ee4ad3a3a7a4e384

See more details on using hashes here.

Provenance

The following attestation bundles were made for reviewcerberus-1.2.4-py3-none-any.whl:

Publisher: pypi-publish.yml on Kirill89/reviewcerberus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page