gojo.

A fullscreen terminal UI for Jujutsu VCS. Commit graph, diffs, bookmarks, git remotes, and AI commit messages — without leaving your terminal.

installview on github
go 1.26+jj v0.44+license MIT
gojo log view: commit graph with change IDs, authors, dates, bookmarks, a conflicted merge marked ×, and a dirty working copy

# features

Everything you reach for in jj, one keystroke away.

▸ log view

Scrollable commit graph with change IDs, authors, dates, bookmarks, and working-copy highlighting.

▸ diff panel

File-status summary plus a syntax-highlighted diff for any commit, powered by chroma.

▸ bookmarks

Create, delete, move, rename, set, track, and untrack bookmarks — with tab-completion.

▸ git integration

Fetch, push, and manage remotes from inside the TUI. No context switch.

▸ AI commit messages

Generate a description from a commit's diff via any OpenAI-compatible API.

▸ undo / redo

One-key jj undo / jj redo. Experiment fearlessly.

# views

Captured live with VHS.

diff panel
▸ diff panel — file summary + chroma-highlighted diff with word-level changes
conflict resolution
▸ conflict resolution — side-by-side 3-way merge — pick l / r / both per hunk, apply with ⏎
bookmark mode
▸ bookmark mode — create, move, rename, track — with tab-completion
help
▸ help — the full keybinding reference, one ? away

# install

Pick your poison. Requires jj v0.44+ in your PATH.

auto-detect script
$ curl -fsSL https://gojo.rocks/install.sh | sh
# detects your os — brew · pacman · apt · dnf · zypper · tarball
homebrew
$ brew tap hackrdotsh/gojo https://github.com/hackrdotsh/gojo
$ brew install --cask gojo
windows · scoop
$ scoop bucket add gojo https://github.com/hackrdotsh/gojo
$ scoop install gojo/gojo
# installs the latest stable GitHub release + jj · prereleases excluded
# update later with: scoop update gojo
nix
$ nix run github:hackrdotsh/gojo
from source
$ git clone https://github.com/hackrdotsh/gojo
$ cd gojo && go build -o gojo .
# requires Go 1.26+

Then run gojo inside any jj repository. That's it.

# keybindings

Press ? in-app for the full reference.

log view

j / knavigate commits
enteropen diff panel
ddescribe ($EDITOR)
DAI commit message
ejj edit
njj new
ajj abandon

modes

bbookmark mode
ggit mode (fetch/push/remotes)
ujj undo
Ujj redo
?help
qquit / close

bookmark mode

ccreate
mmove to commit
sset to commit
rrename
t / Ttrack / untrack
tabautocomplete

# config

Optional. Lives at ~/.config/gojo/gojo.toml.

gojo.toml
#:schema https://gojo.rocks/schemas/gojo.json

# AI-generated commit messages (optional)
ai_api_key  = "sk-or-..."
ai_base_url = "https://openrouter.ai/api/v1"
ai_model    = "anthropic/claude-sonnet-4"

The schema comment enables autocomplete, hover documentation, and validation in Taplo-compatible editors. The config schema covers AI settings, themes, and keybindings in the standalone gojo file. For custom themes, use the theme schema by adding this comment at the top of the theme file:

~/.config/gojo/themes/my-theme.toml
#:schema https://gojo.rocks/schemas/theme.json