Home/Blog/Developer tooling
Developer tooling · mise

Are You Using mise-en-place Yet?

If you're developing with Python, Terraform, AWS, Azure, or really anything — managing your tools and environments can quickly become a mess.

Our data engineers recently discovered a powerful utility called mise, short for mise-en-place, a polyglot tool version manager. It's now become a go-to part of our development workflow.

Why use mise?

When you're working across multiple repositories and environments, maintaining consistent tool versions is a challenge. One developer might use Python 3.8, another 3.10. One repo needs Terraform 1.5.7, another needs a newer or older version. Add in CLI tools like aws, jq, go, trivy, java, and it gets complicated — fast.

Sure, you might already be using pyenv for Python or tfenv for Terraform, but what about everything else? Even for niche or obscure Pokémon (I mean tools) the mise registry likely has you covered. cocogitto, ginkgo or mongosh anyone?

How to use it

Install mise. Add a simple mise.toml file to your repo with a [tools] section that declares all the tools and versions you need:

[tools]
awscli    = "latest"
python    = "3.14.0"
terraform = "1.5.7"
rclone    = "latest"

Then run:

mise install

Boom — everything is installed, all at once.

Works in CI too

There's a dedicated GitHub Action to make using mise seamless in your CI workflows: jdx/mise-action. Drop it into your workflow YAML like this:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: jdx/mise-action@v2

As long as your repo has a mise.toml file, this will automatically install all required tools before the rest of your job runs. You don't need CI workflows cluttered with install steps for every tool — mise handles all of that upfront. And when you add a tool or change a version in mise.toml, you don't risk forgetting to update your CI workflows to match.

Manage environments with ease

Need to set environment variables like AWS_PROFILE? Drop them into a local override file like mise.local.toml. This is handy when working in different AWS accounts, or letting developers use their own profiles or settings. If mise is active, your terminal will automatically set those variables — before your next command even runs.

Set a global tool baseline

You can use mise to manage a global baseline of your favourite tools on your system. Quickly switch, upgrade, or downgrade versions as needed. It also supports Tasks, Plugins, and more — though we haven't explored those features yet.

TL;DR

If you're juggling multiple tools, repos or environments, mise brings simplicity and consistency. Install mise, add a mise.toml, and move on with your life.

Back to all posts

Keep reading

Back to all posts