- Go 42.1%
- Vue 28.3%
- TypeScript 15.4%
- CSS 13.4%
- Makefile 0.7%
- Other 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
A Go binary that serves a Vue UI for reviewing a branch's diff (all commits, one commit or a range) and doubles as the CLI agents use. - Unified and side-by-side diffs with syntax highlighting, old/new full-file views, file tree, viewed files and read chunks. - Generated files (sqlc, mocks, lockfiles, linguist-generated) are folded; gqlgen resolvers stay visible; rever-generated overrides. - Threads answered by a spawned `claude -p` session or by Claude Code / Codex through `rever reply`, with Mermaid/SVG diagrams and a zoomable full-screen view. - Agents can mark a thread as being worked on and keep a per-review task list that the reviewer reorders; `rever instructions` prints the guide. - Threads survive amends/rebases and merged branches; the UI resyncs after missed live updates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| cmd/rever | ||
| docs/screenshots | ||
| internal | ||
| web | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
| sqlc.yaml | ||
rever
A local code review tool for your own branches, built to review alongside AI agents.
rever shows a branch's diff in the browser: the whole branch, one commit, or any range of commits. You comment on lines, and Claude answers in the thread, or a Claude Code or Codex session picks the thread up from the command line. Agents can reply with diagrams, say what they're working on, and keep a task list that you put in order.
Features
- Any slice of the branch. Click a commit to see it alone, shift-click to select a range, or use All, Since review and Latest. The selection lives in the URL, and new commits appear as you push them.
- Unified or side by side, with syntax highlighting, and an Old / New view of the whole file.
- Track what you've read. Mark files viewed and chunks read (
x). A read mark is tied to the change itself, so it survives switching commit ranges and resets when that code changes again. - Generated files out of the way. sqlc, mockgen and protoc output,
go.sumand other lockfiles, and minified and vendored files are folded and left out of the counts (see Generated files). - Threads with agents. Each thread chooses who answers: Claude (run by rever), any agent through the CLI, or nobody (notes for yourself). Replies are Markdown; Mermaid and SVG diagrams render inline and open full screen to zoom and pan.
- Agents show their work. An agent can mark a thread "working on it" with a note on what it's doing, and keep a task list that you reorder by dragging.
- File tree or flat list, keyboard shortcuts for everything, and light and dark themes.
![]() |
![]() |
| Tasks agents keep and you order; Codex is working on a thread. | One commit, side by side, dark theme. |
Install
You need Go 1.27+, Node with pnpm, and git. The claude CLI is optional; without it, threads are answered from Claude Code or Codex sessions instead.
make web-install && make install # builds the UI into the binary and installs `rever`
Use
cd ~/some/repo
rever # review the current branch against main/master
rever feat/x --base develop --open # another branch and base; open the browser
Then open http://localhost:4141. rever only listens on localhost. Reviews, threads and tasks are stored in .git/rever.db, so every worktree of a repository shares them.
| Keys | |
|---|---|
j k |
next / previous file |
[ ] |
previous / next commit |
n p |
next / previous thread |
a r |
all commits / since last review |
s |
unified or side by side |
x X |
mark chunk read (and jump to the next) / the whole file |
d o w |
diff / old / new file (with Shift: all files) |
Threads and agents
Each thread has a Replies setting:
- Claude: rever runs
claude -pin the repository with read-only tools (Read, Grep, Glob, git log/show/diff/blame) and streams the answer into the thread. Each thread keeps its own Claude session, and follow-ups resume it. Use--claude/REVER_CLAUDEfor a different binary and--model/REVER_MODELto pick a model. - Any agent: the thread waits until an agent replies through the CLI.
- Off: notes for yourself.
Agents (and you) use the same binary from inside the repository:
rever threads --waiting --json # threads queued for an agent
rever show t_2b7e # location, code context and messages
rever working t_2b7e --as codex -m "Checking the callers" # shows you're on it; clears when you reply
rever reply t_2b7e --as codex -m "…" # Markdown; ```mermaid blocks render as diagrams
rever diagram t_2b7e flow.mmd --as codex # .mmd/.mermaid or .svg
rever comment internal/x.go:42 --as claude -m "…" # start a thread
rever resolve t_2b7e
Tasks
Each review has a task list in the side panel (Tasks tab). Agents add tasks and work through them from the top; you reorder them by dragging (or Alt+↑/↓), tick them off, edit them or delete them.
rever tasks # open tasks, in your order (--all, --json)
rever task add "Cover n == max" --as claude -m "details" [--thread t_2b7e] [--top]
rever task start 3 --as claude -m "Writing check_test.go" # run again to update the note
rever task done 3 --as claude -m "Added in a1b2c3d"
rever task todo|show|rm 3
rever task move 3 --to 1
Telling your agents about rever
rever instructions prints a short Markdown guide to the agent commands. Point your agents at it from ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md (or a repository's own file):
## Code review (rever)
When the reviewer mentions rever, review threads or tasks, run `rever instructions` and follow it.
Or paste the guide in directly with rever instructions >> AGENTS.md.
Generated files
A file counts as generated, and is folded, when (first match wins):
.gitattributessetsrever-generated;rever-generated=falsealways shows the file. This changes rever only, not GitHub.- It's a file generators scaffold but people edit, such as gqlgen's
*.resolvers.go. These are always shown, even when markedlinguist-generated. .gitattributessetslinguist-generated.- It's a lockfile (
go.sum,pnpm-lock.yaml,Cargo.lock, …), has aCode generated … DO NOT EDITor@generatedheader, or matches a common generated, mock, minified or vendored path.
Development
Go, Vue 3 + Vite and SQLite (sqlc + goose), built into a single binary. See CLAUDE.md for the layout and conventions.
make dev # API on :4141, Vite on :5173
make test
make generate # after changing SQL



