Skip to content

arsenyinfo/nitpicker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nitpicker

Runs multiple LLM reviewers concurrently on a git repository, then aggregates their findings into a single prioritized report.

Each reviewer is an agentic loop that can call tools (read files, grep, glob, git commands) to explore the repo before writing its review. A separate aggregator model deduplicates and synthesizes the individual reviews into a final verdict.

Requirements

  • Rust toolchain
  • A git repository to review
  • At least one configured LLM (API key or Gemini OAuth)

Installation

cargo install --git https://github.com/arsenyinfo/nitpicker

Quick start

# review the last commit in the current repo (requires nitpicker.toml at repo root)
nitpicker

# review a specific repo
nitpicker --repo /path/to/repo

# customized prompt
nitpicker --repo /path/to/repo --prompt "Review only src/api/"

# analyze existing code (no PR/diff required)
nitpicker --analyze src/components/
nitpicker --analyze src/main.rs
nitpicker --analyze  # analyze entire repo

Configuration

Configuration is loaded from (first match wins):

  1. --config <path> (explicit flag)
  2. nitpicker.toml in repo root
  3. ~/.nitpicker/config.toml (global config)
# create a config in current directory
nitpicker init

Example nitpicker.toml:

[aggregator]
model = "claude-sonnet-4-6"
provider = "anthropic"
max_tokens = 8192        # optional, default: no limit

[[reviewer]]
name = "claude"          # used in output headers and logs
model = "claude-sonnet-4-6"
provider = "anthropic"

[[reviewer]]
name = "gpt"
model = "gpt-5.2-codex"
provider = "openai_compatible"
base_url = "https://api.openai.com/v1"
api_key_env = "OPENAI_API_KEY"

It is recommended to use providers that were not used for the initial building to enforce diversity of thought.

Provider types

provider Auth Required fields
anthropic ANTHROPIC_API_KEY env var
gemini GEMINI_API_KEY env var, or auth = "oauth"
anthropic_compatible env var named by api_key_env base_url, api_key_env
openai_compatible env var named by api_key_env base_url, api_key_env

Gemini OAuth

Gemini can be used via Google Code Assist OAuth (for free or with subscription, limits apply) — no API key needed, just a Google account. This approach mimics the auth of Gemini CLI, so no guarantees on reliability.

[aggregator]
model = "gemini-3-flash-preview"
provider = "gemini"
auth = "oauth"

[[reviewer]]
name = "gemini"
model = "gemini-3.1-pro-preview"
provider = "gemini"
auth = "oauth"

Authenticate once before reviewing:

nitpicker --gemini-oauth

This opens a browser, completes the OAuth flow, and saves the token to ~/.nitpicker/gemini-token.json. The token is refreshed automatically on subsequent runs.

CLI reference

--repo <PATH>      git repository to review [default: .]
--config <PATH>    config file [default: <repo>/nitpicker.toml, then ~/.nitpicker/config.toml]
--prompt <TEXT>    review instructions (optional, has a sensible default)
--analyze [PATH]   analyze existing code instead of reviewing changes
--gemini-oauth     run Gemini OAuth authentication flow and exit

About

Standalone Rust CLI that runs multiple LLM reviewers concurrently on a git repo and aggregates findings

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages