Manki
Multi-stage, multi-agent AI code review for GitHub — self-hosted, provider-neutral.
A planner picks the team, agents review in parallel, dedup removes repeats, and a judge filters the noise.
How it works
Multi-stage pipeline
Planner, Reviewer, Dedup, Judge. Each stage has a specific job; dedup removes repeats before the judge classifies what survives.
Bring your own model
Configure Claude today; multi-provider support coming soon. Your API key, your compute.
Open source, self-hosted
Runs as a GitHub Action in your repo. No SaaS dependency, no vendor lock-in, no subscription required.
The review pipeline
Planner
Picks team size and effort based on the PR
Reviewer
Parallel specialist agents produce findings
Dedup
Filters findings that match previously-dismissed ones
Judge
Evaluates, filters, classifies findings by severity
Why Manki?
Self-hosted
Your code never leaves your CI runner. No data shared with third-party SaaS platforms.
Multi-stage
Planner + parallel reviewers + dedup + judge. Not a single LLM call — a coordinated review team.
Review memory
Learns from your feedback. Dismiss a finding and Manki won't raise it again. Add custom patterns to teach it what matters to your team.
Provider-neutral
Bring your own API key, swap models freely. No lock-in to a specific vendor.
Open source
Inspect, fork, customize. No black box — you can read every prompt and every line of code.
No subscription
Pay only for API usage. No per-seat fees, no monthly plans, no surprise invoices.
Get started in 3 steps
Install the GitHub App
Grant manki access to post review comments on your repositories.
Install manki-review →Add your API key
Set your Anthropic API key as a repository secret. OpenAI, Gemini, and OAuth alternatives are documented in the setup guide.
gh secret set ANTHROPIC_API_KEY --repo <owner>/<repo>
Add the workflow
Create .github/workflows/manki.yml in your repository:
name: Manki
on:
pull_request:
types: [opened, synchronize, ready_for_review]
pull_request_review:
types: [submitted, dismissed]
issue_comment:
types: [created, edited]
pull_request_review_comment:
types: [created]
permissions:
contents: read # read repo files and diffs
pull-requests: write # post review comments and approvals
issues: write # create nit issues when configured
id-token: write # OIDC token for GitHub App identity
actions: read # verify workflow run is legitimate
jobs:
review:
if: github.actor != 'manki-review[bot]'
concurrency:
group: manki-${{ github.event_name }}-${{ github.event.comment.id || github.event.pull_request.number || github.event.issue.number || github.run_id }}
cancel-in-progress: true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'npm'
- name: Manki Review
uses: manki-review/manki@v5
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# github_token: ${{ secrets.GITHUB_TOKEN }} # Only if not using the GitHub App
# memory_repo_token: ${{ secrets.REVIEW_MEMORY_TOKEN }} # Only if memory repo is separate
See it in action
Real reviews on real PRs — no staged demos.
FAQ
Does manki work without Claude?
How much does it cost to run?
Is my code sent to third parties?
How do I switch from a hosted review tool?
Can I customize the review team?
.manki.yml — name, focus area, and how many run per review.