v1.0.0 / open source
Review diffs, files, and documents
right in your terminal
Code review for AI agents, Claude Code, and pi. 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
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. Press i for an info popup with review scope, file/status counts, aggregate +/- stats, and the commit log for the current ref range. Blame gutter shows who wrote each line.
#
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 tracked files with --all-files (git). Filter with --include and --exclude. Review standalone files with --only or piped output with --stdin. Diff any two files with --compare-old/--compare-new — no VCS repo needed.
v
Collapsed & wrap modes
Collapsed mode (v) shows final text with change markers. Word wrap (w) for long lines. Line numbers (L) and blame (B) gutters.
C
Claude Code integration
Install via Claude Code plugin. Use /revdiff to review uncommitted changes, /revdiff-rerun to address annotations, and a planning plugin that auto-launches on plan exit.
P
Pi integration
Launch revdiff from pi, keep captured annotations visible in a widget and side panel, then rerun or apply them when you’re ready.
O
OpenCode integration
Launch revdiff from OpenCode via /revdiff command or tool call. Plan-review plugin auto-launches on plan mode idle.
¶
Markdown TOC
Single-file markdown review gets a sidebar with header navigation. Jump between sections, track your position as you scroll. Works with --only and --stdin.
~
Themes & keybindings
8 bundled color themes with interactive selector (T) and live preview. 23 customizable color keys. Full keybinding remapping. Optional vim-motion preset. Community theme gallery.
⎇
Git, Mercurial & Jujutsu
Works with Git, Mercurial, and Jujutsu repositories. Auto-detects the VCS (jj wins over git in colocated repos). Diffs and blame work across all three backends; --all-files is supported for git and jj.
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.
zellij
zellij run --floating
$ZELLIJ
kitty
kitty @ launch --type=overlay
$KITTY_LISTEN_ON
wezterm / kaku
wezterm cli split-pane
$WEZTERM_PANE
cmux
cmux new-split + cmux send
$CMUX_SURFACE_ID
ghostty
AppleScript split + zoom
$TERM_PROGRAM
iTerm2
AppleScript split pane
$ITERM_SESSION_ID
Emacs vterm
New frame via emacsclient
$INSIDE_EMACS
Priority: tmux → zellij → kitty → wezterm/kaku → cmux → ghostty → iTerm2 → Emacs vterm
Installation
Homebrew
brew install umputun/apps/revdiff
Arch Linux (AUR)
paru -S revdiff
Debian/Ubuntu
sudo dpkg -i revdiff_*.deb
RPM-based
sudo rpm -i revdiff_*.rpm
Pi package
pi install https://github.com/umputun/revdiff
Download
deb, rpm, archives for linux/darwin amd64/arm64 on GitHub Releases
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@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
Codex plugin
Same diff review workflow for Codex CLI sessions. Plus plan review via rollout file extraction.
1
Install
git clone https://github.com/umputun/revdiff.git
cd revdiff
cp -r plugins/codex/skills/revdiff ~/.codex/skills/revdiff
cp -r plugins/codex/skills/revdiff-plan ~/.codex/skills/revdiff-plan
2
Review
/revdiff
/revdiff-plan
Same /revdiff workflow as Claude Code. /revdiff-plan extracts the last Codex response for annotation.
OpenCode integration
Diff review and plan annotation for OpenCode sessions. Wraps the same launcher script used by Claude Code.
1
Install
cd plugins/opencode && bash setup.sh
2
Review
/revdiff
/revdiff HEAD~3
Plan-review plugin auto-launches revdiff when the assistant exits plan mode.
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
## handler.go:43-67 (+)
refactor this hunk to reduce nesting
## store.go:18 (-)
don't remove this validation