AI-powered code review agent for CI/CD pipelines
Project description
AI ReviewBot
AI-powered code review tool for GitHub and GitLab that provides intelligent feedback with inline suggestions and one-click "Apply" button.
📚 Documentation • 🚀 Quick Start • 🛒 GitHub Marketplace
✨ Features
- 🤖 AI-Powered Analysis — Uses Google Gemini or Mistral AI for deep code understanding
- 💡 Inline Suggestions — Comments directly on code lines with GitHub's "Apply suggestion" button
- 🔒 Security Focus — Identifies vulnerabilities with severity levels (Critical, Warning, Info)
- 🌍 Multi-Language — Responds in your PR/MR language (adaptive mode)
- ✨ Good Practices — Highlights what you're doing right, not just issues
- 📊 Transparent Metrics — Shows tokens, latency, and estimated cost
- 🦊 GitHub & GitLab — Native support for both platforms
🔍 Project Discovery
AI ReviewBot automatically analyzes your repository before each review:
- Languages & frameworks detected from GitHub/GitLab API
- CI pipeline parsed to understand what's already automated (linters, formatters, type checkers)
- Config files read to understand project conventions
- Attention Zones classify each quality area as ✅ Well Covered, ⚠️ Weakly Covered, or ❌ Not Covered
This means the bot won't duplicate feedback that your CI already catches — no formatting nits when you run Prettier, no type errors when you run mypy. Discovery results are cached via watch-files, so repeated PRs cost 0 extra tokens.
Create .reviewbot.md in your repo root to customize. You can also run ai-review discover owner/repo to preview what the bot sees.
| Variable | Default | Description |
|---|---|---|
AI_REVIEWER_DISCOVERY_ENABLED |
true |
Enable/disable project discovery |
AI_REVIEWER_DISCOVERY_VERBOSE |
false |
Always post discovery comment |
AI_REVIEWER_DISCOVERY_TIMEOUT |
30 |
Discovery timeout in seconds |
See Discovery documentation for details.
🚀 Quick Start
GitHub Actions (Recommended)
# .github/workflows/ai-review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: KonstZiv/ai-code-reviewer@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
google_api_key: ${{ secrets.AI_REVIEWER_GOOGLE_API_KEY }}
# Or use Mistral:
# mistral_api_key: ${{ secrets.AI_REVIEWER_MISTRAL_API_KEY }}
# llm_provider: mistral
GitLab CI
# .gitlab-ci.yml
ai-review:
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
Note: Set LLM API key (
AI_REVIEWER_GOOGLE_API_KEYorAI_REVIEWER_MISTRAL_API_KEY) andAI_REVIEWER_GITLAB_TOKENas CI/CD variables in Settings.
PyPI
pip install ai-reviewbot
# Set environment variables (Google)
export AI_REVIEWER_GOOGLE_API_KEY="your-key"
export AI_REVIEWER_GITHUB_TOKEN="your-token"
# Or use Mistral
# export AI_REVIEWER_MISTRAL_API_KEY="your-key"
# export AI_REVIEWER_LLM_PROVIDER=mistral
# Run review
ai-review --repo owner/repo --pr 123
Docker
# DockerHub
docker pull koszivdocker/ai-reviewbot:1
# GitHub Container Registry
docker pull ghcr.io/konstziv/ai-code-reviewer:1
📖 Documentation
Full documentation available in 6 languages:
| Language | Link |
|---|---|
| 🇬🇧 English | Documentation |
| 🇺🇦 Українська | Документація |
| 🇩🇪 Deutsch | Dokumentation |
| 🇪🇸 Español | Documentación |
| 🇲🇪 Crnogorski | Dokumentacija |
| 🇮🇹 Italiano | Documentazione |
⚙️ Configuration
| Variable | Default | Description |
|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
— | Google Gemini API key |
AI_REVIEWER_MISTRAL_API_KEY |
— | Mistral API key |
AI_REVIEWER_LLM_PROVIDER |
google |
Primary LLM provider (google, mistral) |
AI_REVIEWER_LLM_FALLBACK_PROVIDER |
— | Fallback provider when primary is exhausted |
AI_REVIEWER_GITHUB_TOKEN |
— | GitHub token (for GitHub) |
AI_REVIEWER_GITLAB_TOKEN |
— | GitLab token (for GitLab) |
AI_REVIEWER_LANGUAGE |
en |
Response language (ISO 639 code) |
AI_REVIEWER_LANGUAGE_MODE |
adaptive |
adaptive (detect from PR) or fixed |
AI_REVIEWER_GEMINI_MODEL |
gemini-2.5-flash |
Gemini model to use |
AI_REVIEWER_MISTRAL_MODEL |
mistral-large-latest |
Mistral model to use |
AI_REVIEWER_MISTRAL_API_URL |
— | Custom Mistral API URL (e.g. https://codestral.mistral.ai) |
AI_REVIEWER_LOG_LEVEL |
INFO |
Logging level |
AI_REVIEWER_DISCOVERY_ENABLED |
true |
Enable project discovery before review |
Note: At least one LLM API key is required. Old variable names without
AI_REVIEWER_prefix still work as fallback.
See Configuration Guide for all options.
🎯 Example Output
The reviewer provides structured feedback with inline suggestions:
Summary Comment
🤖 AI Code Review
📊 Summary — Found 2 issues and 1 good practice.
Category Critical Warning Info Security 1 0 0 Code Quality 0 1 0 ✨ Good Practices — Excellent error handling in
api/handlers.py
⏱️ 1.2s | 🪙 1,540 tokens | 💰 ~$0.002
Inline Comment with "Apply" Button
⚠️ SQL Injection Risk
User input is concatenated directly into SQL query.
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))💡 Why this matters: SQL injection allows attackers to execute arbitrary SQL commands. Always use parameterized queries.
🛠️ Development
# Clone repository
git clone https://github.com/KonstZiv/ai-code-reviewer.git
cd ai-code-reviewer
# Install dependencies with uv
uv sync --all-groups
# Run tests
uv run pytest
# Run linters
uv run ruff check .
uv run mypy src/
# Build documentation
uv run mkdocs serve
📦 Installation Options
| Method | Command | Best For |
|---|---|---|
| GitHub Action | uses: KonstZiv/ai-code-reviewer@v1 |
GitHub projects |
| Docker | docker pull koszivdocker/ai-reviewbot |
GitLab CI |
| PyPI | pip install ai-reviewbot |
Local testing |
💰 Cost Estimate
Using Gemini 2.5 Flash:
- Input: $0.075 / 1M tokens
- Output: $0.30 / 1M tokens
- Average review: ~$0.002 (1,500 tokens)
100 reviews/month ≈ $0.20
📄 License
Apache 2.0 — See LICENSE for details.
🤝 Contributing
Contributions are welcome! See Contributing Guide.
📬 Support
Made with ❤️ by Kostyantin Zivenko
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_reviewbot-1.0.0b10.tar.gz.
File metadata
- Download URL: ai_reviewbot-1.0.0b10.tar.gz
- Upload date:
- Size: 577.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6d2a5cb5b9b28375c6726538d71eeee52b9b677fe791885f22d4fafa970d4df
|
|
| MD5 |
4f7d66586fe3c5e6f8e40d9169236180
|
|
| BLAKE2b-256 |
b8ab87af5fc09944df5eaa9d122f72a62d727588c797c4deb679931e4a03fdf5
|
Provenance
The following attestation bundles were made for ai_reviewbot-1.0.0b10.tar.gz:
Publisher:
release.yml on KonstZiv/ai-code-reviewer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_reviewbot-1.0.0b10.tar.gz -
Subject digest:
b6d2a5cb5b9b28375c6726538d71eeee52b9b677fe791885f22d4fafa970d4df - Sigstore transparency entry: 1270858401
- Sigstore integration time:
-
Permalink:
KonstZiv/ai-code-reviewer@5514eabeddabfb24d7d91b101474d583799fec0a -
Branch / Tag:
refs/tags/v1.0.0b10 - Owner: https://github.com/KonstZiv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5514eabeddabfb24d7d91b101474d583799fec0a -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_reviewbot-1.0.0b10-py3-none-any.whl.
File metadata
- Download URL: ai_reviewbot-1.0.0b10-py3-none-any.whl
- Upload date:
- Size: 130.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94ba78fc834ff845baf0ae29b4fcbb9a57b5ff390d74b0e8656456375e32d2a7
|
|
| MD5 |
f4723d622d512f63e76700dbffc1f1ca
|
|
| BLAKE2b-256 |
53d1ec59c096dd7820536ae5ca5b9d5a1b0b8692f72349efa213b70ea8e753f1
|
Provenance
The following attestation bundles were made for ai_reviewbot-1.0.0b10-py3-none-any.whl:
Publisher:
release.yml on KonstZiv/ai-code-reviewer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_reviewbot-1.0.0b10-py3-none-any.whl -
Subject digest:
94ba78fc834ff845baf0ae29b4fcbb9a57b5ff390d74b0e8656456375e32d2a7 - Sigstore transparency entry: 1270858411
- Sigstore integration time:
-
Permalink:
KonstZiv/ai-code-reviewer@5514eabeddabfb24d7d91b101474d583799fec0a -
Branch / Tag:
refs/tags/v1.0.0b10 - Owner: https://github.com/KonstZiv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5514eabeddabfb24d7d91b101474d583799fec0a -
Trigger Event:
push
-
Statement type: