Skip to content
New: mise run, the theme song and music video

mise-en-place

Development tools, environments, and tasks

mise is pronounced “meez”

Define your tool versions, environment variables, and project commands in mise.toml. mise installs the tools and makes the configuration available in your shell, editor, and CI.

curl https://mise.run | sh

macOS & Linux Installing on Windows?

mise.tomlExample configuration

# Tool versions for this project

[tools]
node = "24"
python = "3.13"
terraform = "1.13"

Illustrative output ~/my-project

$ mise install
✓ node, python, terraform installed
Tool versions ready for this project.
Explore tools
Project configuration in mise.toml
  • Open source & MIT licensed
  • macOS, Linux & Windows
  • Single CLI

Showreel

  1. mise, at 0:00.
  2. Project switching, at 0:10: cd switches node to the version each project's mise.toml sets. One mise.toml per project: tools, env vars, and tasks. With mise activate, cd in, and its tools and env vars load. mise run ci runs the tasks in that environment.
  3. Dev tools, at 0:58: No jq? mise use jq installs it and adds it to mise.toml. 1,000+ tools by short name, from node to terraform.
  4. Environments, at 1:32: Leave, and mise restores the environment. .env files load too, with _.file.
  5. Tasks, at 1:54: ci depends on lint, test, build. They can run in parallel. Each output line is labeled with its task. With sources and outputs, up-to-date work is skipped.
  6. Dotfiles, at 2:32: mise dot track keeps a history. A watcher saves each edit. mise dot rollback restores an earlier version.
  7. Everywhere, at 3:12: mise.toml asks for 24. mise.lock records 24.21.0. Commit both. CI and other machines can use the same versions.
  8. A new machine, at 3:36: mise bootstrap --adopt restores your dotfiles and mise config. Then it starts the watcher and installs your global tools. On a fresh clone, mise run ci installs what mise.lock pins. Then its tasks run with the project's env vars.
  9. Install mise, at 4:38.

Switch between project environments

Activate mise in your shell once. From then on, entering a project puts its installed tool versions on your PATH and loads its environment variables. Leave the project and mise restores the environment for your new directory.

  • Shell hooks for bash, zsh, fish, nushell, PowerShell, and more
  • Shims for editors and scripts that never source your shell rc
  • mise exec and mise-action for Docker and CI
Active shell~/work/api
Node
22
APP_ENV
api
Choose a project to see its environment. Shell activation and installed tool versions are required.
Declare your setupmise.toml[bootstrap.packages]
[bootstrap.repos]
[dotfiles]
[bootstrap.services]
mise bootstrap
Packagesbrew · apt · scoop · winget
RepositoriesProject checkouts
DotfilesLink · copy · template
ServicesBackground processes
mise bootstrap plan previews declarative resource changes before you apply them.

Set up a machine with mise bootstrap

Declare the packages, repositories, dotfiles, and services your machine needs, then apply them with mise bootstrap. Preview declarative resource changes with mise bootstrap plan. Add shell activation and platform-specific settings to keep machine setup alongside your tools.

  • Packages through brew, apt, dnf, pacman, apk, mas, scoop, and winget
  • Dotfiles as symlinks, copies, or templates, plus single-line edits
  • Remote hosts over SSH with mise bootstrap remote
mise bootstrap --from git@github.com:you/dotfiles.git

Read the bootstrap guide

— Related project

Share Cargo builds with Mr Boxington

Give every Cargo checkout one shared, self-pruning compilation cache, locally and in CI.

mr-boxington.jdx.dev

Run your first project task

  1. Step 1

    Install mise

    On macOS or Linux, use the installer below. See Windows and package manager instructions for other options.

    $ curl https://mise.run | sh
    $ ~/.local/bin/mise --version
  2. Step 2

    Activate your shell

    For zsh, add this line and restart your shell. Follow the activation guide for other shells. You can also skip activation and use ~/.local/bin/mise exec or ~/.local/bin/mise run.

    $ echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
    # Restart your shell before continuing.
  3. Step 3

    Add tools

    From your project directory, mise use installs a tool and saves its version request in mise.toml.

    $ mkdir mise-example
    $ cd mise-example
    $ mise use node@24
  4. Step 4

    Add env vars and tasks

    Save a task alongside its environment, then run it. Commit mise.toml to share the setup. See the complete example to print both the tool version and environment.

    $ mise set NODE_ENV=development
    $ mise tasks add hello -- node -p process.env.NODE_ENV
    $ mise run hello
    development

— Ready when you are

Allez. Prep your station.

curl https://mise.run | sh
MIT LicenseCopyright © 2026jdx.dev