Skip to content

Installing Mise

If you are new to mise, follow the Getting Started guide first.

Installation Methods

This page lists various ways to install mise on your system.

https://mise.run

Note that it isn't necessary for mise to be on PATH. If you run the activate script in your shell's rc file, mise will automatically add itself to PATH.

sh
curl https://mise.run | sh

# or with options
curl https://mise.run | MISE_INSTALL_PATH=/usr/local/bin/mise sh

Options:

  • MISE_DEBUG=1 – enable debug logging
  • MISE_QUIET=1 – disable non-error output
  • MISE_INSTALL_PATH=/some/path – change the binary path (default: ~/.local/bin/mise)
  • MISE_VERSION=v2024.5.17 – install a specific version

If you want to verify the install script hasn't been tampered with:

sh
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 0x7413A06D
curl https://mise.jdx.dev/install.sh.sig | gpg --decrypt > install.sh
# ensure the above is signed with the mise release key
sh ./install.sh

TIP

As long as you don't change the version with MISE_VERSION, the install script will be pinned to whatever the latest version was when it was downloaded with checksums inside the file. This makes downloading the file and putting it into a project a great way to ensure that anyone installing with that script fetches the exact same mise bin.

or if you're allergic to | sh:

sh
curl https://mise.jdx.dev/mise-latest-macos-arm64 > ~/.local/bin/mise
chmod +x ~/.local/bin/mise
sh
curl https://mise.jdx.dev/mise-latest-macos-x64 > ~/.local/bin/mise
chmod +x ~/.local/bin/mise
sh
curl https://mise.jdx.dev/mise-latest-linux-x64 > ~/.local/bin/mise
chmod +x ~/.local/bin/mise
sh
curl https://mise.jdx.dev/mise-latest-linux-arm64 > ~/.local/bin/mise
chmod +x ~/.local/bin/mise

It doesn't matter where you put it. So use ~/bin, /usr/local/bin, ~/.local/bin or whatever.

Supported os/arch:

  • macos-x64
  • macos-arm64
  • linux-x64
  • linux-x64-musl
  • linux-arm64
  • linux-arm64-musl
  • linux-armv6
  • linux-armv6-musl
  • linux-armv7
  • linux-armv7-musl

If you need something else, compile it with cargo install mise (see below).

apk

For Alpine Linux:

sh
apk add mise

mise lives in the community repository.

apt

For installation on Ubuntu/Debian:

sh
sudo apt update -y && sudo apt install -y gpg sudo wget curl
sudo install -dm 755 /etc/apt/keyrings
wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list
sudo apt update
sudo apt install -y mise
sh
sudo apt update -y && apt install -y gpg sudo wget curl
sudo install -dm 755 /etc/apt/keyrings
wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=arm64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list
sudo apt update
sudo apt install -y mise

aur

For Arch Linux:

sh
git clone https://aur.archlinux.org/mise.git
cd mise
makepkg -si

Cargo

Build from source with Cargo:

sh
cargo install mise

Do it faster with cargo-binstall:

sh
cargo install cargo-binstall
cargo binstall mise

Build from the latest commit in main:

sh
cargo install mise --git https://github.com/jdx/mise --branch main

dnf

For Fedora, CentOS, Amazon Linux, RHEL and other dnf-based distributions:

sh
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://mise.jdx.dev/rpm/mise.repo
dnf install -y mise

Docker

sh
docker run jdxcode/mise x node@20 -- node -v

Homebrew

sh
brew install mise

npm

mise is available on npm as a precompiled binary. This isn't a Node.js package—just distributed via npm. This is useful for JS projects that want to setup mise via package.json or npx.

sh
npm install -g @jdxcode/mise

Use npx if you just want to test it out for a single command without fully installing:

sh
npx @jdxcode/mise exec [email protected] -- python some_script.py

GitHub Releases

Download the latest release from GitHub.

sh
curl -L https://github.com/jdx/mise/releases/download/v2024.1.0/mise-v2024.1.0-linux-x64 > /usr/local/bin/mise
chmod +x /usr/local/bin/mise

MacPorts

sh
sudo port install mise

nix

For the Nix package manager, at release 23.05 or later:

sh
nix-env -iA mise

You can also import the package directly using mise-flake.packages.${system}.mise. It supports all default Nix systems.

yum

sh
yum install -y yum-utils
yum-config-manager --add-repo https://mise.jdx.dev/rpm/mise.repo
yum install -y mise

Windows - Scoop

NOTE

We're currently waiting for mise to be merged to the Scoop main bucket:

This is the recommended way to install mise on Windows. It will automatically add your shims to PATH.

sh
scoop install mise

Windows - winget

sh
winget install jdx.mise

Windows - Chocolatey

