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.
curl https://mise.run | shor with options
curl https://mise.run | MISE_INSTALL_PATH=/usr/local/bin/mise shShell-specific installation + activation
For a more streamlined setup, you can use shell-specific endpoints that will install mise and automatically configure activation in your shell's configuration file:
curl https://mise.run/zsh | sh
# Installs mise and adds activation to ~/.zshrccurl https://mise.run/bash | sh
# Installs mise and adds activation to ~/.bashrccurl https://mise.run/fish | sh
# Installs mise and adds activation to ~/.config/fish/config.fishThese shell-specific installers will:
- Install mise using the same logic as the main installer
- Automatically detect your shell's configuration file
- Add the activation line if it's not already present
- Skip adding activation if it's already configured (safe to run multiple times)
Options:
MISE_DEBUG=1– enable debug loggingMISE_QUIET=1– disable non-error outputMISE_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:
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.shTIP
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.
Supported os/arch:
macos-x64macos-arm64linux-x64linux-x64-musllinux-arm64linux-arm64-musllinux-armv6linux-armv6-musllinux-armv7linux-armv7-musl
If you need something else, compile it with cargo install mise (see below).
apk
For Alpine Linux:
apk add misemise lives in the community repository.
apt
For installation on Ubuntu/Debian:
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 misesudo 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 misepacman
For Arch Linux:
sudo pacman -S miseCargo
Build from source with Cargo:
cargo install miseDo it faster with cargo-binstall:
cargo install cargo-binstall
cargo binstall miseBuild from the latest commit in main:
cargo install mise --git https://github.com/jdx/mise --branch maindnf
Fedora 41+, RHEL 9+, CentOS Stream 9+
dnf copr enable jdxcode/mise
dnf install miseSnap (Linux, currently in beta)
sudo snap install mise --classic --betaDocker
docker run jdxcode/mise x node@20 -- node -vHomebrew
brew install misenpm
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.
npm install -g @jdxcode/miseUse npx if you just want to test it out for a single command without fully installing:
npx @jdxcode/mise exec python@3.11 -- python some_script.pyGitHub Releases
Download the latest release from GitHub.
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/miseMacPorts
sudo port install misenix
For the Nix package manager, at release 23.05 or later:
nix-env -iA miseYou can also import the package directly using mise-flake.packages.${system}.mise. It supports all default Nix systems.
NixOS compiles from source by default
For precompiled binaries, enable nix-ld and disable all_compile.
yum (RHEL 8, CentOS Stream 8, Amazon Linux 2)
yum install -y yum-utils
yum-config-manager --add-repo https://mise.jdx.dev/rpm/mise.repo
yum install -y misezypper
sudo wget https://mise.jdx.dev/rpm/mise.repo -O /etc/zypp/repos.d/mise.repo
sudo zypper refresh
sudo zypper install miseWindows - Scoop
This is the recommended way to install mise on Windows. It will automatically add your shims to PATH.
scoop install miseWindows - winget
winget install jdx.miseWindows - Chocolatey
INFO
chocolatey version is currently outdated.
choco install miseWindows - 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
echo 'eval "$(mise activate bash)"' >> ~/.bashrcZsh
echo 'eval "$(mise activate zsh)"' >> "${ZDOTDIR-$HOME}/.zshrc"Fish
echo 'mise activate fish | source' >> ~/.config/fish/config.fishTIP
For homebrew and possibly other installs mise is automatically activated so this is not necessary.
See MISE_FISH_AUTO_ACTIVATE=1 for more information.
Powershell
WARNING
See about_Profiles docs to find your actual profile location. You will need to first create the parent directory if it does not exist.
echo 'mise activate pwsh | Out-String | Invoke-Expression' >> $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1Nushell
Nu does not support eval Install Mise by appending env.nu and config.nu:
'
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 --appendIf you prefer to keep your dotfiles clean you can save it to a different directory then update $env.NU_LIB_DIRS:
"\n$env.NU_LIB_DIRS ++= ($mise_path | path dirname | to nuon)" | save $nu.env-path --appendXonsh
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:
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:
echo 'execx($(~/bin/mise activate xonsh))' >> ~/.config/xonsh/rc.xsh # or ~/.xonshrcGiven 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:
var mise: = (ns [&])
eval (mise activate elvish | slurp) &ns=$mise: &on-end={|ns| set mise: = $ns }
mise:activateOptionally alias mise to mise:mise for seamless integration of mise {activate,deactivate,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:
mise use -g usageThen, run the following commands to install the completion script for your shell:
# This requires bash-completion to be installed
mkdir -p ~/.local/share/bash-completion/completions/
mise completion bash --include-bash-completion-lib > ~/.local/share/bash-completion/completions/mise# 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/_misemise completion fish > ~/.config/fish/completions/mise.fishThen 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 beMISE_DATA_DIRorXDG_DATA_HOME/mise)~/.local/state/mise(can also beMISE_STATE_DIRorXDG_STATE_HOME/mise)~/.config/mise(can also beMISE_CONFIG_DIRorXDG_CONFIG_HOME/mise)- on Linux:
~/.cache/mise(can also beMISE_CACHE_DIRorXDG_CACHE_HOME/mise) - on macOS:
~/Library/Caches/mise(can also beMISE_CACHE_DIR)