Why diffcat?
There are good diff tools already: delta, difftastic, lazygit, tig. diffcat is narrower on purpose, its main focus is on making the git diff view experience delighful.
Features
- TUI with native vim keybindings
- GitHub-style diffs: green/red tints, line-number gutters, syntax highlighting, surrounding-line expansion
- Unified or side-by-side view (
s), light/dark theme (t) - Auto-detected base, or any ref via
--base - Commit history view with per-commit diffs
- Stats dashboard (
S): contribution calendar, per-author ranking, activity charts, streaks, and a human-vs-AI split that names each agent
Demo
Install
Prebuilt binary (no Go required). Download the tarball for your platform from the
latest release
(darwin-amd64, darwin-arm64, linux-amd64, linux-arm64), then:
tar -xzf diffcat-*-darwin-arm64.tar.gz # match the file you downloaded sudo mv diffcat /usr/local/bin/
With Go (1.25+):
go install github.com/trebaud/diffcat/cmd/diffcat@latest
From source:
git clone https://github.com/trebaud/diffcat.git && cd diffcat && ./scripts/install.sh
Commands
diffcat [path] [--base <ref>] # launch the TUI (path defaults to .) diffcat files [path] [--base <ref>] # print the changed-file list, non-interactive
--base, -b <ref> overrides the base. It accepts any git ref: a branch, remote
branch, tag, or commit.
diffcat -b develop diffcat -b origin/main diffcat -b v1.2.0 diffcat -b 3f9a1c2
Without --base, the base is auto-detected: origin/HEAD, else master, else main.
License
MIT, see LICENSE. Built on Bubble Tea, Lip Gloss, Cobra, and Chroma.





















