The change trace
Your whole diff as one strip: a segment per file, a tick per hunk. Additions rise, deletions drop, and the amber playhead follows you. Click a tick to jump.
A local proof desk for code written by coding agents. Read every hunk, stage what holds up, commit.
Agents change a lot of files quickly. echo keeps your hands on four keys while you read.
Every hunk is headed with the function or section it sits in, so you know where you are without counting lines.
The review follows the same path order as the sidebar, and untracked files are not pushed to the end.
Staging jumps to the next file with work left, and the lists update before Git has even answered. u takes it back.
The button says exactly what it will commit, such as "Commit 2 staged files". With nothing to commit, it tells you why.
Your whole diff as one strip: a segment per file, a tick per hunk. Additions rise, deletions drop, and the amber playhead follows you. Click a tick to jump.
Git's heading rules for Go, CSS, Markdown, Python, Rust and more, shown as a readable pill.
Commit, History and Branches live in a drawer. ⌘J opens it, and the diff keeps the full width.
Twelve light, twenty dark, all embedded in the binary.
Switch repositories and come back to your open tabs, unsaved edits, scroll position and half-written commit message.
Measured, not promised
# echo-desk release build, Apple M4 Pro, macOS. ps sampled once per second.
# idle, 10 samples
cpu=0.0% rss=12.3MB x10
# 400 page loads + 400 /api/status calls, 8 in parallel
cpu=6.6% rss=16.5MB
cpu=11.0% rss=17.6MB
cpu=9.6% rss=17.9MB
cpu=10.4% rss=17.9MB
# load finished
cpu=0.0% rss=17.9MB
Served a repository with uncommitted changes across Go, JavaScript, CSS and Markdown files. Your numbers will vary with repository size, but echo is one Go binary with no Electron, no bundler and nothing else to install.
macOS, Apple Silicon and Intel
curl -fsSL https://raw.githubusercontent.com/sidkhuntia/echo/main/install.sh | sh
brew install sidkhuntia/tap/echo-desk
go build -o "$(go env GOPATH)/bin/echo-desk" .
Then run it inside any repository:
cd ~/code/my-project && echo-desk
The command is echo-desk, so it never collides with your shell's echo. It opens at http://127.0.0.1:6030.
No. echo runs as a local process bound to 127.0.0.1 and serves one repository. It uses your system git and does not launch, drive or talk to agents.
Any of them. echo reads the Git working tree, so it reviews what Claude Code, Cursor, Codex or any other tool left on disk, and it watches for changes while the agent keeps working.
Not yet. echo is macOS only, for both Apple Silicon and Intel.
You review before anything is pushed. echo shows staged and unstaged changes side by side, lets you stage per file, edit a line in place and commit, all from the keyboard, without opening a pull request.
So it never collides with the echo command built into your shell. The product is echo, the binary is echo-desk.
Run the install script again, or brew upgrade echo-desk. Open pages reload themselves when the new version starts.