Even before their launch, I was running a custom local Claude agent for my team to review PRs. The feedback was great and it caught real bugs, but the workflow was a massive time sink. I was manually invoking "claude --agent .. branch_name", grab the output, filter it and post the relevant comments.
So I built reviewd to automate the local execution: https://github.com/simion/reviewd
It is a Python-based background daemon that runs on your machine or a VPS.
How it works: 1. It polls GitHub/BitBucket for open PRs. 2. Creates a near-instant git worktree (no re-cloning). 3. Optionally runs your actual local test/lint commands (the AI gets the stdout/stderr). 4. Pipes the context into the Claude, Gemini, or Codex CLI you already have installed. 5. Parses the JSON output and automatically posts structured inline and summary comments to the PR via Github/Bitbucket API.
The Echo Chamber Problem: Besides avoiding the $15/PR extortion fee, there's a technical reason to run this locally: avoiding the AI echo chamber. If your devs are using Claude to write the code, using Claude to review it means it's grading its own homework and shares the same blind spots. Because reviewd is model-agnostic, you can write with Claude, but configure the daemon to use Gemini or Codex for the review to get a true second opinion.
Under the hood: - Uses thread-safe SQLite in WAL mode to track state so it never double-posts. - Runs fully headless (systemd ready, no TTY needed). - Tool execution is sandboxed depending on the CLI (e.g., Claude's --disallowedTools Write,Edit).
It completely fixed the PR bottleneck for my team without adding another paid third-party CI integration.
Repo is here: https://github.com/simion/reviewd
Would love to hear your thoughts, or if you spot any edge cases I missed.