Skip to content

mise - Dev Environment Manager Cheatsheet

mise - Dev Environment Manager Cheatsheet

A polyglot dev environment manager that replaces asdf, nvm, pyenv, direnv, and make in a single tool. Manage tool versions, environment variables, and project tasks — all from one config file.

Installation

PlatformCommand
macOS/Linux (Recommended)curl https://mise.run | sh
macOS (Homebrew)brew install mise
Arch Linuxsudo pacman -S mise
Ubuntu/Debian (apt)sudo apt install mise
Fedora/RHELsudo dnf install mise
Windows (Scoop)scoop install mise
Cargo (All platforms)cargo install mise
Nixnix-env -iA nixpkgs.mise
Dockerdocker run jdx/mise

Shell Integration (Required)

ShellConfig FileCommand to Add
Bash~/.bashrceval "$(mise activate bash)"
Zsh~/.zshrceval "$(mise activate zsh)"
Fish~/.config/fish/config.fishmise activate fish | source
PowerShellProfilemise activate pwsh | Out-String | Invoke-Expression

Tool Version Management

Installing and Using Tools

CommandDescription
mise use node@22Install Node.js 22 and set for current directory
mise use python@3.12Install Python 3.12 for current directory
mise use --global node@22Set Node.js 22 as global default
mise use node@ltsUse the latest LTS version
mise use node@latestUse the absolute latest version
mise installInstall all tools from mise.toml / .tool-versions
mise install nodeInstall the configured version of Node.js
mise install node@20Install a specific version
mise uninstall node@18Remove a specific version
mise upgrade nodeUpgrade Node.js to latest matching version
mise upgradeUpgrade all tools
mise lsList all installed tool versions
mise ls nodeList installed Node.js versions
mise ls-remote nodeShow all available Node.js versions
mise which nodeShow path to active node binary
mise where node@22Show installation directory for Node.js 22
mise search pythonSearch for available tools matching “python”
mise exec node@20 -- node -vRun command with a specific tool version

Supported Tools (Partial List)

Node.js, Python, Ruby, Go, Rust, Java, Erlang, Elixir, PHP, Terraform, kubectl, Helm, Deno, Bun, and hundreds more via plugins.

Environment Variables

CommandDescription
mise set MY_VAR=valueSet env var for current directory
mise set --global API_KEY=xyzSet global env var
mise unset MY_VARRemove an env var
mise envShow all active environment variables
mise env --jsonShow env vars as JSON

Task Management

CommandDescription
mise run buildRun the “build” task
mise run testRun the “test” task
mise run lint -- --fixRun task with extra arguments
mise tasks lsList all available tasks
mise tasks info buildShow details about the “build” task
mise tasks add build "npm run build"Create a new task
mise tasks edit buildEdit a task in your editor
mise tasks depsShow task dependency tree
mise tasks validateValidate task configuration

Configuration Files

mise.toml (Primary — per-project)

# .mise.toml or mise.toml in project root
[tools]
node = "22"               # Exact major version
python = "3.12"            # Exact minor version
terraform = "latest"       # Always latest
ruby = "3.3.0"             # Exact patch version
go = "prefix:1.22"         # Latest 1.22.x

[env]
NODE_ENV = "development"
DATABASE_URL = "postgres://localhost/mydb"
# Load from .env file
_.file = ".env"

[tasks.build]
description = "Build the project"
run = "npm run build"
depends = ["install"]      # Run 'install' first

[tasks.install]
description = "Install dependencies"
run = "npm install"

[tasks.test]
description = "Run test suite"
run = "npm test"
depends = ["build"]

[tasks.dev]
description = "Start dev server"
run = "npm run dev"

.tool-versions (asdf-compatible)

# .tool-versions — compatible with asdf
node 22.0.0
python 3.12.1
ruby 3.3.0

Config Hierarchy (Most specific wins)

  1. mise.toml in current directory
  2. mise.toml in parent directories (walking up)
  3. ~/.config/mise/config.toml (global)

Diagnostics and Utilities

CommandDescription
mise doctorDiagnose configuration issues
mise versionShow mise version
mise self-updateUpdate mise itself
mise cache clearClear download and build caches
mise reshimRegenerate shim files
mise deactivateDeactivate mise in current shell
mise lockCreate a lockfile for reproducible installs
mise config lsList all active configuration files

Plugin Management

CommandDescription
mise plugins lsList installed plugins
mise plugins install terraformInstall a plugin
mise plugins updateUpdate all plugins
mise plugins update terraformUpdate specific plugin
mise backends lsList available tool backends

Migration from Other Tools

From nvm

# Remove nvm from shell config, then:
mise use --global node@$(node -v | sed 's/v//')

From asdf

# mise reads .tool-versions files natively
# Just install mise and activate it — existing .tool-versions files work

From direnv

# Move env vars to mise.toml [env] section
# mise handles directory-scoped env vars natively

Common Workflows

# Set up a new project
cd ~/projects/my-app
mise use node@22 python@3.12
mise set NODE_ENV=development

# Clone and bootstrap a project
git clone repo && cd repo
mise install              # Installs all tools from mise.toml

# Run project tasks
mise run dev              # Start dev server
mise run test             # Run tests
mise run build            # Build for production

# Check tool versions across projects
mise ls

# Keep tools up to date
mise upgrade              # Upgrade all tools to latest

Comparison with Other Tools

Featureasdfnvmdirenvmise
Multi-languageYesNode onlyNoYes
Env variablesNoNoYesYes
Task runnerNoNoNoYes
Config file.tool-versions.nvmrc.envrcmise.toml + .tool-versions
SpeedSlow (shell)ModerateFastFast (Rust)
ShimsYesYesNoYes

Resources