Overview
You already manage tool versions with nvm or pyenv or asdf. You load
project env vars with direnv. You run chores through a Makefile or a wall of
npm scripts. That’s three or four tools, three or four config files, and a new
laptop that takes a morning to set up.
mise (mise-en-place, by @jdx)
collapses all of that into one fast Rust binary and one mise.toml:
- a polyglot version manager — Node, Python, Go, Rust, and ~1000 CLI tools, pinned per project;
- an environment manager — directory-scoped env vars, dotenv loading, and secrets (the
direnvjob); - a task runner — real shell tasks with dependencies, parallelism, and incremental builds (the
make/justjob).
flowchart TD dev["your shell / IDE / CI"] --> mise["mise — one binary, one mise.toml"] mise --> tools["Tools<br/>node · python · go · rust · 1000+ CLIs"] mise --> env["Environment<br/>vars · dotenv · secrets (replaces direnv)"] mise --> tasks["Tasks<br/>deps · parallel · watch (replaces make/just)"]
This guide is aggressively 2026. mise moved fast: aqua is the default tool
backend now (asdf plugins are legacy), the lockfile is stable, the task runner and
monorepo support are first-class. We teach the current stack only and name the old
tools just long enough to migrate off them.
Who this is for
Section titled “Who this is for”- You write backends or full-stack apps (TypeScript, Go, Python, Rust — any mix).
- You’re tired of
nvm/pyenv/asdf+direnv+makebeing four different things. - You want reproducible toolchains for your team and your CI — without Nix’s learning curve.
60 seconds to your first project
Section titled “60 seconds to your first project”-
Install mise and wire it into your shell (details in Install & Activate):
Terminal window curl https://mise.run | shecho 'eval "$(mise activate bash)"' >> ~/.bashrc # or zsh / fishexec $SHELL -
Pin tools for a project — this writes
mise.tomland installs them:Terminal window cd my-projectmise use node@22 python@3.13 -
Add a task and run it:
Terminal window mise tasks add build -- "node build.js"mise run build
cd into the project and Node 22 + Python 3.13 are on your PATH; cd out and
they’re gone. Commit the mise.toml, and the next person runs mise install and
gets the identical setup.
What mise replaces
Section titled “What mise replaces”| You use today | mise gives you |
|---|---|
nvm, pyenv, rbenv, asdf, volta, sdkman | [tools] in mise.toml + mise use |
direnv / .envrc | [env] in mise.toml (vars, dotenv, secrets) |
make, just, npm/pnpm scripts | [tasks] + mise run |
package-lock.json-style reproducibility for tools | mise.lock |
| a README full of “first install X, then Y…” | mise install |
What you’ll learn
Section titled “What you’ll learn”How to read this
Section titled “How to read this”New to mise? Go in order through page 5, then design your real setup with pages 6–7. Already using mise and migrating a team? Start at Migration and Designing Your Workflow, then raid the Cookbook.
Ready? Start with Install & Activate.