Skip to content

Mise ​

Tools ​

Install a tool globally and pin it ​

sh
mise use --global <tool>@<version>
mise use --global node@22
mise use --global kubectl@latest

Install a tool for the current directory only ​

sh
mise use <tool>@<version>

Install everything declared in the config ​

sh
mise install

Remove a tool ​

sh
mise uninstall <tool>        # removes the install, leaves the config entry
mise unuse --global <tool>   # removes both

Run a command with a tool without installing it globally ​

sh
mise exec <tool>@<version> -- <command>
mise exec node@20 -- node --version

Upgrades ​

With pin = true, mise use records an exact version. A plain mise upgrade only upgrades within that constraint, which an exact version already satisfies - so it reports "All tools are up to date" and changes nothing. --bump is what rewrites the pin.

See what is actually behind ​

sh
mise outdated --bump

Upgrade everything and rewrite the pins ​

sh
mise upgrade --bump

Upgrade a single tool ​

sh
mise upgrade --bump <tool>

Upgrade mise itself ​

sh
brew upgrade mise    # macOS
mise self-update     # installed via mise.run

Backends ​

Tools missing from the registry are addressed by backend. Prefer aqua: its packages are checksum-verified. asdf plugins are arbitrary shell scripts.

Install from a specific backend ​

sh
mise use --global aqua:<owner>/<repo>@latest
mise use --global github:<owner>/<repo>@latest
mise use --global pipx:<package>@latest
mise use --global npm:<package>@latest
mise use --global cargo:<crate>@latest
mise use --global go:<module>@latest

Find which backend a registry name resolves to ​

sh
mise registry | grep <tool>

Inspection ​

List installed tools and where each is declared ​

sh
mise ls

List every version available upstream ​

sh
mise ls-remote <tool>

Show the version that resolves here ​

sh
mise current
mise which <binary>

Search the registry ​

sh
mise registry
mise registry | grep <tool>

Configuration ​

Config file locations, highest precedence first ​

sh
# ~/.config/mise/config.toml       <- `mise use --global` writes here
# ~/.config/mise/conf.d/*.toml     <- merged in, survives the above
# ./mise.toml                      <- per project

Read or change a setting ​

sh
mise settings
mise settings get <key>
mise settings set <key> <value>

Regenerate shims after installing globals via npm/go ​

sh
mise reshim

Activate in a shell ​

sh
eval "$(mise activate zsh)"                          # interactive shells
export PATH="$HOME/.local/share/mise/shims:$PATH"    # scripts, CI, containers

Troubleshooting ​

Diagnose a broken install ​

sh
mise doctor

HTTP 403 while resolving a version ​

The aqua and github backends resolve through the GitHub API, which rate-limits unauthenticated requests. mise retries 429 and 5xx but treats 403 as permanent.

sh
export GITHUB_TOKEN=<token>

Verbose output for a failing install ​

sh
MISE_VERBOSE=1 mise install <tool>
mise install <tool> --verbose

Useful environment variables ​

sh
MISE_YES=1                      # never prompt (CI, container builds)
MISE_PIN=1                      # record exact versions
MISE_DISABLE_BACKENDS=asdf      # keep installs on verifying backends
MISE_DATA_DIR=<path>            # where tools and shims live
MISE_OFFLINE=1                  # use only locally cached data