All posts

Cerber: AI drafts the review. I decide what gets sent.

One reviewer at a desk faces oversized code reviews, fanned out around them.

Fifteen pull requests are waiting on me. A normal Tuesday, and already more than I can review properly.

Behind each one is someone waiting for an answer. Maybe they're blocked. Maybe they've moved on and will have to pick the whole thing up again when I finally reply. Meanwhile, their branch keeps drifting from main.

It got to a point where there were so many PRs that I started asking which ones I had the attention for that day, rather than whether the changes were good. I wasn't happy with what that meant for the people asking.

Four answers that didn't quite work

So I tried a few ways to get through the queue, and considered one more.

  • Skim and approve. I've approved changes I hadn't properly read. It cleared my queue, but left someone else carrying the risk.
  • Leave it for tomorrow. More time for me, another day waiting for the author. Their branch kept drifting while I put it off.
  • Ask Claude each time. Useful reviews, but fifteen PRs meant fifteen worktrees, fifteen prompts and fifteen waits. This nearly worked; I wanted to automate the starting.
  • Ask authors to review their own code first. I considered it, but it wouldn't help someone halfway through a change asking, is this even the right direction? I still wanted to be the person they could ask.

So I stepped back. If I could rebuild this whole workflow from scratch, what would I want it to look like?

I'd want a draft waiting when I sit down, and a chance to check it before anyone else sees it. A wrong finding on my laptop is easy to delete. On a PR, it becomes someone else's work to refute.

So I built Cerber.

Cerber: open a drafted review, challenge a finding, edit the comments, and send the review to GitHub.

A draft waiting for me

cerber serve watches GitHub for PRs where my review is requested and runs Claude Code over each one. I open a local web UI to find a summary, a walkthrough of the change, draft inline comments and a verdict.

Then I do the part I wanted more time for: check the reasoning. I rewrite comments I half agree with, delete ones I don't, and ask questions where I'm unsure. When I'm happy with the review, I press Send. It goes out under my name, so I need to be willing to stand behind it.

By default, a review stays a draft until I press Send. There's an opt-in auto-send mode for approvals at or above a chosen confidence threshold; comment-only reviews and requests for changes still need a human click.

I named it after Cerberus, the three-headed guard dog. In this case, the job is keeping draft reviews from escaping to GitHub.

A three-headed hound guards a doorway, keeping the review drafts inside.

Before you try it

  • Code goes to Anthropic. Cerber runs Claude Code on your machine. Drafts and state stay local; the model doesn't.
  • You need a paid Claude Code plan. It uses your existing login and usage. There's no API-key option.
  • GitHub only. It watches PRs where your review has been requested.
  • No trust by default: reviews can't execute commands on your machine unless you explicitly trust their authors, individually or through GitHub teams or organizations.

Cerber is MIT-licensed and available on npm as @fullstackhouse/cerber. Get it on GitHub.

If you're also the person reviews pile up behind, I'd like to hear what's working for you.

Bring the napkin sketch.

Thirty minutes with a full-stack engineer, plus a short written report that's yours to keep.

30 minGoogle Calendarno sales deck

Prefer to write? Send us a message