Manki
Multi-stage, multi-agent AI code review for GitHub — self-hosted, provider-neutral.
A planner picks the team, agents review in parallel, a judge filters the noise.
How it works
Multi-stage pipeline
Planner, Reviewer, Judge, Dedup. Each stage has a specific job; the judge filters noise before you see findings.
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
Judge
Evaluates, filters, classifies findings by severity
Dedup
Filters findings that match previously-dismissed ones
Why Manki?
Self-hosted
Your code never leaves your CI runner. No data shared with third-party SaaS platforms.
Multi-stage
Planner + parallel reviewers + 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 Claude Code OAuth token as a repository secret. An Anthropic API key also works as an alternative.
gh secret set CLAUDE_CODE_OAUTH_TOKEN --repo <owner>/<repo>
Add the workflow
Create .github/workflows/manki.yml in your repository:
name: Manki
on:
pull_request:
types: [opened, synchronize]
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: '20'
cache: 'npm'
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code
env:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
- name: Manki Review
uses: manki-review/manki@v4
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
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.