← All posts

CLI

mise: One Tool for Runtime Versions, Envs, and Tasks

mise manages your dev tool versions, per-project environments, and task running from one fast polyglot manager.

M CLI

Most projects need a specific version of a few tools - a PHP version, a Node version, maybe more - and juggling separate version managers for each language is its own kind of tax. mise (formerly rtx) unifies it. It's a fast, single tool that manages runtime versions across languages, sets per-project environment variables, and even runs project tasks - replacing a pile of separate managers with one config file per project.

Pin Every Tool in One File

A single mise.toml declares the versions a project needs, and mise makes them active automatically when you enter the directory:

# mise.toml [tools] php = '8.4' node = '24' [env] APP_ENV = 'local'

Enter the directory and the right PHP and Node are on your PATH; leave and they're not.

Versions, Env, and Tasks Together

Because mise also handles environment variables and a task runner, it covers a lot of what you'd otherwise split across a version manager, direnv, and a command runner - one tool, one config, consistent across the team.

Rough Edges and Limitations

  • Broad scope. Doing versions, env, and tasks means more surface area than a single-purpose tool.
  • Migration effort. Moving off existing managers takes a little setup.
  • Trust the config. Like direnv, project config can run things - review before trusting.

For anyone tired of a different version manager per language, mise is the consolidation - reproducible tool versions and environments from one file.

Internal link suggestion: link "per-project environment variables" to the direnv post, whose job mise partly absorbs.