mise logo

mise

Visit

Polyglot CLI that installs project tools, loads env vars, and runs tasks from one mise.toml. asdf-compatible, Rust-fast, MIT-licensed.

Share:

mise

mise (pronounced "meez"), also called mise-en-place, is a polyglot development environment CLI by Jeff Dickey. It installs runtimes and tools, loads project env vars, and runs shared tasks from one mise.toml checked into the repo. The name comes from the French kitchen phrase for putting every ingredient in place before you cook. The GitHub repository is MIT-licensed Rust, created on January 9, 2023, and has about 32.5K stars. The latest first-party release as of this check is v2026.8.6.

Key Features

  • Dev tools in one config: Pin Node, Python, Ruby, Go, Java, Rust, Terraform, kubectl, and 1000+ other tools in mise.toml. mise use node@26 installs the plugin, the runtime, and the version in one step.
  • Environments, not just PATH: Load .env files, project env vars, and Python virtualenvs when you enter a directory. Secrets can go through sops or age instead of living in plaintext.
  • Task runner: Define test, lint, build, and deploy commands next to the tools they need, then run them with mise run.
  • asdf-compatible, not asdf-shaped: Reads .tool-versions and can use asdf plugins, but prefers aqua, GitHub, and other backends with Cosign, SLSA, Minisign, or GitHub attestation checks.
  • Activate or exec: mise activate updates PATH in interactive shells. mise exec and mise run work without activation, which is the safer path for CI and scripts.
  • Windows included: Non-asdf backends can install vendor Windows binaries. asdf itself still does not run on Windows.

Use Cases

  • Polyglot repos: One file replaces nvm, pyenv, rbenv, and a pile of language-specific version managers.
  • Team onboarding: Clone the repo, run mise install, and get the same Node, Python, and CLI versions as CI.
  • Coding agents: Give Claude Code, Codex CLI, or Cursor a deterministic toolchain instead of hoping the host already has the right Node.
  • Linux workstations: Pair it with Omarchy or any Arch/macOS box so AI CLIs and language runtimes stay in lockstep.

Pricing

mise is free and open source under the MIT license. There is no hosted plan. You pay only for the tools, cloud APIs, or package registries those tools talk to.

Getting Started

  1. Install with curl https://mise.run | sh on Linux or macOS, or use Homebrew, apt, dnf, scoop, winget, or chocolatey.
  2. Activate your shell, for example echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc.
  3. Pin tools: mise use --global node@26 or add them to a project mise.toml.
  4. Install everything the config asks for with mise install.
  5. Run a one-off binary without activation: mise exec python@3 -- python.

Official first-party walkthrough: Getting Started.

Frequently Asked Questions

Is this just a faster asdf?

It can replace asdf for version management, and casual asdf users often treat it that way. The bigger difference is that env vars and tasks live in the same file. Performance still favors mise, but first-party docs now say UX and supply-chain checks matter more than the old shim-tax argument.

Do I have to activate it in my shell?

No. Activation is optional. mise exec and mise run already load tools and env. Shims exist for IDEs and CI, but they do not expose every activate feature.

What is the main risk?

Some tools still come through asdf-style plugins, which execute third-party shell. Prefer aqua or GitHub backends when they exist, and do not blindly trust every plugin in a new registry entry.

How do I migrate from asdf or rtx?

mise still understands .tool-versions. rtx was the previous name; existing rtx configs map onto mise. Reinstall or move tool directories rather than pointing at ~/.asdf.

Alternatives

  • asdf: The original multi-runtime manager. Broader plugin history, slower DX, no first-class env or task runner.
  • devbox / Nix: Stronger reproducibility if you already live in Nix. Heavier than a mise.toml for most app teams.
  • nvm / pyenv / fnm: Fine for one language. Painful the moment a repo needs Node and Python and Terraform together.

Tips & Best Practices

  1. Commit mise.toml, not tribal knowledge: New machines and agents should get versions from git.
  2. Use mise use tool@version: Fuzzy versions like node@20 work in commands and config, unlike asdf's split latest:20 world.
  3. Keep activation out of CI: Call mise exec or mise run so scripts do not depend on a developer shell hook.

Conclusion

mise is the kitchen prep for a modern repo: tools, env, and tasks in one file, fast enough that you stop noticing it. If your team still juggles nvm plus pyenv plus a Makefile, start at mise.jdx.dev and pin one runtime today.

Comments

No comments yet. Be the first to comment!