Skip to content

Mise en Place

Mise en Place is a tool for consistently managing packages, environment variables, and tasks in a project.

Mise en Place is a tool that helps you manage your project’s dependencies, environment variables, and tasks in a consistent manner. It allows you to define these aspects in a single configuration file, making it easier to set up and maintain your development environment.

Easily define and manage your project’s dependencies across different package managers.

mise honors the use of its own configuration file and also .tools-version files for compatibility with asdf, and any individual tool’s version file (e.g., .python-version, .node-version, etc.).

I’m only covering installation methods for Linux, macOS, and Homebrew here. For other installation methods, please refer to the official documentation.

Terminal window
curl https://mise.run | sh

By default, mise will be installed to ~/.local/bin (this is simply a suggestion. mise can be installed anywhere). You can verify the installation by running:

Terminal window
~/.local/bin/mise --version
# _ __
# ____ ___ (_)_______ ___ ____ ____ / /___ _________
# / __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
# / / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/
# /_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/
# /_/ by @jdx
# 2026.2.1 macos-arm64 (2026-02-02)

~/.local/bin does not need to be in PATH. mise will automatically add its own directory to PATH when activated. mise respects MISE_DATA_DIR and XDG_DATA_HOME if you’d like to change these locations.

After installation, we need to activate mise in our shell. You can do this by adding the following line to your shell configuration file (e.g., .bashrc, .zshrc, etc.):

Terminal window
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc

There are at least two places where you can define your mise configuration:

  1. For Global settings: ~/.config/mise/config.toml
  2. For project-specific settings: mise.toml

mise.toml is the config file for mise. They can be at any of the following file paths (in order of precedence, top overrides configuration of lower paths):

mise.local.toml - used for local config, this should not be committed to source control mise.toml mise/config.toml .mise/config.toml .config/mise.toml- use this in order to group config files into a common directory.config/mise/config.toml .config/mise/conf.d/*.toml` - all files in this directory will be loaded in alphabetical order

Notes:

  • Paths which start with mise can be dotfiles, e.g.: .mise.toml or .mise/config.toml.

Here is an example of a mise.toml file that defines packages, environment variables, and tasks:

[settings]
python.uv_venv_auto = true
[tools]
d2 = "latest"
fnox = "latest"
"pipx:harlequin" = "latest"
pre-commit = "latest"
python = "3.14.0"
sops = "latest"
sqlite = "latest"
terraform = "1.14.3"
terragrunt = "0.97.2"
[env]
_.source = '.env_vars'
_.python.venv = { path = "venv", create = true }
PROXMOX_VE_API_TOKEN = "$(fnox get PM_USER)=$(fnox get PM_PASS)"
[tasks."ansible:pkg_upgrade"]
description = "Upgrade all packages with logging records"
alias = "apkgup"
dir = "ansible"
env = { ANSIBLE_CALLBACKS_ENABLED = "package_update_logger" }
usage = '''
flag "-l --limit <limit>" help="Limit the hosts to run the playbook on" default="all"
'''
run = "echo ${PWD}; ansible-playbook playbooks/packages_upgrade_with_logging.yml --limit ${usage_limit?}"

You don’t need a mise.toml file to use mise. Once mise is installed and activated in your shell, you can start using it right away.

To add a package to your project, you can use the mise add command followed by the package name and version. For example, to add Python 3.14.0, Terraform 1.14.3 and the latest SOPS, you would run:

Terminal window
mise add python@3.14.0
mise add terraform@1.14.3
mise add sops@latest

You can also specify packages from different package managers by prefixing the package name with the manager name. For example, to add the harlequin package using pipx, you would run:

Terminal window
mise add pipx:harlequin@latest

To install the packages defined in your mise.toml file, simply run:

Terminal window
mise install

This command will read the tools section of your configuration file, or the other tools files, and install the specified packages using the appropriate package managers.

To list the installed packages, you can use:

Terminal window
mise list

To upgrade all installed packages to their latest versions, run:

Terminal window
mise upgrade

You can define environment variables in the env section of your mise.toml file. For example:

[env]
DATABASE_URL = "postgres://user:password@localhost:5432/mydb"
API_KEY = "your_api_key_here"

Mise will automatically load these environment variables when you activate mise in your shell and enter the folder where mise.toml is, or any other below in the tree.

You can also add environment variables using the mise env add command:

Terminal window
mise env add DATABASE_URL "postgres://user:password@localhost:5432/mydb"
mise env add API_KEY "your_api_key_here"

To list the environment variables currently set by mise, use:

Terminal window
mise env list

You can define tasks in the tasks section of your mise.toml file. For example:

[tasks.tfplan]
description = "Run Terraform plan"
command = "terraform plan"
[tasks.tgplan]
description = "Run Terragrunt plan"
command = "terragrunt plan"

You can also add tasks using the mise task add command:

Terminal window
mise task add tfplan "Run Terraform plan" "terraform plan"
mise task add tgplan "Run Terragrunt plan" "terragrunt plan"

In addition to defining tasks through the configuration, they can also be defined as standalone script files in one of the following directories:

  • mise-tasks/:task_name
  • .mise-tasks/:task_name
  • mise/tasks/:task_name
  • .mise/tasks/:task_name
  • .config/mise/tasks/:task_name

Note that you can configure directories using the task_config section.

mise-task/tfplan.sh
#!/usr/bin/env bash
#MISE description="Run Terraform plan"
terraform plan

To list the defined tasks, you can use:

Terminal window
mise tasks ls
# Name Description
# tfplan Run Terraform plan

To run a task, use the mise task run command followed by the task name. For example, to run the tfplan task, you would execute:

Terminal window
mise run tfplan