35,994
stars
+31
1,528
forks
46
watchers
9,965
prs
1,857
issues
673
releases
3,540
discussions
README
mise-en-place
Dev tools, env vars, and tasks in one CLI
Getting started •
Docs •
Dev tools •
Environments •
Tasks •
Bootstrap
Sponsored by
View all sponsors
What is mise?
mise (pronounced "meez", short for _mise-en-place_) manages a project's dev
tools, environment variables, and tasks from one mise.toml that works across
your shell, editor, and CI:
toml
[tools]
node = "24"
python = "3.14"
rust = "stable"
"cargo:cargo-nextest" = "0.9"
"github:BurntSushi/ripgrep" = "15"
"npm:prettier" = "3"
[env]
NODE_ENV = "development"
_.file = ".env"
_.path = "./node_modules/.bin"
[tasks.build]
description = "Build the application"
run = "npm run build"
[tasks.test]
description = "Run the test suite"
depends = ["build"]
run = "pytest && npm test"
- Install dev tools such as Node.js, Python,
Go, Rust, and Terraform from a
registry of 1,000+ tools or directly
from backends like GitHub
releases, Aqua, Cargo, npm, and PyPI, with separate versions per project.
- Load environment variables, .env
files, PATH entries, virtualenvs, and
secrets automatically as you
enter a directory.
- Run tasks defined in mise.toml or as scripts
in mise-tasks/, with dependencies, parallel execution, file watching, and
the project's tools and environment already configured.
- Set up a machine with mise bootstrap
and mise dot apply to apply system
packages, dotfiles, Git repositories, macOS defaults, and background services.
Adopt only the parts you need. Start with a single tool or task, and keep any
existing .tool-versions files as they are; mise also reads .nvmrc,
.python-version, and other
idiomatic version files
once enabled.
See the demo transcript for the
commands shown above.
Quickstart
1. Install mise
On macOS or Linux:
sh
curl -fsSL https://mise.run | sh
~/.local/bin/mise --version
On Windows, run winget install jdx.mise. For Homebrew, apt, dnf, Scoop, and
other package managers, see
Installing mise.
The installer places the binary at ~/.local/bin/mise. If ~/.local/bin is not
on your PATH yet, run ~/.local/bin/mise in place of mise until you
activate mise in step 4.
2. Run a tool without changing your shell
sh
mise exec node@24 -- node --version
v24.x.x
mise exec downloads Node.js 24 if
needed and runs the command after -- with that version on PATH. Your shell
and config files stay untouched.
3. Configure a project
Create a project directory, select Node.js 24, set an environment variable, and
add a task:
sh
mkdir my-project && cd my-project
mise use node@24
mise set NODE_ENV=development
mise tasks add hello -- node -e "console.log(process.version, process.env.NODE_ENV)"
These commands install Node.js 24 and write mise.toml:
toml
[tools]
node = "24"
[env]
NODE_ENV = "development"
[tasks.hello]
run = 'node -e "console.log(process.version, process.env.NODE_ENV)"'
Run the task wiTop issues
#15467Release asset downloads return 504 for most versions (breaks Railway/Railpack builds)2 comments · 2026-11-08#15471brew-cask tap evaluator rejects `zap :not_required`1 comments · 2026-11-08#15459`cargo:` tools fail to install when `minimum_release_age` resolves `rust@stable` to a dated version1 comments · 2026-11-08#15472UI: Keep task prefixes and prompt options readable on light terminals0 comments · 2026-11-08#15470Regression: WinGet restriction removes minimum_release_age from mise updates0 comments · 2026-11-08#15469Packslip cannot discover or install existing releases in a busy monorepo0 comments · 2026-11-08#15466Task `sources` and `outputs` read directories whose files can never be selected0 comments · 2026-11-08#15463MISE_ORIGINAL_CWD reports the --cd target rather than the caller’s directory0 comments · 2026-11-08
Discussions
#15474Task: Add 'mise select' to pick several tasks from a menu0 comments · 2026-11-08#15473feat(dot): add --lock-wait for a running history operation0 comments · 2026-11-08#15462One TOML task whose usage fails to load breaks completion of every task1 comments · 2026-11-08#15458npm backend: install from a tarball URL (pkg.pr.new previews)3 comments · 2026-11-07#15457Support non-prefix matching for task-name completion0 comments · 2026-11-07#15452Add support for filtering out specific variables when `show_env` is enabled1 comments · 2026-11-07#15448Embedded Aube for project package management and shared storage1 comments · 2026-11-06#15444Could not read from remote repository2 comments · 2026-11-06
Latest release
v2026.11.4: zip:: includes for config and tasks v2026.11.4 2026-11-07Config and task includes can now load from zip:: archives over HTTP(S). This release also fixes shim tab completion, [tool_alias] handling in enable_tools/disable_tools and mise prune, mise dot sync conflicts, and ufw firewall rule matching in mise bootstrap. Added - zip:: includes for config and tasks. Before, include and task_config.includes accepted local paths, git:: and oci:: sources. They now also accept a zip archive served over HTTP or HTTPS. mise downloads and unpacks the archive, then loads it the same way as an oci:: artifact. For task_config.includes it loads executable file tas