Skip to content

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 direnv job);
  • a task runner — real shell tasks with dependencies, parallelism, and incremental builds (the make/just job).
Where mise sits
Rendering diagram…

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.

  • You write backends or full-stack apps (TypeScript, Go, Python, Rust — any mix).
  • You’re tired of nvm/pyenv/asdf + direnv + make being four different things.
  • You want reproducible toolchains for your team and your CI — without Nix’s learning curve.
  1. Install mise and wire it into your shell (details in Install & Activate):

    Terminal window
    curl https://mise.run | sh
    echo 'eval "$(mise activate bash)"' >> ~/.bashrc # or zsh / fish
    exec $SHELL
  2. Pin tools for a project — this writes mise.toml and installs them:

    Terminal window
    cd my-project
    mise use node@22 python@3.13
  3. 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.

You use todaymise 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 toolsmise.lock
a README full of “first install X, then Y…”mise install

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.