A per-commit code review system for Jujutsu repositories.
demo.mov
nvim-demo.mov
Kenjutu is a local code review tool for Jujutsu repositories that use Git as a backend. It lets you review changes commit-by-commit with hunk-level granularity.
Think of it as having a staging area for every commit — you selectively mark regions as reviewed, building up your progress hunk by hunk. Review state is persisted as git objects in your local repository — no database, no external service. Because review progress is tracked at the content level, it survives rebases and history rewrites.
This is very much a work in progress. Things will break, features are incomplete, and the interface may change significantly. Feedback are welcome!
When each commit is a self-contained, coherent change, it's easier to reason about what it does. Clean commits help you organize your own thinking, make pull requests easier to review commit-by-commit, and leave a git history that explains why code exists — not just the messy path it took to get there.
This matters even more as we spend more time reviewing AI-generated code — making each commit self-contained lightens the mental load of verifying what the AI produced.
Jujutsu makes this workflow practical by treating history as mutable — amending any commit is as easy as editing the latest one. Kenjutu completes the loop by tracking your review progress through those rewrites, so you never lose sight of what you've verified.
Kenjutu is available in three interfaces, all sharing the same core engine:
| Interface | Binary | Description | Docs |
|---|---|---|---|
| Desktop | — | Tauri 2 app with GitHub PR integration | docs/desktop.md |
| TUI | kj |
Terminal UI for reviewing in the terminal | docs/tui.md |
| Neovim | kjn |
Neovim plugin for in-editor review | docs/nvim-plugin.md |
Kenjutu also ships kjc, a utility that outputs diff comments as structured
JSON for AI agents. See docs/comment-cli.md.
- Per-commit review — Review changes one commit at a time, the way they were authored
- Hunk-level tracking — Mark individual hunks as reviewed, not just whole files
- Built for jj — Designed around jj's commit graph, change IDs, and mutable history (requires git backend)
- Survives history rewrites — Review state is tied to jj's change IDs, not commit hashes. Amend, rebase, or squash freely — your review progress stays with it.
- Review state as git objects — Review progress is stored as git objects in your repo, no database or external service
- GitHub PR support — View and review pull requests locally (desktop app)
- Inline comments — Add comments on local commits or read PR comments ported to your changes
- Core: Rust — git2 for git ops, jj CLI for commit graph and status
- Desktop: React 19 + Tauri 2
- TUI: Ratatui + Crossterm
- Neovim: Lua plugin + Rust CLI backend (
kjn)
Each interface has its own installation guide — pick the one that fits your workflow:
- Desktop App — Full-featured GUI with GitHub integration
- Neovim Plugin — Stay in your editor
- TUI — Review from the terminal
For AI-facing comment retrieval, see Comment CLI.
All interfaces require Jujutsu (v0.38+) to be installed.
Apache License 2.0 — see LICENSE for details.