Skip to content

Installation

Installation

This guide will help you install jjj on your system.

Prerequisites

Before installing jjj, you need:

  1. Jujutsu (jj) - version 0.12.0 or later
  2. Rust toolchain - for building from source

Installing Jujutsu

If you don’t have Jujutsu installed yet:

macOS:

Terminal window
brew install jj

Linux:

Terminal window
# Arch Linux
pacman -S jujutsu
# Or build from source
cargo install --git https://github.com/martinvonz/jj jj-cli

Windows:

Terminal window
# Using winget
winget install jujutsu
# Or using cargo
cargo install --git https://github.com/martinvonz/jj jj-cli

Verify jj is installed:

Terminal window
jj --version

Installing jjj

One-Line Install

Install directly from GitHub with Cargo (no cloning required):

Terminal window
cargo install --git https://github.com/doug/jjj

This builds from the latest main branch and installs the jjj binary to ~/.cargo/bin/.

From a Local Clone

If you want to track development or contribute:

Terminal window
git clone https://github.com/doug/jjj.git
cd jjj
cargo install --path .

Verify Installation

Check that jjj is installed correctly:

Terminal window
jjj --version

You should see output like:

jjj 0.1.0

Shell Completion (Optional)

jjj uses clap for CLI argument parsing, which supports shell completion.

Bash

Terminal window
# Generate completion script
jjj completion bash > ~/.local/share/bash-completion/completions/jjj
# Or add to your ~/.bashrc:
eval "$(jjj completion bash)"

Zsh

Terminal window
# Add to your ~/.zshrc:
eval "$(jjj completion zsh)"

Fish

Terminal window
# Generate completion script
jjj completion fish > ~/.config/fish/completions/jjj.fish

PowerShell

Terminal window
# Add to your PowerShell profile
jjj completion powershell | Out-String | Invoke-Expression
# Or save to profile
jjj completion powershell >> $PROFILE

Elvish

Terminal window
# Add to your ~/.elvish/rc.elv
eval (jjj completion elvish | slurp)

Editor Integration

VSCode

A VSCode extension for jjj provides IDE integration with:

  • Sidebar views for problems, solutions, critiques, and milestones
  • Command palette integration
  • JSON-based communication with jjj CLI
  • Planned: Interactive Kanban board, code review, and more

See the VSCode Extension Guide for installation and usage instructions.

Other Editors

jjj provides JSON output for all commands via the --json flag, making it easy to integrate with any editor:

Terminal window
# Get problems as JSON
jjj problem list --json
# Get solutions as JSON
jjj solution list --json
# Get status as JSON
jjj status --json

Updating jjj

To update jjj to the latest version:

Terminal window
cd /path/to/jjj/repo
git pull
cargo install --path . --force

Uninstalling

To remove jjj:

Terminal window
cargo uninstall jjj

Troubleshooting

jjj command not found

If jjj is not found after installation:

  1. Ensure ~/.cargo/bin is in your PATH:

    Terminal window
    echo $PATH | grep cargo
  2. Add to your shell profile if needed:

    Terminal window
    # ~/.bashrc or ~/.zshrc
    export PATH="$HOME/.cargo/bin:$PATH"
  3. Reload your shell:

    Terminal window
    source ~/.bashrc # or source ~/.zshrc

Build Errors

If you encounter build errors:

  1. Update Rust:

    Terminal window
    rustup update
  2. Clear cargo cache:

    Terminal window
    cargo clean
    cargo build --release
  3. Check Rust version (requires 1.70+):

    Terminal window
    rustc --version

jj not found

If jjj complains that jj is not found:

  1. Verify jj is installed:

    Terminal window
    which jj
    jj --version
  2. Ensure jj is in your PATH

  3. Try running with full path:

    Terminal window
    JJ_PATH=/path/to/jj jjj init

Next Steps

Now that jjj is installed, proceed to:

  • Quick Start - Get started with your first jjj project

Getting Help

If you encounter issues: