ziggity

ziggity --why

ziggity

A fast terminal UI for Git, written in Zig.

Keep your whole Git workflow in one responsive terminal window: stage lines, commit, branch, rebase, inspect history, and review live diffs without waiting on slow operations.

$brew install simoarpe/ziggity/ziggity
1.8 MBbinarysingle native executable
3.7 msstartupmedian version command
10 MBidle memoryflat after first paint
0runtime depsjust the git on PATH

what it is

Git work without leaving the TUI.

Ziggity is not a libgit2 wrapper and not a lazygit port. It is a small native app that talks to your existing git executable, parses machine-readable output, and keeps rendering separate from slow subprocesses.

One terminal window

Stage individual lines, commit, branch, stash, diff, rebase, inspect history, and resolve conflicts without dropping back to raw Git.

Interface stays live

Fetch, pull, push, merge, rebase, autosquash, and bisect run in the background while navigation and previews remain responsive.

Keyboard fast, mouse natural

Every action is reachable from the keyboard, while clicks, wheel scrolling, drag selection, and clean clipboard copy work throughout the TUI.

benchmark.txtmain
Measured on the Ziggity repo against lazygit 0.62.2.
Metricziggitylazygit
Binary size1.8 MB17.6 MB
Startup3.7 ms19.9 ms
Git subprocesses to load repo2124
Network during loadnonefetch all
Resident memory once settled10 MB37 MB
Own CPU over 10 s40 ms230 ms

fast by construction

First paint does not wait on the network.

Ziggity opens the repository from local Git data, paints quickly, then schedules background fetches quietly. The interface stays interactive while Git does the heavier work.

Read the measurement notes

why star it

Everyday Git flows, tightened.

The project is already useful if you live in Git all day. Stars help more developers find it; sponsorship keeps the maintenance loop healthy as Zig and Git keep moving.

Line staging

Stage the exact change you mean.

Open a file, stage or unstage single lines and hunks, discard at the same granularity, and keep both staged and unstaged sides visible when the split helps.

Ziggity staging view showing a selected line and a diff preview.
History

Rebase and graph without context switching.

Preview commits, open their changed files, walk the real git log graph, compose an interactive rebase plan, and run it as one deliberate operation.

Ziggity commit graph viewer showing a colored git log graph.
Commit editor

A commit dialog that teaches good habits.

Write a subject and body in place, see the summary count turn before it gets noisy, and let prepare-commit-msg prefill the editor like real Git does.

Ziggity commit dialog with a summary field and body guide.
AI commit messages

Draft the message, keep the binary tiny.

Press ctrl+g and ziggity drafts a subject in your recent style plus a body that explains the change, honoring the same 50 and 72 column guides. It ships no model and calls no API of its own - point it at pi, llm, or a fully local ollama.

real terminal capture

It behaves like a terminal app because it is one.

The demos in the repo are recorded from scripted sessions against real repositories. No staged mock UI, no web recreation.

install

One binary. No Zig toolchain required.

Install with Homebrew, download a prebuilt release for macOS, Linux, Windows, or Android Termux, or build from source when you want to hack on it.

$brew install simoarpe/ziggity/ziggity