Imageroborev

Local, continuous code review for the agentic loop.

Find bugs faster and ship better quality code. roborev is a review daemon on your machine. A git hook reviews each commit in the background with the agents you already run, while you keep working.

One Go binary, no runtime dependencies, MIT licensed. Install in one command.

the review looplocal daemon · your agents
$ roborev init
Ready! Every commit will now be automatically reviewed.
$ git commit -m "Add retry to payment webhook"
$ roborev show HEAD                   # later, whenever you want it
Review for 8f2c1a0 (job 214, by codex)
------------------------------------------------------------
## Review Findings

- **Severity**: High
- **Location**: `internal/webhook/retry.go:41`
- **Problem**: A timeout after the POST was delivered retries it, so the
  webhook can be charged twice. Nothing makes the request idempotent.

01 / The gap

Agents commit faster than anyone reads.

A coding agent can land dozens of commits in an hour. Review still arrives at the pull request: once, late, after the agent has moved on and the reasoning that produced the bug is gone from its context. By then every finding is a context switch for a human. roborev moves review to the commit, runs it in the background on your own machine, and gives the result back to the thing that can fix it fastest.

  1. TriggercommitA git post-commit hook queues the review and returns. No CI job, no bot install, nothing waits on the result.
  2. Agents11Codex, Claude Code, Gemini, Copilot, OpenCode, Cursor, Kiro, Kilo, Droid, Pi, and Grok Build, auto-detected.
  3. Hosted services0Reviews run through the agent CLIs already on your machine, on the subscriptions and keys you already pay for.
  4. Binary1A single Go binary: daemon, CLI, terminal UI, and browser UI. SQLite underneath.
  5. Findings closed byyouReviews are a ledger. A finding stays open until a person or an agent addresses it and closes it.

02 / The loop

The loop runs while you work.

Two automation layers close the loop. The post-commit hook reviews every commit with any agent or editor. The agent hook watches supported coding-agent sessions and, once review work piles up, delivers the exact review IDs to the roborev-fix skill before the session goes cold. Neither layer touches your working tree on its own.

The roborev loop: a coding agent commits, the post-commit hook queues a background review through the daemon, findings land in the review ledger, and the agent hook feeds open findings back into the agent session to fix

Layer 1 · post-commit

Every commit, any agent.

roborev init installs the hook, starts the daemon, and registers the repo. Each commit gets a verdict and, when it fails, findings with severities and file locations. Set post_commit_batch_size to review a run of small commits as one range.

Layer 2 · agent hook

The fix comes back to the session.

roborev agent-hook install wires Claude Code, Codex, Copilot CLI, Cursor, Factory Droid, Gemini CLI, Hermes, and Qwen. After a configurable number of turns, commits, or failed reviews, the agent is told which reviews to fix, by ID, and told to verify and close them.

Skills

Fix in one pass. Refine until it passes.

/roborev-fix pulls every open failing review for the branch, fixes the valid findings, documents the invalid ones, and closes them. /roborev-refine reviews, fixes, commits, and re-reviews the whole branch until every review passes, before the PR exists.

Headless

Or run the loop with no session at all.

roborev fix hands open findings to an agent that applies changes and commits. roborev refine runs the same iterate-until-green loop in an isolated worktree, with --max-iterations and --min-severity as the guardrails.

03 / The ledger

Nothing closes itself.

A review that scrolls past in a chat window is a review nobody is accountable for. roborev keeps every review in a persistent queue with a verdict, findings, the exact prompt, and the agent log. Open findings stay visible in the terminal UI and the browser UI until someone closes them, with a response on record if they disagree.

roborev terminal UI in split-screen layout with the review queue on the left and a rendered review on the right
roborev tui: the queue and the selected review, side by side, with vim keys.
roborev browser application showing the live review queue and an open review with its rendered findings
roborev ui: the browser workspace, served by the same daemon over the same SQLite history.

04 / Agents

Bring the agents you already have.

roborev orchestrates the agent CLIs already installed on the machine, so the reviewer can be a different vendor than the writer, a cheaper model than the writer, or a local model behind a proxy. Pick per repo, per workflow, and per reasoning level, and name a backup for when a quota runs out.

Routing

Different agent, different job.

Config keys like review_agent_fast, fix_model_thorough, and security_backup_agent route each workflow (review, fix, refine, security, design) to its own agent, model, and reasoning level.

Failover

Quota errors fail over on their own.

Transient failures retry. Exhausted retries or a quota error fail over to the backup agent. Rate-limited agents sit in a cooldown parsed from the provider's own reset message.

Guidelines

Your rules, in the prompt.

Per-repo review_guidelines in .roborev.toml (or a REVIEW.md) ride along on every review, with global guidelines layered underneath. Bound to a kata project? The task context comes too.

Anywhere

Local models, proxies, and ACP agents.

Point Claude Code at Ollama or LiteLLM with a model@base_url spec, or add any Agent Client Protocol adapter as a named agent. Reviews never require a hosted roborev service.

05 / Depth

Several reviewers, one verdict.

Risky changes deserve more than one opinion. A review panel fans one target out to named subagents, each with its own agent, review type, instructions, and timeout, then a synthesis agent merges them into one review. The same machinery runs security, design, and look-ahead-bias reviews, your own template-driven review types, and whole-codebase analysis.

