Thanks for the ⭐ but you may have been sent to the wrong place. This repo is my guide to
misethat maybe should've been a gist 😅
mise (mise-en-place) is a CLI tool that can manage multiple language runtime versions on a per-project basis. It's like asdf but faster. It's also like gvm, nvm, rbenv, tfenv & pyenv (and more) all in one! (formerly called "rtx")
brew install miseecho 'eval "$(mise activate zsh)"' >> ~/.zshrcecho 3.11 > .python-version # Python example
echo 20.5.1 > .node-version # Node exampleGiven missing tools specified in local version files (e.g. [WARN] Tool not installed: python@3.10)
mise installIf mise install is not working and you're not getting a warning (e.g. [WARN] Tool not installed: terraform@1.3.6) when there is an existing idiomatic version file (e.g. .terraform-version) you may need to install the corresponding plugin
mise plugins install terraformSets a tool version for the current shell session. Useful if you're doing something quick and don't want to set a global or local version.
mise shell node@ltsIf you're sure you want to have a specific version always available then you can set a global version
mise use -g node@lts
mise use -g python@3.10
mise use -g rust@latestIf you'd like to install tools using other backends like pipx or npm.
brew install pipx
mise use -g pipx:poetryIn order to automatically switch to the correct version of your runtime(s) when you're working on different projects it's useful to store the version number in a file in a project's directory.
mise supports idiomatic version files (just like asdf). They're language-specific files like .node-version and .python-version.
These are ideal for setting the runtime version of a project without forcing other developers to use a specific tool like mise/asdf.
They support aliases, which means you can have an .nvmrc file with lts/hydrogen and it will work in mise and nvm. Here are some of the supported legacy version files:
| Plugin | Idiomatic Version Files |
|---|---|
| crystal | .crystal-version |
| elixir | .exenv-version |
| go | .go-version, go.mod |
| java | .java-version, .sdkmanrc |
| node | .nvmrc, .node-version |
| python | .python-version |
| ruby | .ruby-version, Gemfile |
| terraform | .terraform-version, .packer-version, main.tf |
| yarn | .yarnrc |
.mise.toml is the native version file that is more customisable but requires that project collaborators use mise.
.tool-versions is the asdf version file that supports multiple tools in one file but requires that project collaborators use asdf or mise.
To have mise automatically create and use a Python virtual environment (such as .venv), configure your project as follows:
Option 1: Add to .mise.toml
[env]
_.python.venv = {path = ".venv", create = true}Option 2: Use the CLI
mise config set env._.python.venv.path .venv
mise config set env._.python.venv.create trueThis will ensure that a .venv directory is created and used for your Python projects managed by mise.
