Manki

Multi-stage, multi-agent AI code review for GitHub — self-hosted, provider-neutral.

A planner triages the change, one or two finders on different models review it, 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

Triages the change: how many finders, at what effort

Reviewer

One or two finders on different models 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 finders + 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

1

Install the GitHub App

Grant manki access to post review comments on your repositories.

Install manki-review →
2

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>
3

Add the workflow

Create .github/workflows/manki.yml in your repository:

name: Manki
run-name: 'Manki ${{ inputs.event }}.${{ inputs.action }} on #${{ inputs.pr }} (${{ inputs.delivery_id }})'

on:
  workflow_dispatch:
    inputs:
      event: { type: string, required: true }
      action: { type: string, required: true }
      pr: { type: string, required: true }
      head_sha: { type: string, required: false }
      comment_id: { type: string, required: false }
      review_id: { type: string, required: false }
      delivery_id: { type: string, required: false }

permissions:
  contents: read          # read repo files and diffs
  pull-requests: write    # post review comments and approvals
  issues: write           # post progress comments on PRs
  id-token: write         # OIDC token for GitHub App identity
  actions: read           # verify workflow run is legitimate

jobs:
  review:
    timeout-minutes: 30
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-node@v7
        with:
          node-version: '24'
      - name: Manki Review
        uses: manki-review/manki@v7
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          # memory_repo_token: ${{ secrets.REVIEW_MEMORY_TOKEN }}  # Only with your own memory repo in `memory.repo`

See it in action

Real reviews on real PRs — no staged demos.

run dedup before judge to fix stale summary View review →
embed version in `manki-bot` comment marker View review →
progress dashboard — stage grouping, icons, no pre-planner flicker View review →

FAQ

Does manki work without Claude?
Not yet, but multi-provider support is planned. Today it requires an Anthropic API key or a Claude Max subscription.
How much does it cost to run?
You pay only for API usage. A typical PR review costs $0.05–$0.50 depending on diff size and model.
Is my code sent to third parties?
Your code is sent to your configured AI provider's API (e.g., Anthropic). Manki itself stores nothing.
How do I switch from a hosted review tool?
Add manki to your workflow, disable the old tool. Manki uses standard GitHub PR comments, no migration needed.
Does every comment start a workflow run?
No. The Manki App receives the events, drops the ones Manki ignores, and starts your Manki workflow only for the events it acts on, in order for each PR. See Step 3 in the setup guide.
Can I customize the review?
Yes. Add extra checks for the finders under reviewers: in .manki.yml, pick the models for each stage including the second finder, and pin whether a second finder runs with planner.paired.