Panels

Named reviewers, one verdict.

Define [review.subagents.security] and friends once, group them into [review.panels.branch_final], and run roborev review --branch --panel branch_final. Optional members can flake without blocking the panel.

Review types

Built-in lenses and your own.

--type security, --type design, and --type lookahead swap the system prompt. Custom types wrap a Go template rubric in the same schema, severity filtering, and pass/fail verdict.

Analysis

Look at the code you already have.

roborev analyze duplication ./..., plus complexity, dead-code, refactor, api-design, architecture, security, and test-fixtures. Findings land in the same queue; --fix applies them.

Verification

False positives get dropped before anyone reads them.

roborev compact re-checks open findings against the current code, drops the ones that no longer hold, and consolidates the rest into a single review before anyone spends time on them.

06 / Pull requests

The same panel on every pull request.

The daemon polls GitHub and GitLab for open pull and merge requests, runs one panel per PR head against the frozen merge-base range, and posts a single synthesized comment with the member reviewers, runtimes, and costs in the footer. Human discussion from trusted collaborators goes into the prompt; a fork's branch name never gets to pick which rules apply.

GitHub

A bot with scoped permissions.

Install as a GitHub App so comments and checks appear as your-app[bot] with repository-scoped permissions, or use your gh login for a personal project. Each reviewed head gets a check.

GitLab

Merge request notes, same daemon.

Point the poller at GitLab projects and the synthesized review lands as an MR note, with quick-action escaping so an agent's output cannot drive the MR.

Control

Skip what should not be reviewed.

[ci].skip_labels exempts drafts and generated updates and reports a skipped check. Per-repo .roborev.toml overrides the panel, agents, and reasoning for one project without touching the rest.

Runs anywhere

Runs on a box you own.

The CI poller is the same roborev daemon under systemd or launchd on a box you own. It reviews on the interval you set, at the concurrency you set, with no per-seat pricing and no code leaving your network.

07 / Visibility

Know what review costs and what it catches.

Every job records its agent, model, runtime, token usage, estimated cost, and outcome. The browser UI turns that into an analytics workspace; the exports turn it into your own dashboards; the experiments turn it into decisions about which configuration your team should actually run.

Analytics

Cost, latency, reliability, outcomes.

Filter by project, source, agent, model, or time range, with the filters encoded in the URL so a view can be shared. roborev cost, summary, and insights give the same numbers on the command line.

Exports

JSON with cursors, built for pipelines.

roborev export reviews, ci-metrics, and ci-costs emit stable, resumable JSON for review turnaround, CI outcomes, and job-level spend. A metadata profile keeps review text out when you only need the numbers.

Experiments

Compare two review configurations.

Assign branches to a default or experimental group and roborev keeps each branch in its group across local and CI reviews. roborev config validate checks an experiment before it runs a single review.

Events

Route outcomes where the team looks.

[[hooks]] run shell commands on review events: desktop notifications, Slack, webhooks. Built-in kata and beads hooks file findings as tracked issues, scoped to the branches you name.

08 / Ownership

Local by construction. Shared when you choose.

The daemon runs on your machine, reads your repo, and writes to a SQLite database under ~/.roborev. Nothing leaves except the calls your agents already make. Turn on PostgreSQL sync and every machine keeps its local database while the team's review history converges in one place, deduplicated by UUID.

  • CLIreview, show, fix, refine, analyze, list, and --json where scripts need it.
  • TUIThe live queue in the terminal, split-screen on wide windows.
  • Browser UIReviews and analytics served by the daemon, loopback by default.
  • HTTP APIEnqueue, query, and stream job output over server-sent events.
  • SkillsBundled review, fix, refine, and respond skills for Claude Code, Codex, Droid, and Grok Build.
  • TelemetryAnonymous daemon counts only, no repo names or code, off with ROBOREV_TELEMETRY_ENABLED=0.
Several machines, each running a roborev daemon over its own SQLite database, syncing review history bidirectionally through a shared PostgreSQL database

09 / Boundary

The layer before the pull request.

Hosted review bots read your code from someone else's cloud, once, when the pull request opens. Human review is still the gate, and it should be. roborev is the layer in between: continuous, local, running on the agents you already pay for, so what reaches the PR has already been reviewed and fixed several times over.

Hosted PR bot

Review as a service.

Arrives at the pull request. Another vendor with read access to your repositories, another per-seat bill, and findings that land after the agent's context is gone.

Human review

The gate.

The most expensive attention on the team, spent once per PR. Save it for design and intent. The retry loop that re-sends a POST should never reach it.

roborev

The loop before the gate.

Per commit, on your machine, with your agents. Findings go back to the agent that can fix them now, and the ledger says what is still open when a human finally looks.

10 / Start

Install once. Every commit after that gets read.

The guide walks the loop from roborev init to CI panels and team-wide history. The docs carry every command, configuration key, and integration. roborev quickstart prints the setup guide for your coding agent to finish itself.

macOS / Linux curl -fsSL https://roborev.io/install.sh | bash
Homebrew brew install kenn-io/tap/roborev
Windows powershell -ExecutionPolicy ByPass -c "irm https://roborev.io/install.ps1 | iex"

See all install options.

Expanded documentation capture