Research software · arXiv preprint

RepoReviewer: A Local-First Multi-Agent Architecture for Repository-Level Code Review

An open source architecture for reviewing GitHub repositories through context synthesis, file analysis, finding prioritization, and structured reporting.

Automated code reviewRepository contextAgent orchestration

Abstract

Repository-level code review requires reasoning over project structure, repository context, and file-level implementation details. Existing automated review workflows often collapse these tasks into a single pass, which can reduce relevance, increase duplication, and weaken prioritization. We present RepoReviewer, a local-first multi-agent system for automated GitHub repository review with a Python CLI, FastAPI API, LangGraph orchestration layer, and Next.js user interface. RepoReviewer decomposes review into repository acquisition, context synthesis, file-level analysis, finding prioritization, and summary generation. We describe the system design, implementation tradeoffs, developer-facing interfaces, and practical failure modes. Rather than claiming benchmark superiority, we frame RepoReviewer as a technical systems contribution: a pragmatic architecture for repository-level automated review, accompanied by reusable evaluation and reporting infrastructure for future empirical study.

Abstract from the original preprint. Read the HTML full text.

Explore the software

Demo and recorded examples

Explore a recorded repository review, with file findings, coverage details, and annotations about which findings have been checked. The public demo can be inspected without connecting a review backend.

The demo is maintained separately and may include changes made after the March 2026 preprint. Its examples illustrate software behavior; the findings reported in version 1 are described in Evaluation and scope. Check the demo for current requirements when running a new task.

Inside the paper

Contribution and evidence

  • Repository context before review

    The workflow acquires a public repository, summarizes its structure and documentation, and passes that context to file analysis.

    Section 3 in the paper
  • Prioritized, structured findings

    Findings carry file locations, severity, suggestions, and snippets. A largely deterministic priority stage deduplicates and sorts findings.

    Sections 2 and 3 in the paper
  • A shared engine and reusable reports

    CLI, API, and web interfaces share a review engine. JSON findings and Markdown reports are saved for inspection and further analysis.

    Section 4 in the paper

Reading the results

Evaluation and scope

What was evaluated

The paper presents engineering demonstrations, generated artifacts, and an evaluation harness for future studies. It does not report a completed benchmark or statistically supported superiority over simpler baselines.

Read the evaluation

Scope of version 1

Version 1 focuses on public GitHub repositories and uses external model providers. Line mapping is best effort and severity labels are heuristic. Private repository support and GitHub review publishing are outside the version described.

Read the limitations

This page describes the March 2026 preprint. The code repository may include later changes. Deployment on your own infrastructure can still involve external search or model services.

Reference

Cite this paper

This paper is relevant when comparing architectures for repository review, the use of project context, and interfaces for structured review reporting.

Zhang, P. (2026). RepoReviewer: A Local-First Multi-Agent Architecture for Repository-Level Code Review. arXiv. https://doi.org/10.48550/arXiv.2603.16107

DOI: 10.48550/arXiv.2603.16107

View BibTeX
@misc{zhang2026reporeviewer,
  title = {{RepoReviewer: A Local-First Multi-Agent Architecture for Repository-Level Code Review}},
  author = {Peng Zhang},
  year = {2026},
  eprint = {2603.16107},
  archivePrefix = {arXiv},
  primaryClass = {cs.SE},
  doi = {10.48550/arXiv.2603.16107},
  url = {https://arxiv.org/abs/2603.16107},
  note = {Version 1, preprint}
}