⚡ 69 developer tools, always updated, new upstream releases land in apt within hours. Join the Discord

🎁 The apt mirror needs a subscription. Try every tool free for 14 days, no card needed. See pricing · 🆓 There is an always-free mirror · 🔐 apt returning 401?

🪢 Install Latest jjui on Debian

A terminal UI for the Jujutsu (jj) version control system

Latest version: 0.10.12 · updated 2026-11-06
SourceVersion
deb.griffo.io0.10.12 ✅
Official Debian🚫 not packaged
← Back to home
📌 Installing on a specific release? Debian 12 (bookworm) · Debian 13 (trixie) · Debian 14 (forky) · Debian Sid

What is jjui?

jjui is a terminal user interface for Jujutsu, the Git-compatible version control system you drive with the jj command. Run it inside a jj repository and it shows the revision graph, then lets you work on it directly: change the revset with auto-complete to choose what is shown, rebase a revision or a whole branch, squash, split and abandon revisions, move bookmarks, open a revision to see its files and diffs and restore files one by one, preview jj show and jj diff output beside the graph, push and fetch through a Git menu, and browse or restore the operation log. Everything works from the keyboard or with the mouse. jjui is written in Go by Ibrahim Dursun and is MIT licensed.

🚀 Why Latest Versions Matter: jjui moves together with Jujutsu: jj releases change commands and output, and jjui follows them while adding operations, completion improvements and fixes in most releases. Debian does not package jjui at all, so without this repository the only way to stay current is to download every new release by hand. Here a normal apt upgrade updates jjui and the jj it depends on together.

⚡ Key Features of jjui

🌳 The Revision Graph, Live

jjui opens on the same graph jj log prints, but you can move through it, select revisions and act on them, and the graph redraws after every change.

🔎 Revsets with Auto-Complete

Edit the revset at the top of the screen to choose which revisions are shown; functions and aliases are completed as you type, so you do not have to remember the revset language.

✂️ Rebase, Squash, Split, Abandon

Rebase a single revision or a whole branch onto another, squash a revision into its parent, split it in two, abandon it, or move a bookmark, all from the graph, and see the result straight away.

📄 Files, Diffs and Previews

Open a revision to list the files it changes, read their diffs and restore files interactively, or keep a preview pane with the jj show or jj diff output of whatever is selected.

🔄 Git Menu and Operation Log

Push and fetch through a Git menu without leaving the graph, and browse the operation log to see what changed and restore the repository to an earlier state.

🖱️ Keyboard, Mouse, Lua and Themes

Every action has a key binding (press ? to list them) and the mouse works too. Lua scripting adds your own actions, and themes change the colours.

🚀 Always ahead of the official archives: Debian and Ubuntu freeze package versions when a release ships. This repository publishes new upstream releases typically within hours. A simple apt upgrade keeps you on the latest version.

📦 Installation from deb.griffo.io

Run the commands

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 $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -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 $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update
sudo apt install extrepo
sudo extrepo enable griffo
sudo 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, Forgejo Runner, Ghostty, lazydocker, Oh My Posh, Uncloud and Zed; jjui is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.

How the free mirror works →

🧩 About the extrepo option. extrepo is Debian's own tool for external repositories: it writes the sources file and installs the signing key for you, checking the key against signed metadata first. This repository is registered with it as griffo, and the always-free mirror as griffo-free, so on Debian (bookworm, trixie, forky and sid) the commands above are the whole setup.

extrepo sets up the sources file and the key only, so a subscription's credentials still go in /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu is not covered, because extrepo publishes metadata for Debian suites only: there, use the sudo or root commands.

Step 2: Install jjui

# Install latest jjui (pulls in jujutsu, which provides jj)
sudo apt install jjui

# Verify installation
dpkg -s jjui | grep Version
# Install latest jjui (pulls in jujutsu, which provides jj)
apt install jjui

# Verify installation
dpkg -s jjui | grep Version

Step 3: First run

# jjui drives jj, so start inside a jj repository
cd ~/src/myproject

# An existing Git checkout? Colocate jj with it first
jj git init --colocate

# Open the revision graph
jjui

