mise README

The project's README from github.com/jdx/mise. As one markdown file: README.md.

mise
mise-en-place

Crates.io GitHub GitHub Workflow Status Discord

Dev tools, env vars, and tasks in one CLI

Getting Started • Documentation • Dev Tools • Environments • Tasks

Sponsored by

Entire     Omacom Foundation

View all sponsors


What is mise?

mise manages your development tools, environment variables, and project tasks. Declare them in mise.toml, commit the file, and use the same setup in your shell, your editor, and CI.

Use the parts you need. Start with one tool or task and add more to the same config.

Quickstart

1. Install mise

On macOS or Linux:

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

On Windows, install with winget install jdx.mise. See the installation guide for package managers and other installation methods.

The examples below use mise. If it isn't on your PATH yet, use ~/.local/bin/mise instead on macOS or Linux.

2. Try a tool

mise exec node@24 -- node --version

This installs Node.js if needed and runs it for this command, without changing your project configuration. No shell activation is required.

For an existing project that already has a reviewed mise.toml, run mise install from its directory and mise tasks ls to discover its tasks.

3. Give a project its own environment

In a project directory, create mise.toml:

[tools]
node = "24"

[env]
NODE_ENV = "development"

[tasks.hello]
description = "Print the project's Node.js version and environment"
run = '''node -e "console.log(process.version, process.env.NODE_ENV)"'''

Run the task:

mise run hello

mise installs the configured tool if needed, loads NODE_ENV, and runs the task. The output includes the Node.js version and development. Commit mise.toml so teammates and CI can run the same command.

To add tools later, run mise use [email protected] from the project directory. Use mise use --global to set personal defaults. Version requests such as "24" select a release in that series; use exact pins or a lockfile when you need everyone to use the same resolved version.

4. Activate your shell (optional)

Activation makes project tools and environment variables available directly when you enter a directory. For an installation from mise.run, add one of these lines to the corresponding shell config:

# ~/.bashrc
eval "$(~/.local/bin/mise activate bash)"
# ~/.zshrc
eval "$(~/.local/bin/mise activate zsh)"
# ~/.config/fish/config.fish
~/.local/bin/mise activate fish | source

Restart your shell, then run node --version inside the project. For PowerShell and other installation methods, follow the shell setup guide.

Check your project setup

mise config ls
mise ls --current
mise exec -- node --version

These show which configuration files are loaded, which versions are selected, and whether the tool runs in the project environment. If mise exec works but node --version does not, check shell activation with mise doctor.

Where to go next

I want to… Read
Set up mise for the first time Getting started
Add mise to an existing project Walkthrough
Understand configuration and overrides Configuration
Use mise in an editor or CI IDE integration · Continuous integration
Find a command or solve a problem CLI reference · Troubleshooting
Contribute to mise Contributing · Writing docs

Demo

Watch mise install tools and switch Node.js versions as you change directories.

Demo of mise managing tools

A text transcript is also available.

GitHub Issues & Discussions

Use GitHub Discussions for support and feature requests. GitHub Issues are not used for new reports.

Special Thanks

Namespace
Thanks to Namespace for providing CI services for mise.

Contributors

Contributors

mise (jdx/mise)

devops
Searching Database…

35.1K ·GitHub
What is this?mise is a single CLI that manages your development tools, environment variables, and project tasks. Everything is declared in a mise.toml file you commit, so your shell, editor, and CI all share one setup.
So is it a library I add to my code, or something installed on my machine?It's a standalone command-line tool you install on your machine — macOS, Linux, or Windows. Projects just carry a mise.toml file that mise reads.
How do I get it running?Install with the mise.run script on macOS or Linux, or 'winget install jdx.mise' on Windows. In a project with a mise.toml, run 'mise install' to set up its tools and 'mise tasks ls' to see what tasks it has.
Do I have to edit my shell config for it to work?No — you can run everything through mise without touching your shell. Optionally add one activation line to your shell config so tools and env vars load automatically when you enter a project directory.
If I request Node 22, will my teammates get exactly the same version?Not necessarily: a loose request like '24' selects a release in that series, so resolved versions can differ between machines. Pin exact versions or commit a lockfile when everyone needs identical results.
Which dev tools can it install?Node.js, Python, Go and hundreds more, with different versions for each project. Add one in a project with 'mise use [email protected]', or set personal defaults with 'mise use --global'.
Besides swapping tool versions, what else does it do?It sets project environment variables and loads .env files, runs build and test tasks with the tools and environment they need, and can bootstrap a whole machine — system packages, dotfiles, and services — from the same mise.toml.
How does it keep my teammates and CI in sync with me?You commit mise.toml, so everyone — including CI — runs the same commands and gets the same tools and environment. A project with a reviewed mise.toml needs just 'mise install' to be ready to work in.
How do I check why a tool isn't picking up my project's version?Run 'mise doctor': it shows which config files load, which versions are selected, and whether shell activation works. If 'mise exec' runs a tool fine but 'node --version' doesn't match, doctor points at the activation problem.
What are similar projects?gvm, just, nvm, volta, nub, task, vite-plus, tpm
Creator
jdx
Size
149.3 MB
Stars
35.1K
Age
3y
Commits · 90 Days