Skip to content

Installation and setup

Installation

See below on how to install on your machine. There is also pre-built binaries for Windows, Linux, and MacOS.

Homebrew (macOS)

brew install alejoborbo/tap/jj-spice

Scoop (Windows)

scoop install alejoborbo_scoop-bucket/jj-spice

Winget (Windows)

winget install alejoborbo.jj-spice

Cargo

cargo install jj-spice-cli

From source

git clone https://github.com/alejoborbo/jj-spice.git
cd jj-spice
cargo install --path cli

Direct download

Pre-built binaries for Linux, macOS, and Windows are available on the GitHub Releases page.

Use it directly in jj

You can register jj-spice an alias, and use it directly with jj. It can be setup using the following subcommand:

jj-spice util install-aliases

After installation, the following shortcuts are available:

  • jj stack <cmd> instead of jj-spice stack <cmd>
  • jj spice <cmd> instead of jj-spice <cmd>

Shell completion

jj-spice supports two completion methods: dynamic (recommended) and static.

Dynamic completion calls back into jj-spice at TAB-time, so completions stay in sync with the installed version and can complete config keys and values. Static completion generates a one-time script that only knows about subcommands and flags.

Add one of the following to your shell startup file:

Bash (~/.bashrc):

source <(COMPLETE=bash jj-spice)

Zsh (~/.zshrc):

source <(COMPLETE=zsh jj-spice)

Fish (~/.config/fish/config.fish):

COMPLETE=fish jj-spice | source

Elvish:

eval (COMPLETE=elvish jj-spice | slurp)

PowerShell:

COMPLETE=powershell jj-spice | Out-String | Invoke-Expression
Static completion Generate a static script with `jj-spice util completion `. This is useful when dynamic completion is not available (e.g. Nushell) or when you prefer a pre-generated script. **Bash**:
jj-spice util completion bash > ~/.local/share/bash-completion/completions/jj-spice
**Zsh** (write to a directory in your `$fpath`):
jj-spice util completion zsh > ~/.zfunc/_jj-spice
**Fish**:
jj-spice util completion fish > ~/.config/fish/completions/jj-spice.fish
**Nushell** (static only — dynamic completion is not supported):
jj-spice util completion nushell | save -f "completions-jj-spice.nu"
use "completions-jj-spice.nu" *
**PowerShell**:
jj-spice util completion power-shell | Out-String | Invoke-Expression
**Elvish**:
eval (jj-spice util completion elvish | slurp)