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 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.GOOGLE_API_KEY }}
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
AI_REVIEWER_GOOGLE_API_KEYandAI_REVIEWER_GITLAB_TOKENas CI/CD variables in Settings -- they are inherited by jobs automatically.
PyPI
pip install ai-reviewbot
# Set environment variables
export AI_REVIEWER_GOOGLE_API_KEY="your-key"
export AI_REVIEWER_GITHUB_TOKEN="your-token"
# 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 |
— | Required. Google Gemini API key |
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_GEMINI_MODEL_FALLBACK |
gemini-3-flash-preview |
Fallback model when primary is unavailable |
AI_REVIEWER_LOG_LEVEL |
INFO |
Logging level |
AI_REVIEWER_REVIEW_MAX_COMMENT_CHARS |
3000 |
Max characters per comment |
AI_REVIEWER_REVIEW_INCLUDE_BOT_COMMENTS |
true |
Include bot comments in context |
AI_REVIEWER_REVIEW_POST_INLINE_COMMENTS |
true |
Post inline comments on code lines |
AI_REVIEWER_REVIEW_ENABLE_DIALOGUE |
true |
Enable dialogue threading |
AI_REVIEWER_DISCOVERY_ENABLED |
true |
Enable project discovery before review |
Note: 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 3 Flash Preview:
- 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.0b4.tar.gz.
File metadata
- Download URL: ai_reviewbot-1.0.0b4.tar.gz
- Upload date:
- Size: 543.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0f9c4a992956697b1c7d8b58c3b7c5b3d9268423fa21a1d632629a6e049c4ba
|
|
| MD5 |
d878b0752fc1ad48845125f8f35bc876
|
|
| BLAKE2b-256 |
4dcbdb296760b36709285b84d69e6d1b6b5ea5ac1a2416968a1e8a7b9b5854c1
|
Provenance
The following attestation bundles were made for ai_reviewbot-1.0.0b4.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.0b4.tar.gz -
Subject digest:
a0f9c4a992956697b1c7d8b58c3b7c5b3d9268423fa21a1d632629a6e049c4ba - Sigstore transparency entry: 1004936771
- Sigstore integration time:
-
Permalink:
KonstZiv/ai-code-reviewer@8344388ecc8664e14da716953b63ac9c73e9f654 -
Branch / Tag:
refs/tags/v1.0.0b4 - Owner: https://github.com/KonstZiv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8344388ecc8664e14da716953b63ac9c73e9f654 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_reviewbot-1.0.0b4-py3-none-any.whl.
File metadata
- Download URL: ai_reviewbot-1.0.0b4-py3-none-any.whl
- Upload date:
- Size: 114.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6552d65d6df48c49cf4dd3627984b78aa32ac8b6bbcf23469d6194b02139dd3
|
|
| MD5 |
488a00e88a62754559806b527cab7272
|
|
| BLAKE2b-256 |
baeca29ce7cfa4b0f9f74a78a2882e1d6217577256aed696364f7f540effd852
|
Provenance
The following attestation bundles were made for ai_reviewbot-1.0.0b4-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.0b4-py3-none-any.whl -
Subject digest:
a6552d65d6df48c49cf4dd3627984b78aa32ac8b6bbcf23469d6194b02139dd3 - Sigstore transparency entry: 1004936773
- Sigstore integration time:
-
Permalink:
KonstZiv/ai-code-reviewer@8344388ecc8664e14da716953b63ac9c73e9f654 -
Branch / Tag:
refs/tags/v1.0.0b4 - Owner: https://github.com/KonstZiv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8344388ecc8664e14da716953b63ac9c73e9f654 -
Trigger Event:
push
-
Statement type: