An Alternative to anyenv and asdf: Setting Up a Development Environment with Mise

Kodai Nakahara

2025.11.28

This blog post is a translation of a Japanese article posted on October 24th, 2025.

Introduction

In software development, it is common to encounter situations like a project requiring Node.js v16, but another project not running unless it’s v18.

While it is natural to handle different languages and tool versions for each project, the constant need to switch contexts or repeat installation processes can become a burden for developers.

Historically, tools like anyenv and asdf have been widely used to help solve these issues.

However, mise has recently gained attention as a tool aiming for a simpler, more modern approach.

What is mise?

mise is a tool designed to unify the version management of multiple programming languages and CLI tools.

It is engineered with a focus on simplicity and speed, improving upon legacy systems that were often criticized for having “complicated configurations” or “unintuitive operations.”

Its main features include:

  • Simple Usability: It features an intuitive command structure, allowing users to get started in a relatively short amount of time.
  • Project-Based Environment Management: By defining necessary tools and versions in mise.toml, it becomes much easier to reproduce specific environments.
  • High Performance: Built with Rust, it ensures snappy environment switching and version specification.
  • Designed for Teams: Sharing configuration files allows team members to use the exact same environment, significantly smoothing the onboarding process.

Mise prioritizes easy and fast switching between development environments, making it a versatile tool for everything from personal use to team development.

Key Features

  • Version Management: Easily switch between versions of languages like Node.js, Python, and Ruby.
  • CLI Tool and Utility Management: You can also manage non-language CLI tools such as gcloud, pnpm, terraform, and kubectl. This allows you to reproduce the full development environment, combining both languages and tools as a single set.
  • Project-Specific Settings: Using mise.toml facilitates the automatic reproduction of environments on a per-project basis.
  • High Speed: The Rust-based implementation provides a low-stress experience during daily use.

Installation

On macOS, you can install it using Homebrew.

brew install mise

If you are using another operating system, please refer to the official documentation.

Basic Usage

Installing from mise.toml

mise install

Installing a Specific Tool

mise use <tool_name>@<version>

Example: Installing node v22.20.0

mise use node@22.20.0

Checking Available Versions

mise ls-remote <tool_name>

Checking Installed Tools

mise list

Comparison with Other Tools

The Role and Limitations of anyenv

  • Scope of Management: anyenv acts as a combined wrapper for “individual language version managers” like nvm, rbenv, and pyenv. However, CLI tools like gcloud, pnpm, terraform, and kubectl are out of scope, meaning they must be installed separately via Homebrew or official installers.
  • Operational Impact: While languages can be configured via anyenv, CLI tools are managed through a separate system. This can make it difficult to completely reproduce a “Language + Tool set” environment on a per-project basis.

Key Differences Between asdf and mise

  • Configuration Files: asdf uses .tool-versions. Mise adopts mise.toml, which offers clearer declarations for each tool and better compatibility with project settings.
  • Speed and Daily Use: Mise is fast, offering snappy switching operations. You can expect improved responsiveness in daily use compared to asdf.

Comparison Table

Toolanyenvasdfmise
Management ScopeManagers per language (nvm, pyenv, etc.)Languages + CLI ToolsLanguages + CLI Tools
Ease of InstallationMediumMediumHigh
Project ReproducibilityLanguages only (Tools managed separately)GoodVery Good (Integrates Languages + Tools)
Config FileIndividual env configs.tool-versionsmise.toml
PerformanceLight (Simple)Slightly heavyFast (Rust-based)
Team SuitabilityLowAverageHigh

Summary

Managing development environments is an unavoidable theme as long as we deal with different languages and tools across projects.

While tools like anyenv and asdf have been the standard choices, mise offers a compelling new alternative in terms of simplicity, speed, and environment reproducibility.

  • Low learning curve due to an intuitive command structure.
  • Enables environment reproduction via mise.toml, making it suitable for team development.
  • Rust-based high performance ensures a low-stress daily experience.
  • Capable of managing non-language CLI tools like gcloud and pnpm.

Given these features, it is a tool worth considering for both individual and team use.

If you find yourself spending too much time on environment setup and version management, or if you are juggling multiple projects in parallel, trying mise could significantly improve your development experience.

採用情報

Blog一覧へ戻る

Feel free to contact us

We provide support
for all aspects of SRE,
from design and technical support
to deployment of tools for SRE operations.

Brochure request and inquiries