logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·07.11.26
← Back to news

Ziggity – A terminal UI for Git, written in Zig

Original article
github.com|23 points|7 comments|by TheSorcerer|Jul 20, 2026

Ziggity: A High-Performance Git TUI Crafted in Zig

Zig 0.16 License: MIT Platform Support Ziggity on Ko-fi ko_fi

Ziggity is an ultra-responsive, keyboard-centric terminal user interface (TUI) for Git. It provides a workflow heavily inspired by lazygit but is implemented from the ground up in the Zig programming language for maximum efficiency.

Ziggity allows you to manage your staging area, commit changes, handle branches, perform rebases, and explore your commit history—all without ever leaving your terminal.

🛠 Technical Philosophy

While it mirrors the feel of lazygit, Ziggity is not a direct port. Instead, it leverages:

  • Idiomatic Zig: Utilizing explicit memory management and ownership.
  • Subprocess Execution: It communicates via plain git commands rather than relying on libgit2.
  • Modern UI: Powered by libvaxis to deliver a smooth interface.

🚀 Installation

Ziggity requires the git binary to be available in your system's PATH.

📦 Quick Start Checklist

  • Install Git
  • Choose installation method (Homebrew, Binary, or Source)
  • Verify installation with command -v ziggity

1. Homebrew (macOS & Linux)

The easiest way to install and keep Ziggity updated:

brew install simoarpe/ziggity/ziggity

Note: This automatically taps simoarpe/homebrew-ziggity. To update, simply run brew upgrade ziggity.

2. Manual Binary Installation

Static binaries are provided for various platforms. Since they are static, they don't require a Zig toolchain to run.

OSArchitectureBinary Suffix
macOSARM64 / x86_64aarch64-macos / x86_64-macos
LinuxARM64 / x86_64aarch64-linux-musl / x86_64-linux-musl
Windowsx86_64x86_64-windows-gnu

For macOS/Linux:

# Example for macOS ARM64 v0.1.0
VERSION=v0.1.0
curl -LO https://github.com/simoarpe/ziggity/releases/download/$VERSION/ziggity-$VERSION-aarch64-macos.tar.gz
tar -xzf ziggity-$VERSION-aarch64-macos.tar.gz
sudo mv ziggity /usr/local/bin/

[!IMPORTANT] macOS Gatekeeper: Because the binary isn't notarized, you may need to remove the quarantine attribute: xattr -d com.apple.quarantine /usr/local/bin/ziggity

For Windows: Download the .zip file, extract ziggity.exe, and add its location to your system PATH.

Warning: Windows builds are cross-compiled and currently considered experimental.

3. Compiling from Source

Prerequisites: Zig 0.16.0 and git.

git clone https://github.com/simoarpe/ziggity
cd ziggity
zig build -Doptimize=ReleaseSafe
# The binary will be located at ./zig-out/bin/ziggity

To run tests: zig build test.

🔍 Verification

You can ensure your download is untampered by checking the checksums.txt file:

  • Linux: sha256sum --ignore-missing -c checksums.txt
  • macOS: shasum -a 256 --ignore-missing -c checksums.txt

✨ Key Features & Highlights

Ziggity aims for a performance profile where the perceived latency Δt≈0\Delta t \approx 0Δt≈0.

🗂 Core Interface

The UI consists of several specialized panels: Status, Files, Branches, Commits, and Stash, all supporting a live diff preview and a dynamic footer.

🛠 Advanced Git Workflow

  • Granular Staging: Enter a file to stage specific lines or hunks. It even supports a side-by-side view of staged vs. unstaged changes.
  • Interactive Rebasing:
    • Perform drop, squash, fixup, edit, reword, or move operations.
    • Use the plan editor (i), cherry-pick commits, or use rebase --onto.
    • Supports autosquash and custom patch building.
  • Deep History Inspection:
    • View the DAG via git log --graph (ctrl+l).
    • Jump between first-parents or perform ref-to-ref diffs (W) with three-dot merge-base modes.
    • Verify GPG signatures (x) and filter logs (/).

⚡ Power-User Tools

  • Multi-Selection: Use v or Shift + Arrows to select ranges of files, commits, or branches. Use * to select all commits on a specific branch.
  • Asynchronous Sync: A background git fetch keeps your "commits to pull" indicator updated without freezing the UI.
  • Quality of Life:
    • prepare-commit-msg hook integration.
    • Stash snapshots (keep working tree) and custom stash naming.
    • Bracketed paste support to prevent premature submission of multi-line messages.

⌨️ Usage & Configuration

Once installed, simply run ziggity inside any Git repository.

  • Help: Press ? to open the keybindings overlay.
  • Exit: Press q to quit.
  • Customization: Ziggity features fully remappable keys and themeable colors.

Summary of Capabilities

FeatureCapability
Binary SizeSmall & Lightweight
DependenciesMinimal (No libgit2)
UI Enginelibvaxis
ControlFully Keyboard-Driven