# Press ? inside jjui for the key bindings, q to quit

🎯 Basic Usage Examples

Starting and configuring jjui:

# Open the revision graph of the repository you are in
jjui

# Edit the configuration in $EDITOR (key bindings, theme, Lua actions)
jjui -config

# jjui runs the jj on your PATH; check which version that is
jj --version

Inside jjui:

# Press ? for every key binding of the view you are in
# Change the revset at the top, with auto-complete, to choose what is shown
# Select a revision, then rebase, squash, split or abandon it, or move a bookmark
# Open a revision to list its files, read their diffs and restore them one by one
# Preview jj show / jj diff beside the graph, or open the operation log to restore a state

# Push and fetch from the Git menu, without leaving the graph

Keeping it current:

# jjui and jj update with the rest of the system
sudo apt update && sudo apt upgrade

# Which versions are installed, and which are the newest available
apt policy jjui jujutsu

# Remove it again (jj stays installed)
sudo apt remove jjui
# jjui and jj update with the rest of the system
apt update && apt upgrade

# Which versions are installed, and which are the newest available
apt policy jjui jujutsu

# Remove it again (jj stays installed)
apt remove jjui

🔧 Tool Integrations

jjui is a front end for jj, so it fits wherever jj already does:

  • Jujutsu: every action runs the jj command, so jjui sees the same repository, config and revset aliases as jj itself; the package depends on jujutsu (>= 0.37), and deb.griffo.io packages Jujutsu for every suite, so apt installs it along with jjui
  • Git remotes: in a colocated repository, push and fetch from the Git menu go to your normal Git remotes with the credentials you already use
  • Your editor: jjui -config opens the configuration file in $EDITOR, where key bindings, the theme and custom actions live
  • Lua scripting: write your own actions in Lua and bind them to keys, for the jj commands you run often
  • Themes: the colours of the graph, the selection and the panes come from a theme you can change or write yourself
  • Mouse: click to select revisions and scroll the graph and the preview, in any terminal with mouse support
  • Documentation: upstream ships no man page, so the full guide is at idursun.github.io/jjui, and ? inside jjui lists the key bindings

🚀 Why Choose deb.griffo.io?

📊 Repository Comparison:
  • Official Debian: does not package jjui, apt install jjui fails on a stock system
  • Upstream downloads: a zip with one binary on the GitHub releases page, copied into your PATH by hand, fetched again for every release, with jj installed separately
  • Building from source: a Go toolchain and a go install for every release, and jj still to be installed some other way
  • deb.griffo.io: latest version with automatic updates

📦 Package Build Repository

The Debian packages are automatically built and maintained in this GitHub repository:

🔗 Related Packages

Also available from deb.griffo.io:

🎯 Perfect for: Jujutsu users who want the revision graph in front of them while they rebase, squash and split, Git users trying jj who would rather learn it with the graph visible, anyone who reshapes their history often, and people who like a terminal tool they can also use with the mouse.

💝 Support This Project

If this repository saves you time and effort, please consider supporting it!

⭐ Star on GitHub 🐦 Share on Twitter

Just after the command? See apt install jjui, one page covering Debian and Ubuntu.

📦 Recent releases from this repository

📚 Release-specific install guides

❓ Frequently asked questions

Is jjui in the official Debian repositories?

No, jjui is not packaged in the official Debian archives. This repository is currently the only apt source, serving jjui 0.10.12.

How do I install the latest jjui on Debian?

Add the deb.griffo.io repository once using the instructions above, then run: sudo apt install jjui. New releases arrive through the normal sudo apt upgrade.

Are the packages signed and how are they built?

Every package is signed with the repository's GPG key (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) and built from upstream releases in public GitHub packaging repositories that anyone can inspect.

Which Debian releases are supported?

Debian 12 Bookworm, Debian 13 Trixie, Forky and Sid.

Start your 14-day free trial

Enter your email and we will send your apt credentials within minutes. No card needed.

This becomes your apt login. If you stay, pay with the same address and nothing on your machines changes.

One trial per email address. Two days before it ends we email you a link to keep access. If you do nothing, access stops and nothing is charged.