TL;DR — Quick Summary

mise (formerly rtx) manages dev tool versions. Node.js, Python, Go, Rust, Java — one tool for all runtimes. asdf-compatible, faster, with built-in tasks and env vars.

mise manages everything. Node, Python, Go, Ruby, Java — one tool, one config, all versions.

Installation

# macOS
brew install mise

# Script
curl https://mise.run | sh

# Activate (add to .bashrc/.zshrc)
eval "$(mise activate bash)"
# or
eval "$(mise activate zsh)"

Usage

# Install and use a tool version
mise use node@20
mise use python@3.12
mise use go@1.22

# Pin version in current project
mise use --pin ruby@3.3.0

# List installed
mise list

# List available versions
mise list-all node

# Global version
mise use -g node@20

# Run in context
mise exec node@18 -- node app.js

# Environment variables
mise set MY_VAR=value

# Tasks
mise run build
mise run test

Configuration

# .mise.toml
[tools]
node = "20"
python = "3.12"
go = "1.22"

[env]
DATABASE_URL = "postgres://localhost/mydb"

[tasks.build]
run = "npm run build"

[tasks.test]
run = "npm test"
depends = ["build"]

Summary

  • mise manages 400+ dev tool versions from one CLI
  • asdf-compatible plugins, 10-100x faster (Rust)
  • Built-in task runner with dependencies
  • Environment variable management (.env support)
  • Per-project and global version pinning