Skip to content

mise-en-place / everything in its place

Your dev setup.
In good order.

Declare your tool versions, environment variables, and commands in mise.toml. Use them in your shell, editor, and CI. Add machine setup with mise bootstrap when you need system packages, dotfiles, or services.

curl https://mise.run | sh

macOS & Linux Installing on Windows?

mise.tomlExample configuration

# The right versions, in every 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
A comfortable home for your development workflow.
  • Open source & MIT licensed
  • macOS, Linux & Windows
  • Single CLI

02 Day to day

Change directory. Everything follows.

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
~/workzsh
$ cd api
$ node --version
v22.12.0
$ echo $DATABASE_URL
postgres://localhost/api
 
$ cd ../dashboard
$ node --version
v24.18.0
$ mise ls --current
Tool   Version   Source
bun    1.2.20    ~/work/dashboard/mise.toml
node   24.18.0   ~/work/dashboard/mise.toml

03 New machine

mise.toml~/.config/mise
[bootstrap.packages]
"brew:postgresql@17" = "latest"
"apt:build-essential" = "latest"
[bootstrap.repos]
"~/src/notes" = { url = "git@github.com:me/notes.git" }
[dotfiles]
"~/.config/mise/config.toml" = { source = "config.toml", mode = "symlink" }
"~/.gitconfig" = { source = "dotfiles/gitconfig", mode = "template" }
"~/.config/nvim" = { source = "dotfiles/nvim", mode = "symlink" }
[bootstrap.macos.dock]
autohide = true
[bootstrap.mise_shell_activate]
zshrc = "activate"

One config for the whole machine.

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, and mas
  • 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

Chef's special

Mr Boxington: fix your target/.

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

mr-boxington.jdx.dev

04 Quickstart

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