mise manages your development tools, environment variables, and project tasks.
Declare them in mise.toml, commit the file, and use the same setup in your shell,
your editor, and CI.
Tools: install Node.js, Python, Go, and hundreds more, with different versions for each project.
Environments: set project environment variables and load .env files.
Tasks: run build, test, and other commands with the tools and environment they need.
Bootstrap: declare machine setup, including system packages, dotfiles, and services.
Use the parts you need. Start with one tool or task and add more to the same config.
[tools]
node = "24"
[env]
NODE_ENV = "development"
[tasks.hello]
description = "Print the project's Node.js version and environment"
run = '''node -e "console.log(process.version, process.env.NODE_ENV)"'''
Run the task:
mise run hello
mise installs the configured tool if needed, loads NODE_ENV, and runs the task.
The output includes the Node.js version and development. Commit mise.toml so
teammates and CI can run the same command.
To add tools later, run mise use python@3.14 from the project directory.
Use mise use --global to set personal defaults. Version requests such as "24"
select a release in that series; use exact pins or a lockfile
when you need everyone to use the same resolved version.
Activation makes project tools and environment variables available directly when
you enter a directory. For an installation from mise.run, add one of these
lines to the corresponding shell config:
mise config ls
mise ls --current
mise exec -- node --version
These show which configuration files are loaded, which versions are selected,
and whether the tool runs in the project environment. If mise exec works but
node --version does not, check shell activation with mise doctor.