mise
Manage multiple language runtime versions
TLDR
List all available plugins
Install a plugin
List runtime versions available for install
Install a specific version of a package
Set global version for a package
Set local version for a package
Set environment variable in configuration
Pass plugin options
SYNOPSIS
mise COMMAND [OPTIONS] [ARGUMENTS]
PARAMETERS
--help, -h
Displays help information for mise or a specific subcommand.
--version, -v
Prints the current mise version.
--json
Outputs command results in JSON format where applicable, useful for scripting.
--raw
Outputs raw, unformatted data, typically used for scripting or direct consumption without additional formatting.
--quiet, -q
Suppresses non-essential output, showing only critical information or errors.
--verbose
Enables verbose output, providing more detailed information for debugging or understanding command execution.
DESCRIPTION
mise (formerly rtx) is a powerful, modern, and fast polyglot tool version manager designed to streamline the management of various programming language runtimes, development tools, and environment variables. Written in Rust for exceptional performance, mise serves as an efficient alternative or successor to tools like asdf, offering a unified interface for installing, switching, and managing versions of popular tools such as Node.js, Python, Ruby, Go, Rust, and many others.
It integrates seamlessly with common shells (Bash, Zsh, Fish) and supports direnv, allowing for automatic environment setup based on the current directory. mise maintains compatibility with asdf's .tool-versions
file format, which enables developers to define project-specific tool versions, ensuring consistency across development teams and CI/CD pipelines. Its focus on speed, extensibility through a plugin system, and a user-friendly experience makes mise an increasingly popular choice for developers seeking to simplify their development environment setup.
CAVEATS
Requires shell integration (e.g., via eval "$(mise activate)"
) to properly manage tool versions by modifying the shell's PATH and environment variables.
Can conflict with other active version managers (like asdf, nvm, pyenv) if not configured to work alongside or replace them.
Initial setup and tool installations require an active internet connection and consume disk space for downloaded tool versions and plugins.
SHELL INTEGRATION
For mise to function correctly and seamlessly manage tool versions, it requires explicit shell integration. This is typically achieved by adding a command like eval "$(mise activate)"
(or mise activate <SHELL>
for specific shells) to your shell's configuration file (e.g., .bashrc
, .zshrc
, config.fish
). This command dynamically modifies your shell's PATH
environment variable and sets up shims, allowing mise to intercept commands and execute the correct tool versions based on your project or global settings.
<CODE>.TOOL-VERSIONS</CODE> COMPATIBILITY
A core feature of mise is its full compatibility with the .tool-versions
file format, originally popularized by asdf. These files, typically placed in project root directories, allow developers to specify exact versions of various tools required for a particular project (e.g., nodejs 18.17.1
, python 3.10.12
). When mise detects a .tool-versions
file in the current directory or any parent directory, it automatically switches to and uses the specified tool versions, guaranteeing consistent development environments across different projects and team members.
EXTENSIBILITY THROUGH PLUGINS
mise's versatility is significantly enhanced by its robust plugin system. This architecture allows users to extend mise's capabilities to manage virtually any command-line tool or runtime not natively supported. Many existing asdf plugins are compatible with mise, providing a vast ecosystem of tools that can be installed and managed. Developers can also create custom plugins to support internal tools or specific project requirements, making mise a highly adaptable solution for diverse development workflows.
HISTORY
mise was originally developed by Jeff Dickey under the name rtx (Rust ToolX). It was conceived as a high-performance, Rust-based alternative to existing version managers like asdf, aiming to address performance bottlenecks and introduce new features while maintaining compatibility with the widely adopted .tool-versions
file format. The project gained significant traction for its speed and modern approach.
In a strategic move to broaden its appeal and reflect its expanded capabilities beyond just 'tool X' management, rtx was rebranded to mise. This rebranding signifies its evolution into a more comprehensive and distinct solution for managing diverse development environments, emphasizing its focus on efficiency, extensibility, and a streamlined developer experience.