jdx /mise

dev tools, env vars, task runner

★ 35,994⑂ 1,528👁 46⑃ 9,965● 1,857▤ 673◈ 3,540
RustMITCreated 2023-01-09mise.jdx.dev
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 wi

Top issues

Discussions

Latest release

v2026.11.4: zip:: includes for config and tasks v2026.11.4 2026-11-07
Config 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

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON