v0.11.0 / open source

Review diffs, files, and documents
right in your terminal

Code review for AI agents and Claude Code. Annotate diffs, plans, and documents in a TUI. Structured output on quit, ready for AI agents, scripts, or any tool.

brew install umputun/apps/revdiff
revdiff TUI screenshot

Built for one thing, done well

Navigate diffs. Annotate lines. Quit. Your annotations go to the AI agent.

+-

Full-file diff view

Syntax-highlighted diffs with added, removed, and context lines. Collapsed mode shows final text with change markers.

#

Inline annotations

Annotate any line, added, removed, or context. File-level notes too. Annotation list popup to browse all notes across files.

>

Structured output

On quit, annotations go to stdout as structured text. Pipe into Claude, scripts, or any tool. Use --output to write to a file.

/

Search & navigate

Vim-style / search with n/N match navigation. Jump between hunks with [/]. Half-page scroll with Ctrl+d/u.

A

All-files mode

Browse and annotate all git-tracked files with --all-files. Filter with --exclude. Review files outside git with --only.

~

Themes & keybindings

5 bundled color themes. 21 customizable color keys. Full keybinding remapping. Config file, env vars, or CLI flags.

The review loop

You annotate. Claude fixes. You verify. Repeat until done.

/revdiff
Launch
revdiff opens as a terminal overlay on top of your Claude Code session
#
Annotate
Navigate the diff, add annotations on lines you want changed
q
Quit
Structured annotations are passed back to Claude automatically
Fix
Claude reads each annotation, plans the changes, and applies fixes
Re-review
revdiff re-launches with the same ref. Verify fixes, add more annotations, or quit clean to finish

Works with your terminal

As a Claude Code plugin, revdiff launches as an overlay on top of your session.

tmux
display-popup
$TMUX
kitty
kitty @ launch --type=overlay
$KITTY_LISTEN_ON
wezterm
wezterm cli split-pane
$WEZTERM_PANE
ghostty
AppleScript split + zoom
$TERM_PROGRAM
iTerm2
AppleScript split pane
$ITERM_SESSION_ID
Emacs vterm
New frame via emacsclient
$INSIDE_EMACS

Priority: tmux → kitty → wezterm → ghostty → iTerm2 → Emacs vterm

Installation

Homebrew

brew install umputun/apps/revdiff

Go install

go install github.com/umputun/revdiff/cmd/revdiff@latest

Binary releases

Download from GitHub Releases — deb, rpm, archives for linux/darwin amd64/arm64.

Claude Code plugin

Interactive code review directly from a Claude session. Annotate, fix, re-review in a loop.

1

Install

/plugin marketplace add umputun/revdiff
/plugin install revdiff@umputun-revdiff
2

Review

/revdiff master

Opens revdiff in an overlay. Reviews current branch against master.

3

Annotate & fix

Add annotations on lines you want changed. Quit. Claude reads them, plans fixes, applies them. Re-launch to verify.

Slash commands

/revdiff -- smart detection: uncommitted, last commit, or branch diff /revdiff HEAD~1 -- review last commit /revdiff main -- review current branch against main /revdiff HEAD~3 -- review last 3 commits /revdiff --staged -- review staged changes only /revdiff all files -- browse all tracked files in the project

Natural language

"review diff" -- same as /revdiff, smart detection "review diff HEAD~1" -- last commit "review diff against main" -- branch diff "review changes from last 2 days" -- Claude resolves the ref "revdiff for staged changes" -- staged only "review all files exclude vendor" -- browse project, skip vendor/ "what themes does revdiff support?" -- ask about config without launching "switch revdiff to dracula theme" -- modify config via conversation

Output format

Structured, parseable, pipe-friendly.

## handler.go (file-level) consider splitting this file into smaller modules ## handler.go:43 (+) use errors.Is() instead of direct comparison ## store.go:18 (-) don't remove this validation