
Only the findings that hold up.
Self-hosted AI code review that checks every finding before it comments.
int32 overflows above $21M (2³¹ cents), and return int(sum) hides it. Total returns int: keep the sum an int.
Your checks, on the changed lines
How a review works
Five steps,
and one of them says no.
DiffHarbor reviews every pull request and checks its findings before they reach you. Learn more
- 01
Diff
The whole PR first, then only what each push changes. Noise stays out.
- 02
Context
Your code, its history, your rules and what the team taught it.
- 03
Review
An agent works through the change like a reviewer would.
- 04
Verify
Every finding is checked again. What can't be backed up is dropped.
- 05
Result
A walkthrough and comments on the lines, with fixes you can apply.
Features
Fewer comments.
Each one backed up.
Fewer comments, each one backed by your own tooling and a second look. Incremental by default, so a rebase doesn't start the noise again. Learn more
Verified findings
Every finding is checked in the code by a second model. What it can't back up never gets posted.
Your checks as context
The linters, scanners and tests your repo already has, run on the changed lines only.
Incremental
A push reviews only files whose changed lines changed. A rebase or a merge of main reviews nothing.
Committable fixes
Local fixes become suggestion blocks. Fixed findings get their threads resolved.
Chat and learnings
Reply to a finding or mention the bot. Corrections become rules for the next reviews.
Large PRs in parts
Big diffs split by folder, each part reviewed and verified on its own, findings merged by severity.
PR reports
An HTML page per PR: reading order, diffs with findings, call graphs and merge risks. With your branding.
Per-repo settings
Rules, review skills, custom checks and monorepo overrides, all from the repo's base branch.
Self-hosted
Your code stays
in your harbor.
DiffHarbor runs on your infrastructure, next to your forge. Your code goes to your server and to the model provider you pick, nowhere else. Learn more
- One container
- A single Go binary on the standard library only. Expose two webhook routes; nothing else needs to be public.
- Your model, your keys
- Any model Pi supports, with automatic fallback when a provider hits a limit. Or point it at your own AI gateway.
- GitHub and GitLab
- A GitHub App or a GitLab bot user, gitlab.com or your self-managed instance.
- Reports behind your SSO
- PR reports are served by your server, under your login, with your logo and colors.
# the values go into .env next to it $ cp compose.example.yml compose.yml $ docker compose up -d --build ✓ diffharbor listening on :3000
Rounding each line before the discount loses a cent on three-seat bundles. Round once, on the invoice total.
That's on purpose: finance rounds half-up per line, never per invoice.
Understood, per-line rounding is the rule here. Resolving this thread.
Talk to the bot
A reviewer
you can argue with.
A reply in a thread gets an answer, a check of the claimed fix, or a concession and a resolved thread. Learn more
reply in a threadAnswers, checks your fix, or concedes@bot <question>An answer about the PR, from the checkout@bot reviewA full review, on demand@bot review allA large PR, reviewed in partsSecurity
It runs the PR's code.
Never near your keys.
The agent and the checks run the PR's code. DiffHarbor is built so that code can't reach the keys that matter. Learn more
root · node
Split privileges
Root holds the keys.
git, checks and the agent run as an unprivileged user with a read-only, short-lived token passed by env.
before · after
Clean jobs
Symlinks in a PR can't reach the server's files. Leftover processes are killed before and after every job; output is capped.
Because the checks run the PR's code, install DiffHarbor on repos whose PR authors you trust, such as your team.
This month, so far
Most findings never
make it to your PR.
One team's instance: every finding the agent raised, and what verify could back up in the code.
- Pull requests
- 1,284
- Findings raised
- 3,917
- Verified, posted
- 1,106
- Dropped by verify
- 2,811
- Threads resolved
- 942
Bring DiffHarbor Pro into your harbor.
We're onboarding teams who run it on their own infrastructure. Tell us about your forge and your models, and we'll get you set up.