
mise
One CLI to manage per-project dev tool versions, environment variables, and tasks.
- Stars
- 35.7k
- Forks
- 1.5k
- Licence
- MIT
- Language
- Rust
- Last update
- 4 days ago
- Type
- CLI
What it is
mise (short for mise-en-place) is a command-line tool that manages the software a project needs: language runtimes and other dev tools, with a separate version per project. It also loads environment variables and runs project tasks from one mise.toml file, so the same setup can work in your shell, editor, and CI. The README says it can also set up a machine with system packages, dotfiles and background services.
- Pin Node.js 24 and Python 3.14 for one project in mise.toml and install them with mise install
- Run a project task such as build or test with its dependencies handled by mise run
- Load a .env file and add a project bin directory to PATH automatically when entering a folder
- Run a single command with a specific tool version without changing your shell using mise exec
Great for
- Developers who work on several projects that need different Node.js, Python or Rust versions
- Teams that want a committed config file so teammates and CI get the same tool versions
- People who currently juggle .tool-versions, .nvmrc or .python-version files
- Anyone who wants one place to define project tasks and environment variables
Not ideal for
- People who only work on one project with a single tool and are happy with their current setup, since the benefit is mostly for multi-project or team use
- Users who want a purely graphical app; the README describes a command-line tool
- Environments where installing a new binary and adding a shell hook is not allowed, since the optional shell activation changes shell startup
How to get it
- 1
See the README
Install on macOS or Linux
curl -fsSL https://mise.run | shInstall on Windows
winget install jdx.mise - 2
Run it
- Install mise with the command for your system and check it with ~/.local/bin/mise --version
- Try a tool without changing your shell with mise exec node@24 -- node --version
- In a project folder, run mise use node@24 to record a version in mise.toml
- Run mise run hello after adding a task to see the task run with the project's environment
- 3
Get the most out of it
- Run mise lock to record exact versions and checksums so teammates and CI match
- Use mise use --global to set personal default tool versions
- Enable shell activation so PATH and project environment variables update when you change directories
- Put reusable task scripts in a mise-tasks/ folder and use task dependencies and parallel runs
- Use mise outdated and mise upgrade to find and install newer tool releases
Downloads
Strengths
- Covers tool versions, environment variables and tasks in one config file
- The README lists a registry of over 1,000 tools and several installation backends such as GitHub releases, Cargo and npm
- Project-specific versions are kept separate, so projects do not conflict with each other
Trade-offs
- The README shows many features, so a new user needs to learn several concepts such as backends, tasks and shell activation
- The README is truncated here, so details of the registry, security and advanced configuration could not be checked
- Adopting it fully means committing a config file and asking teammates to install the tool
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| mise (this) | 35.7k | CLI | intermediate | 4 days ago | Developers who work on several projects that need different Node.js, Python or Rust versions |
| asdf | 25.6k | Dev tool | beginner | 5 days ago | Developers who work on several projects that need different language versions |
| nvm | 95.7k | Dev tool | beginner | 8 days ago | Developers who work on several Node.js projects that need different versions |
| pyenv | 45.2k | Dev tool | intermediate | 5 days ago | Developers who work on several Python projects that need different Python versions |
| direnv | 15.5k | Dev tool | beginner | 11 days ago | Developers who juggle several projects with different environment variables |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.