LinuxCommandLibrary

mise

Manage multiple language runtime versions

TLDR

List all available plugins

$ mise plugins list-all
copy

Install a plugin
$ mise plugins add [name]
copy

List runtime versions available for install
$ mise ls-remote [name]
copy

Install a specific version of a package
$ mise install [name]@[version]
copy

Set global version for a package
$ mise use --global [name]@[version]
copy

Set local version for a package
$ mise use [name]@[version]
copy

Set environment variable in configuration
$ mise set [variable]=[value]
copy

Pass plugin options
$ mise use [name]\[[option1]=[option1_value],[option2]=[option2_value]\]@[version]
copy

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.

SEE ALSO

asdf(1), nvm(1), pyenv(1), rvm(1), direnv(1)

Copied to clipboard