What is Serie?
Serie is a terminal UI for browsing a Git repository's history. It shows what git log --graph --all shows, but the graph is drawn with the terminal emulator's inline image protocol instead of being approximated with ASCII art, so branches and merges are readable at a glance. A scrollable, searchable commit list sits next to the graph, with a detail view for the selected commit. It is deliberately a viewer, not a Git client: it does not commit, branch or push.
⚡ Key Features of Serie
🖼️ A Real Commit Graph
The graph is rendered as images through the Kitty or iTerm2 protocol, so branch lines stay readable in a repository with dozens of parallel branches.
🔍 Searchable History
A commit list beside the graph that scrolls and searches, instead of paging through git log output.
📄 Commit Detail View
Select a commit to see its message, its refs and its diff, without leaving the graph.
🎛️ Graph Options
Chronological or topological ordering, single- or double-width cells, rounded or angular edges, set once on the command line or in the config file.
⌨️ Custom Keybindings
? shows the current bindings, and every one of them can be overridden in config.toml.
🧰 User Commands
Run your own commands on the selected commit: show output in a dedicated view, run something in the background, or suspend Serie for an interactive program.
apt upgrade keeps you on the latest version.
📦 Installation from deb.griffo.io
Step 1: Add Repository
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh and Zed; Serie is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.
Step 2: Install Serie
# Install latest Serie
sudo apt install serie
# Verify installation
serie --version# Install latest Serie
apt install serie
# Verify installation
serie --versionStep 3: Run it in a repository
# Serie reads the repository in the current directory
cd /path/to/your/repo
serie
# Press ? at any time to see the key bindings
# If the graph does not appear, name the image protocol explicitly
serie -p kitty
# The optional config file, for keybindings and defaults
mkdir -p ~/.config/serie
$EDITOR ~/.config/serie/config.toml🎯 Basic Usage Examples
Browsing history:
# The full history of the repository you are in
serie
# Only the most recent commits, for a very large repository
serie -n 5000
# Topological order instead of chronological
serie -o topo
# Start with HEAD selected rather than the newest commit
serie -i headMaking the graph fit your terminal:
# Force an image protocol when auto-detection guesses wrong
serie -p kitty
serie -p iterm
serie -p kitty-unicode
# Narrower graph cells for a small window
serie -g single
# Angular edges instead of rounded ones
serie -s angular
# Or the roomy, rounded look on a wide terminal
serie -g double -s roundedConfiguration and everyday use:
# The config file, for keybindings and defaults
mkdir -p ~/.config/serie
$EDITOR ~/.config/serie/config.toml
# Or point Serie at a config file somewhere else
SERIE_CONFIG_FILE=~/dotfiles/serie.toml serie
# Serie only reads history, git stays your client
git -C ~/src/project log --oneline -5
# So committing is still git's job
git commit -v🔧 Tool Integrations
Serie needs two things and cooperates with a third:
- git: an ordinary Git repository and the
gitbinary, which the package pulls in as a dependency - Your terminal: an emulator that speaks the Kitty or iTerm2 inline image protocol, Ghostty, Kitty, WezTerm and iTerm2 all qualify
- Config file:
$XDG_CONFIG_HOME/serie/config.toml, or whateverSERIE_CONFIG_FILEpoints at - User commands: wire
git diff, an editor or your own script to a key and run it on the selected commit - Your git client: Serie deliberately does not commit or push, so it sits beside lazygit, GitUI or plain git rather than replacing them
🚀 Why Choose deb.griffo.io?
- Official Ubuntu: does not package Serie at all, a stock system has nothing to install
- cargo install --locked serie: current, but a Rust toolchain and a compile on every machine, outside apt
- Upstream tarball: the official binary, re-downloaded by hand for every release
- deb.griffo.io: latest version with automatic updates
- ✅ Young and Moving Fast: user commands, custom keybindings and the graph styling options all arrived in ordinary releases, the current build is a different tool from a year-old one
- ✅ The Only apt Source: Serie is in neither the Debian nor the Ubuntu archives; this repository packages the official upstream build
- ✅ Automatic Updates: packages updated within hours of upstream releases
- ✅ Honest Packaging: the upstream binary at
/usr/bin/serie, withgitdeclared as a dependency; upstream ships no man page or completions, so the package does not invent any - ✅ Two Architectures: amd64 and arm64, both statically linked musl builds with no library dependencies
- ✅ Multi-Distribution: works on Ubuntu 22.04, 24.04, 25.10 and 26.04
- ✅ Easy Maintenance: standard apt commands for updates
📦 Package Build Repository
The Ubuntu packages are automatically built and maintained in this GitHub repository:
- 🌳 serie-debian - Latest release builds
🔗 Related Packages
Also available from deb.griffo.io:
- Ghostty - Terminal that draws the graph, via the Kitty protocol
- lazygit - Terminal git UI for the parts Serie deliberately skips
- Jujutsu - Git-compatible VCS with first-class rebases
- Forgejo - Self-hosted forge behind the history you are reading
git log --graph produced a wall of pipes and asterisks you could not follow.
💝 Support This Project
If this repository saves you time and effort, please consider supporting it!