Building levi
How I built levi, a small and fast git diff viewer in Rust, with Claude Code: from an empty repository to its first releases in under two days, and on from there, session by session.
levi is a terminal git diff viewer that does one thing: browse the commits on a branch, the files each one touched, and their diffs, with fzf-style search on top. I built it with Claude Code. These 10 posts follow the build in the order it happened: the decisions, the benchmarks, and how the agent and I worked together.
2026
-
Building levi: A Small, Fast Git Diff Viewer in Rust, Written with Claude Code
Why I built levi, a terminal git diff viewer with fzf-style search, the design decisions behind it, and how I built it with Claude Code from a written plan.
-
Building levi, Night One: From First Commit to 0.1.0 in 90 Minutes
The first session of building levi with Claude Code: parsing git log as a stream, a three-pane TUI on stderr, background loading, fuzzy search on every core, and CI.
-
Building levi, After Midnight: A 55-Second Code Search Down to 0.16 Seconds
How levi's /c code search over git history went from 55 seconds to 0.16 on git.git: parallel git log -G, loading history on every core, and searching only what the query matches.
-
Building levi, Day Two: The Polish That Makes a Terminal UI Usable
Ten levi releases of polish: changed-word diffs, mouse support, narrow terminals, NO_COLOR, a demo GIF, a crate name clash and release binaries for every platform.
-
Building levi, Saturday Evening: Getting a Find Out to Your Clipboard, Your Editor and Your Agent
levi 0.13 to 0.14.1: copying over SSH with OSC 52, drag to copy, levi --filter for scripts and coding agents, and Ctrl-O to open a file at the line you're reading.
-
Building levi, Sunday Morning: Syntax Colors, a Logo, and a Pick That Lands in Your Agent's Input
levi 0.15 and 0.16: syntax colors that follow your terminal's theme, tints mixed from its background, a measured README, and a herdr plugin that hands a commit to a coding agent.
-
Building levi, Monday: Keeping Up With Commits From Another Terminal, and Panes You Can Drag
levi 0.17 and 0.18: a watcher that asks git every two seconds what changed, loads only new commits, and panes you resize by dragging their borders.
-
Building levi, Tuesday: Watching an Agent's Uncommitted Changes Without Touching the Index
levi 0.19: uncommitted changes as a row on top of the log, live as an agent edits, read with git plumbing so levi never writes to .git.
-
Building levi, Wednesday: Telling Any Coding Agent What You Have Open, With levi --focus and tmux
levi 0.20: levi --focus prints what an open levi shows, so any agent can look at your screen, and a tmux plugin types a commit reference into an agent's pane.
-
Building levi, Nine Days Later: A Neovim Plugin That Hands Your Coding Agent a Commit
levi's Neovim plugin: :Levi opens the git log in a floating window, and :LeviSend types a commit, file and lines into your agent's Neovim terminal, unsent.