Workspace management for Jujutsu, built for parallel human and AI agent workflows.
Make JJ workspaces easier to create, switch, inspect, and clean up with predictable paths and optional shell integration.
repo/
├── repo current workspace
├── repo.feature-auth navi switch --create feature-auth
└── repo.fix-api navi switch --create fix-api
jj-navi makes parallel workspace work feel simpler and more predictable. Creating a workspace is just switching with --create.
# npm
npm install -g jj-navi
# cargo
cargo install jj-navi --version 0.2.0Binary names:
navinv
Minimum supported jj: 0.39.0
Minimum supported Node.js for npm install: 24
Install shell integration once if you want navi switch ... to change directories directly.
navi config shell install --shell zsh
source ~/.zshrcPick the shell you actually use: bash or zsh.
navi config shell install adds a managed block to your shell rc file so switch can update your current shell instead of only printing the destination path.
navi doctor
navi switch --create feature-auth
navi list
navi switch -
navi remove feature-authnavi switch <workspace>
navi switch -
navi switch @
navi switch --create <workspace>
navi switch --create <workspace> --revision <revset>
navi list
navi list --json
navi list --full
navi doctor [--json] [--compact]
navi remove <workspace>
navi config shell init <bash|zsh>
navi config shell install [--shell <bash|zsh>]Repo-scoped config and metadata live in shared Jujutsu storage:
.jj/repo/navi/config.toml
.jj/repo/navi/workspaces.toml
Default workspace path template:
../{repo}.{workspace}
switchcan recover from missing JJ workspace-path records whennavican validate a fallback pathswitchonly warns when it had to use a weaker template-based fallbackremoverequires an explicit workspace name and refuses to remove the current workspaceremoveis forget-only by default; it does not delete workspace directories- supported shells today:
bash,zsh
Release and xtask docs live in xtask/README.md.
This project was inspired by: