Install
$ agentstack add mcp-nikhilsaiankilla-rabbitai ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
RabbitAI — AI Code Reviewer
Open-source AI code reviewer that auto-reviews GitHub PRs with zero cost and full self-hosting.
What is RabbitAI?
RabbitAI is an open-source AI code reviewer. Drop one workflow file into any repo and it reviews every PR automatically catching bugs, security issues, and performance problems — and posts a structured comment directly on the PR.
Unlike other code reviewers, RabbitAI:
- Builds a knowledge graph of your codebase to detect blast radius of changes
- Uses mem0 persistent memory to get smarter with every PR it reviews
- Supports Gemini and OpenAI for both LLM and embeddings fully config-driven
- Supports ChromaDB, Pinecone, and Qdrant as vector stores
- Runs as a GitHub Action, MCP server inside Claude/Cursor, or local CLI
- Runs completely free using Gemini free tier + local ChromaDB
Demo
How It Works
PR opened
→ Fetch diff + metadata via GitHub API
→ Build NetworkX file dependency graph (blast radius detection)
→ Classify change type (bug fix / feature / refactor / security)
→ Chunk diff → embed → store in vector DB
→ Load repo memory from mem0 (past learnings)
→ Retrieve relevant chunks via semantic search
→ LLM reviews with full context + memory + graph insights
→ Post structured comment on PR
→ Save new learnings to mem0
Quick Start
Option 1 — GitHub Action (recommended)
Add .github/workflows/review.yml to your repo:
name: RabbitAI Code Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install RabbitAI
run: pip install rabbitai-reviewer
- name: Run RabbitAI
env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PINECONE_API_KEY: ${{ secrets.PINECONE_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
VECTOR_STORE_PROVIDER: ${{ vars.VECTOR_STORE_PROVIDER }}
EMBEDDING_PROVIDER: ${{ vars.EMBEDDING_PROVIDER }}
EMBEDDING_MODEL: ${{ vars.EMBEDDING_MODEL }}
LLM_PROVIDER: ${{ vars.LLM_PROVIDER }}
LLM_MODEL: ${{ vars.LLM_MODEL }}
REVIEW_LANGUAGE: ${{ vars.REVIEW_LANGUAGE }}
run: |
python -c "
import os
from rabbitai.agent import run
result = run(os.environ['GITHUB_REPOSITORY'], int(os.environ['PR_NUMBER']))
print(result.comment_url if result.posted else result.reason)
"
Add GEMINI_API_KEY to your repo secrets get one free at aistudio.google.com.
GITHUB_TOKEN is injected automatically. Open a PR done.
Option 2 — Local CLI
git clone https://github.com/nikhilsaiankilla/rabbitai
cd rabbitai
pip install rabbitai-reviewer
cp config.example.yaml config.yaml
# fill in your config.yaml
# test.py
from rabbitai.agent import run
result = run(repo_name="your-username/your-repo", pr_number=1)
print(result)
python test.py
Stack
| Layer | Default | Alternatives | | ---------------- | --------------------------- | ---------------------- | | LLM | Gemini 2.0 Flash (free) | GPT-4.1-mini | | Embeddings | Gemini embedding-001 (free) | text-embedding-3-small | | Vector store | ChromaDB (local, free) | Pinecone, Qdrant | | Memory | mem0 (local, free) | — | | Dependency graph | NetworkX (free) | — | | Workflow | LangGraph (free) | — | | Total | | $0/month |
Configuration
Copy config.example.yaml to config.yaml and fill in your values.
github_token: "" # local dev only Actions injects GITHUB_TOKEN automatically
gemini_api_key: "" # free at aistudio.google.com
embedding:
provider: "gemini" # gemini | openai
model: "" # leave empty for provider default
api_key: "" # openai only
llm:
provider: "gemini" # gemini | openai
model: "" # leave empty for provider default
api_key: "" # openai only
vector_store:
provider: "chromadb" # chromadb | pinecone | qdrant
path: "./chroma_db" # for chromadb only
collection: "pr-chunks"
memory:
enabled: true
repo_context: |
Describe your repo so RabbitAI understands it from day one.
review:
language: "typescript"
focus:
- bugs
- security
- performance
min_risk_score: 0 # 0 = always post
post_score: true
All values can be overridden with environment variables. See the full docs for provider setup, dimension reference, and all config options.
Project Structure
rabbitai/
├── .github/
│ └── workflows/
│ ├── review.yml ← self-review on every PR
│ └── publish.yml ← auto publish to PyPI on merge to main
├── rabbitai/
│ ├── nodes/
│ │ ├── fetcher.py ← fetch PR diff + metadata
│ │ ├── graph_builder.py ← NetworkX dependency graph + blast radius
│ │ ├── classifier.py ← change type detection
│ │ ├── embedder.py ← embeddings + vector DB storage
│ │ ├── retriever.py ← semantic search over stored chunks
│ │ ├── reviewer.py ← LLM review generation
│ │ └── poster.py ← GitHub PR comment poster
│ ├── memory/
│ │ └── repo_memory.py ← mem0 persistent memory
│ ├── mcp/
│ │ └── server.py ← MCP server for Claude/Cursor
│ ├── utils/
│ │ ├── config.py ← config loader + env var overrides
│ │ └── prompts.py ← review prompt templates
│ └── agent.py ← LangGraph 9-node workflow entry point
├── config.example.yaml
├── pyproject.toml
└── requirements.txt
Roadmap
- [x] 9-node LangGraph workflow
- [x] NetworkX knowledge graph + blast radius detection
- [x] ChromaDB, Pinecone, and Qdrant support
- [x] Gemini and OpenAI for LLM and embeddings
- [x] mem0 persistent memory
- [x] MCP server for Claude/Cursor
- [x] Published to PyPI —
pip install rabbitai-reviewer - [x] Auto publish to PyPI on merge to main
- [ ] GitLab and Bitbucket support
- [ ] Web dashboard for review history
- [ ] Slack and Discord notifications
- [ ] Fine-tuned prompts per language
Contributing
PRs welcome. RabbitAI reviews its own PRs.
- Fork the repo
- Create your branch
git checkout -b feat/your-feature - Commit
git commit -m 'feat: your feature' - Push and open a PR
License
MIT use it, fork it, self-host it, build on it.
Built by Nikhil Sai · @itzznikhilsai
If this helped you, star the repo ⭐ and share it on X.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: nikhilsaiankilla
- Source: nikhilsaiankilla/rabbitai
- License: MIT
- Homepage: https://rabbitai.nikhilsai.in/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.