Terminal diffs
for humans & agents

Hunk is a review-first diff viewer that plays nice with agents. It's fast, it looks good, and it works everywhere.

Star on GitHub8.5k
v0.19.0Git-installable extensions, exact-line agent guidance
hunk diff — split view
Hunk split-view diff in the GitHub Dark theme
and 59 more

# from the community

Watch a video walkthrough.

# what you get

Don't just read code, understand it.

One stream, every file.

The whole changeset reads top to bottom in sidebar order — no flipping between single-file views. File counts at a glance, hunk jumps with [ and ], and the sidebar takes you straight to any file.

How reviews work →
Hunk's multi-file review stream: a sidebar lists changed files while the main pane shows consecutive file diffs top to bottom

Your agent's reasoning, beside the code it explains.

Agents leave notes in a sidecar; hunk renders each one inside the diff, right above the hunk it annotates — summary, rationale, and author. Step through hunks with [ and ] and the notes follow.

Agent annotations, in depth →
Hunk is very good. It has replaced any other local diff viewer for me.
Mitchell Hashimoto, creator of Ghostty & Vagrant

Keys when you're fast, mouse when you're browsing.

Click a file in the sidebar to jump, wheel-scroll the stream, hover a row to leave a note — or never leave the keyboard. Pipe patches straight in and hunk is your pager, too.

Keyboard & mouse reference →

Split or stack — or let auto decide.

Side-by-side when your terminal is wide, stacked when it's narrow. Auto picks for you; press 1, 2, or 0 to override at any time, with wrapping and line numbers toggled live.

Layout & display options →
Love hunk.
DHH, creator of Omarchy and Ruby on Rails

Real syntax highlighting. Dozens of themes.

Understand structure, not just added and removed lines. Ships with its own looks plus the classics — Catppuccin, Dracula, Gruvbox, GitHub, and more — or roll your own in config.

Theme gallery & config →

Extend it however you want.

Add a theme, a command, a new way to preview a file, a docked pane, or a whole version-control backend. Extensions are plain TypeScript, and you can install one from any git repository.

Writing extensions →
~/.config/hunk/extensions/hello.ts
import type { HunkExtensionAPI } from "hunkdiff/extension";

export default function (hunk: HunkExtensionAPI) {
  hunk.registerCommand(
    { id: "hello", title: "Say hello", key: "f6" },
    (ctx) => ctx.notify("Hello from my extension"),
  );
}

# install

Wherever your terminal lives.

  • npmnpm i -g hunkdiff
  • Homebrewbrew install hunk
  • misemise use -g hunk
  • Nixnix run github:modem-dev/hunk

Then hunk diff to review your working tree, or hunk show to review a commit. npm installs require Node.js 18 or newer.

Try hunk on your next changeset.