mise install: Provision Tool Versions in CI
mise install downloads and installs the tool versions declared in the project config.
mise (formerly rtx) manages runtime versions like asdf, plus environment variables and tasks. install is the step that materializes the pinned versions on a runner.
What it does
mise install reads the project config (mise.toml, or a legacy .tool-versions) and installs each listed tool at the pinned version, fetching from the appropriate backend or plugin. With no arguments it installs everything in the config; mise install node@20 installs one specific version. Installed tools live under the mise data directory.
Common usage
# mise.toml
[tools]
node = "20.11.1"
python = "3.12"
go = "1.22"
# install everything pinned in the config
mise install
# install a single tool/version
mise install node@20.11.1Syntax
| Command / key | What it does |
|---|---|
| mise install | Install every tool pinned in the config |
| mise install <tool>@<ver> | Install one specific tool version |
| [tools] | mise.toml table mapping tool to version |
| mise.toml / .tool-versions | Project config files mise reads |
| mise ls | List installed and active tool versions |
| MISE_DATA_DIR | Where installed tools are stored (cacheable) |
In CI
Run mise install early so later steps see the pinned tools. Cache the mise data directory between runs to skip re-downloading toolchains. Pinning exact versions in mise.toml makes the runner use the same Node or Python as developers, removing "works on my machine" drift.
Common errors in CI
"mise <tool>@<ver> not found" or "no version specified" means the config is missing or the version is not available for that backend. "failed to install plugin" points at a network issue or an unknown plugin name. On fresh runners, a tool installed but not on PATH means mise is not activated; use mise exec or mise run, or activate the shim path.