Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

eliaskc/kajji

A simple TUI for Jujutsu (jj), building for agentic coding DX

eliaskc/kajji.json
{
"createdAt": "2025-12-30T19:10:19Z",
"defaultBranch": "main",
"description": "A simple TUI for Jujutsu (jj), building for agentic coding DX",
"fullName": "eliaskc/kajji",
"homepage": null,
"language": "TypeScript",
"name": "kajji",
"pushedAt": "2026-01-07T22:39:07Z",
"stargazersCount": 4,
"topics": [],
"updatedAt": "2026-01-07T08:55:36Z",
"url": "https://github.com/eliaskc/kajji"
}
██╗ ██╗ █████╗ ██╗ ██╗██╗
██║ ██╔╝██╔══██╗ ██║ ██║██║
█████╔╝ ███████║ ██║ ██║██║
██╔═██╗ ██╔══██║██ ██║██ ██║██║
██║ ██╗██║ ██║╚█████╔╝╚█████╔╝██║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚════╝ ╚════╝ ╚═╝

The rudder for your jj

A simple terminal UI for Jujutsu, inspired by lazygit. Built with OpenTUI and SolidJS.

![kajji screenshot]!(./assets/kajji.png)

While learning jj I found myself coming back to lazygit to view diffs and traverse the changes I’d made quickly and easily, which has become increasingly important to me with the rise of coding agents. While there are existing jj TUIs, none quite scratched that lazygit itch.

Kajji is my attempt to bring the simplicity and polish of lazygit to jj, while also leveraging coding agents effectively and building a TUI for the first time.

Disclaimer: almost all code in this project has been written by coding agents (primarily Claude Opus 4.5 through OpenCode).

  • Polish & simplicity - Do less, but do it well.
  • Intuitive UX - Sensible defaults, consistent patterns.
  • Snappy - If it feels slow, it’s a bug.

Core jj operations:

  • View commit log with graph
  • View diffs (difftastic, delta, etc.)
  • New / edit / describe / squash / abandon
  • Undo / redo with preview
  • Bookmarks (create, delete, rename, move)
  • Git fetch / push
  • Operation log with restore
  • Rebase
  • Split
  • Conflict resolution

TUI polish:

  • Vim-style navigation (j/k, ctrl+u/d)
  • Mouse support (click, double-click, scroll)
  • Collapsible file tree with status colors
  • Help palette with fuzzy search (?)
  • Multi-select for batch operations
  • Search and filter

Requirements: jj

Terminal window
# recommended (standalone binary, no dependencies)
curl -fsSL https://raw.githubusercontent.com/eliaskc/kajji/main/install.sh | bash
# or via package manager
npm install -g kajji
bun install -g kajji
pnpm add -g kajji
yarn global add kajji
# or run directly without installing
npx kajji
bunx kajji

Requirements: Bun

Terminal window
git clone https://github.com/eliaskc/kajji.git
cd kajji
bun install
bun dev

Run kajji in any jj repository:

Terminal window
kajji
KeyAction
j / kMove down / up
TabCycle focus between panels
EnterDrill into commit / file
EscapeBack / close modal
?Show help with fuzzy search
qQuit
KeyAction
nNew change
eEdit change
dDescribe change
sSquash into parent
aAbandon change
u / UUndo / redo
f / FGit fetch / fetch all
p / PGit push / push all
KeyAction
cCreate bookmark
dDelete bookmark
rRename bookmark
bSet bookmark on commit
mMove bookmark

See [PROJECT]!(./context/PROJECT.md) for the full roadmap.

  • lazygit - The inspiration for this project
  • jjui - Go-based jj TUI
  • lazyjj - Rust-based jj TUI

MIT