A Rust TUI to manipulate the Jujutsu DAG.
Inspired by the great UX of Magit.
Once you run the program you can press ? to show the help info. Most of the commands you can see by running jj help in the terminal are implemented.
Screenshots
Help menu
Command output
Fuzzy matching
Features
- Browse the jj log tree with dynamic folding/unfolding of commits and file diffs.
- Multi-key command sequences with transient-menu style help popups. For example type
gpato runjj git push --all, orgptto runjj git push --tracked, orssto squash the selected revision into its parent. - Output from jj commands is displayed in the bottom panel.
- Fuzzy matching for various features like selecting changes or bookmarks.
- Mouse support: left click to select, right click to toggle folding, and scroll wheel to scroll.
Supported jj commands
jj abandonjj absorbjj bookmark advancejj bookmark createjj bookmark deletejj bookmark forgetjj bookmark listjj bookmark movejj bookmark renamejj bookmark setjj bookmark trackjj bookmark untrackjj commitjj describejj diffjj duplicatejj editjj evologjj file listjj file showjj file trackjj file untrackjj git fetchjj git pushjj git remote listjj interdiffjj metaeditjj newjj nextjj parallelizejj prevjj rebasejj redojj resolvejj restorejj revertjj showjj signjj simplify-parentsjj splitjj squashjj statusjj undojj unsignjj workspace addjj workspace forgetjj workspace listjj workspace renamejj workspace update-stale
Plus a custom command (C) to run arbitrary jj commands.
Installation
With cargo:
cargo install --git https://github.com/anthrofract/majjit
Or run the nix flake:
nix run github:anthrofract/majjit
Or install with the nix flake:
inputs.majjit.url = "github:anthrofract/majjit"; ... nixpkgs.overlays = [ majjit.overlays.default ]; environment.systemPackages = [ pkgs.majjit ];