INFO

chocolatey version is currently outdated.

sh
choco install mise

Windows - manual

Download the latest release from GitHub and add the binary to your PATH.

If your shell does not support mise activate, you would want to edit PATH to include the shims directory (by default: %LOCALAPPDATA%\mise\shims).

Shells

Bash

sh
echo 'eval "$(mise activate bash)"' >> ~/.bashrc

Zsh

sh
echo 'eval "$(mise activate zsh)"' >> "${ZDOTDIR-$HOME}/.zshrc"

Fish

sh
echo 'mise activate fish | source' >> ~/.config/fish/config.fish

TIP

For homebrew and possibly other installs mise is automatically activated so this is not necessary.

See MISE_FISH_AUTO_ACTIVATE=1 for more information.

Nushell

Nu does not support eval Install Mise by appending env.nu and config.nu:

nushell
'
let mise_path = $nu.default-config-dir | path join mise.nu
^mise activate nu | save $mise_path --force
' | save $nu.env-path --append
"\nuse ($nu.default-config-dir | path join mise.nu)" | save $nu.config-path --append

If you prefer to keep your dotfiles clean you can save it to a different directory then update $env.NU_LIB_DIRS:

nushell
"\n$env.NU_LIB_DIRS ++= ($mise_path | path dirname | to nuon)" | save $nu.env-path --append

Xonsh

Since .xsh files are not compiled you may shave a bit off startup time by using a pure Python import: add the code below to, for example, ~/.config/xonsh/mise.py config file and import mise it in ~/.config/xonsh/rc.xsh:

python
from pathlib         import Path
from xonsh.built_ins import XSH

ctx = XSH.ctx
mise_init = subprocess.run([Path('~/bin/mise').expanduser(),'activate','xonsh'],capture_output=True,encoding="UTF-8").stdout
XSH.builtins.execx(mise_init,'exec',ctx,filename='mise')

Or continue to use rc.xsh/.xonshrc:

sh
echo 'execx($(~/bin/mise activate xonsh))' >> ~/.config/xonsh/rc.xsh # or ~/.xonshrc

Given that mise replaces both shell env $PATH and OS environ PATH, watch out that your configs don't have these two set differently (might throw os.environ['PATH'] = xonsh.built_ins.XSH.env.get_detyped('PATH') at the end of a config to make sure they match)

Elvish

Add following to your rc.elv:

shell
var mise: = (ns [&])
eval (mise activate elvish | slurp) &ns=$mise: &on-end={|ns| set mise: = $ns }
mise:activate

Optionally alias mise to mise:mise for seamless integration of mise {activate,deactivate,shell}:

shell
edit:add-var mise~ {|@args| mise:mise $@args }

Something else?

Adding a new shell is not hard at all since very little shell code is in this project. See here for how the others are implemented. If your shell isn't currently supported I'd be happy to help you get yours integrated.

Autocompletion

TIP

Some installation methods automatically install autocompletion scripts.

The mise completion command can generate autocompletion scripts for your shell. This requires usage to be installed. If you don't have it, install it with:

shell
mise use -g usage

Then, run the following commands to install the completion script for your shell:

sh
# This requires bash-completion to be installed
mkdir -p /etc/bash_completion.d/
mise completion bash --include-bash-completion-lib > /etc/bash_completion.d/mise
sh
# If you use oh-my-zsh, there is a `mise` plugin. Update your .zshrc file with:
# plugins=(... mise)
# This must be after `source $ZSH/oh-my-zsh.sh` line in your .zshrc file.

# Otherwise, look where zsh search for completions with
echo $fpath | tr ' ' '\n'

# if you installed zsh with `apt-get` for example, this will work:
mkdir -p /usr/local/share/zsh/site-functions
mise completion zsh  > /usr/local/share/zsh/site-functions/_mise
sh
mise completion fish > ~/.config/fish/completions/mise.fish

Then source your shell's rc file or restart your shell.

Uninstalling

Use mise implode to uninstall mise. This will remove the mise binary and all of its data. Use mise implode --help for more information.

Alternatively, manually remove the following directories to fully clean up:

  • ~/.local/share/mise (can also be MISE_DATA_DIR or XDG_DATA_HOME/mise)
  • ~/.local/state/mise (can also be MISE_STATE_DIR or XDG_STATE_HOME/mise)
  • ~/.config/mise (can also be MISE_CONFIG_DIR or XDG_CONFIG_HOME/mise)
  • on Linux: ~/.cache/mise (can also be MISE_CACHE_DIR or XDG_CACHE_HOME/mise)
  • on macOS: ~/Library/Caches/mise (can also be MISE_CACHE_DIR)

Licensed under the MIT License. Maintained by @jdx and friends.