ConfigsApr 6, 2026·2 min read

Mise — Dev Environment Manager for Any Language

Single tool to manage Node, Python, Go, Rust, Java, and 100+ dev tool versions. Replaces nvm, pyenv, rbenv with one CLI. Project-level version pinning via .mise.toml. 12,000+ stars.

TL;DR
Mise replaces nvm, pyenv, and rbenv with a single CLI that manages 100+ dev tool versions with project-level pinning.
§01

What it is

Mise is a development environment manager that handles version management for Node, Python, Go, Rust, Java, and 100+ other tools through a single CLI. It replaces the collection of version managers (nvm, pyenv, rbenv, sdkman) that developers typically install and maintain separately.

Mise uses a .mise.toml file for project-level version pinning. When you cd into a project directory, Mise automatically activates the correct versions of all tools. It also supports .tool-versions (asdf format) and .node-version files for backward compatibility.

§02

How it saves time or tokens

Mise eliminates the overhead of installing and configuring multiple version managers. Instead of learning the syntax for nvm, pyenv, and rbenv separately, you use one consistent CLI. Switching between projects with different Node and Python versions is automatic.

The estimated token cost for a typical Mise configuration is around 2,600 tokens. This small upfront investment pays off by preventing version mismatch bugs and onboarding delays.

§03

How to use

  1. Install Mise:
curl https://mise.run | sh
  1. Install tools and pin versions:
mise use node@20
mise use python@3.12
mise use go@1.22
  1. This creates a .mise.toml in your project:
[tools]
node = "20"
python = "3.12"
go = "1.22"
§04

Example

A full-stack project with multiple tools:

# .mise.toml
[tools]
node = "20.12"
python = "3.12"
go = "1.22"
rust = "1.77"
java = "21"

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

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

[tasks.test]
run = "npm test && go test ./..."
description = "Run all tests"

Mise also manages environment variables and custom tasks, replacing both version managers and simple task runners.

§05

Related on TokRepo

§06

Common pitfalls

  • Forgetting to activate Mise in your shell. Add eval "$(mise activate zsh)" (or bash/fish) to your shell profile. Without activation, version switching does not happen automatically.
  • Conflicting with existing version managers. If nvm and Mise both manage Node, they may fight over PATH priority. Remove or disable nvm before switching to Mise.
  • Not committing .mise.toml to the repository. The file should be version-controlled so all team members use the same tool versions. Add mise trust in your onboarding docs.

Frequently Asked Questions

How is Mise different from asdf?+

Mise is a rewrite of asdf concepts in Rust. It is faster (10-100x for many operations), supports .mise.toml configuration, includes built-in environment variable management and task running, and does not require shell function installation for basic usage.

Does Mise support all the same plugins as asdf?+

Yes. Mise is compatible with asdf plugins. Any asdf plugin works with Mise. Additionally, Mise has its own core plugins for common tools (Node, Python, Go) that are faster than the asdf equivalents.

Can Mise manage environment variables?+

Yes. Mise supports an [env] section in .mise.toml for project-specific environment variables. Variables are loaded when you enter the project directory and unloaded when you leave. This replaces tools like direnv for many use cases.

Does Mise work on Windows?+

Mise has experimental Windows support. It works best on macOS and Linux. On Windows, consider using WSL2 where Mise runs natively in the Linux environment.

How do I migrate from nvm/pyenv to Mise?+

Install Mise, then run 'mise use node@<version>' and 'mise use python@<version>' to pin your current versions. Mise reads .node-version and .python-version files for backward compatibility. Once confirmed working, remove nvm/pyenv from your shell profile.

Citations (3)
  • Mise GitHub— Mise manages Node, Python, Go, and 100+ dev tool versions
  • Mise Documentation— Project-level version pinning via .mise.toml configuration
  • asdf GitHub— asdf plugin compatibility and migration
🙏

Source & Thanks

Created by Jeff Dickey. Licensed under MIT.

mise — ⭐ 12,000+

Thanks for ending the version manager madness.

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets