{"id":12365,"date":"2025-11-28T17:02:52","date_gmt":"2025-11-28T08:02:52","guid":{"rendered":"https:\/\/sreake.com\/?p=12365"},"modified":"2026-02-10T16:14:52","modified_gmt":"2026-02-10T07:14:52","slug":"mise-development-env-management-2","status":"publish","type":"post","link":"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/","title":{"rendered":"An Alternative to anyenv and asdf: Setting Up a Development Environment with Mise"},"content":{"rendered":"\n<p><em>This blog post is a translation of\u00a0<\/em><a href=\"https:\/\/sreake.com\/blog\/mise-development-env-management\/\" title=\"\">a Japanese article<\/a><em>\u00a0posted on October 24th, 2025.<\/em><\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_75 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Introduction\" >Introduction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#What_is_mise\" >What is mise?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Key_Features\" >Key Features<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Installation\" >Installation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Basic_Usage\" >Basic Usage<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Installing_from_misetoml\" >Installing from mise.toml<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Installing_a_Specific_Tool\" >Installing a Specific Tool<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Checking_Available_Versions\" >Checking Available Versions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Checking_Installed_Tools\" >Checking Installed Tools<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Comparison_with_Other_Tools\" >Comparison with Other Tools<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#The_Role_and_Limitations_of_anyenv\" >The Role and Limitations of anyenv<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Key_Differences_Between_asdf_and_mise\" >Key Differences Between asdf and mise<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Comparison_Table\" >Comparison Table<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/sreake.com\/en\/blog\/mise-development-env-management-2\/#Summary\" >Summary<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Introduction\"><\/span>Introduction<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In software development, it is common to encounter situations like a project requiring Node.js v16, but another project not running unless it&#8217;s v18.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Historically, tools like <strong>anyenv<\/strong> and <strong>asdf<\/strong> have been widely used to help solve these issues.<\/p>\n\n\n\n<p>However, <strong>mise<\/strong> has recently gained attention as a tool aiming for a simpler, more modern approach.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_mise\"><\/span>What is mise?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>mise<\/strong> is a tool designed to unify the version management of multiple programming languages and CLI tools.<\/p>\n\n\n\n<p>It is engineered with a focus on simplicity and speed, improving upon legacy systems that were often criticized for having &#8220;complicated configurations&#8221; or &#8220;unintuitive operations.&#8221;<\/p>\n\n\n\n<p>Its main features include:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Simple Usability<\/strong>: It features an intuitive command structure, allowing users to get started in a relatively short amount of time.<\/li><li><strong>Project-Based Environment Management<\/strong>: By defining necessary tools and versions in mise.toml, it becomes much easier to reproduce specific environments.<\/li><li><strong>High Performance<\/strong>: Built with Rust, it ensures snappy environment switching and version specification.<\/li><li><strong>Designed for Teams<\/strong>: Sharing configuration files allows team members to use the exact same environment, significantly smoothing the onboarding process.<\/li><\/ul>\n\n\n\n<p>Mise prioritizes easy and fast switching between development environments, making it a versatile tool for everything from personal use to team development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Features\"><\/span>Key Features<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Version Management<\/strong>: Easily switch between versions of languages like Node.js, Python, and Ruby.<\/li><li><strong>CLI Tool and Utility Management<\/strong>: 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.<\/li><li><strong>Project-Specific Settings<\/strong>: Using mise.toml facilitates the automatic reproduction of environments on a per-project basis.<\/li><li><strong>High Speed<\/strong>: The Rust-based implementation provides a low-stress experience during daily use.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Installation\"><\/span>Installation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>On macOS, you can install it using Homebrew.<\/p>\n\n\n\n<pre class=\"wp-block-code code-block\"><code>brew install mise<\/code><\/pre>\n\n\n\n<p>If you are using another operating system, please refer to the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/mise.jdx.dev\/getting-started.html\">official documentation<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Basic_Usage\"><\/span>Basic Usage<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Installing_from_misetoml\"><\/span>Installing from <code>mise.toml<\/code><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code code-block\"><code>mise install<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Installing_a_Specific_Tool\"><\/span>Installing a Specific Tool<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code code-block\"><code>mise use &lt;tool_name>@&lt;version><\/code><\/pre>\n\n\n\n<p>Example: Installing node v22.20.0<\/p>\n\n\n\n<pre class=\"wp-block-code code-block\"><code>mise use node@22.20.0<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Checking_Available_Versions\"><\/span>Checking Available Versions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code code-block\"><code>mise ls-remote &lt;tool_name><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Checking_Installed_Tools\"><\/span>Checking Installed Tools<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code code-block\"><code>mise list<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Comparison_with_Other_Tools\"><\/span>Comparison with Other Tools<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Role_and_Limitations_of_anyenv\"><\/span>The Role and Limitations of anyenv<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Scope of Management<\/strong>: anyenv acts as a combined wrapper for &#8220;individual language version managers&#8221; 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.<\/li><li><strong>Operational Impact<\/strong>: While languages can be configured via anyenv, CLI tools are managed through a separate system. This can make it difficult to completely reproduce a &#8220;Language + Tool set&#8221; environment on a per-project basis.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Differences_Between_asdf_and_mise\"><\/span>Key Differences Between asdf and mise<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Configuration Files<\/strong>: asdf uses .tool-versions. Mise adopts mise.toml, which offers clearer declarations for each tool and better compatibility with project settings.<\/li><li><strong>Speed and Daily Use<\/strong>: Mise is fast, offering snappy switching operations. You can expect improved responsiveness in daily use compared to asdf.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Comparison_Table\"><\/span>Comparison Table<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><td><strong>Tool<\/strong><\/td><td><strong>anyenv<\/strong><\/td><td><strong>asdf<\/strong><\/td><td><strong>mise<\/strong><\/td><\/tr><\/thead><tbody><tr><td>Management Scope<\/td><td>Managers per language (nvm, pyenv, etc.)<\/td><td>Languages + CLI Tools<\/td><td>Languages + CLI Tools<\/td><\/tr><tr><td>Ease of Installation<\/td><td>Medium<\/td><td>Medium<\/td><td>High<\/td><\/tr><tr><td>Project Reproducibility<\/td><td>Languages only (Tools managed separately)<\/td><td>Good<\/td><td><strong>Very Good (Integrates Languages + Tools)<\/strong><\/td><\/tr><tr><td>Config File<\/td><td>Individual env configs<\/td><td><code>.tool-versions<\/code><\/td><td><code>mise.toml<\/code><\/td><\/tr><tr><td>Performance<\/td><td>Light (Simple)<\/td><td>Slightly heavy<\/td><td><strong>Fast (Rust-based)<\/strong><\/td><\/tr><tr><td>Team Suitability<\/td><td>Low<\/td><td>Average<\/td><td><strong>High<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Summary\"><\/span>Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Managing development environments is an unavoidable theme as long as we deal with different languages and tools across projects.<\/p>\n\n\n\n<p>While tools like anyenv and asdf have been the standard choices, <strong>mise offers a compelling new alternative in terms of simplicity, speed, and environment reproducibility.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Low learning curve due to an intuitive command structure.<\/li><li>Enables environment reproduction via <code>mise.toml<\/code>, making it suitable for team development.<\/li><li>Rust-based high performance ensures a low-stress daily experience.<\/li><li>Capable of managing non-language CLI tools like gcloud and pnpm.<\/li><\/ul>\n\n\n\n<p>Given these features, <strong>it is a tool worth considering for both individual and team use.<\/strong><\/p>\n\n\n\n<p>If you find yourself spending too much time on environment setup and version management, or if you are juggling multiple projects in parallel, trying <strong>mise<\/strong> could significantly improve your development experience.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello from the Sreake team! Learn what mise is, how it compares to other tools, and how you can use it to create reproducible development environments.<\/p>\n","protected":false},"author":45,"featured_media":12370,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_locale":"en_US","_original_post":"https:\/\/sreake.com\/?p=12132","footnotes":""},"categories":[17],"tags":[23],"class_list":["post-12365","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-enginner-blog","en-US"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/posts\/12365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/comments?post=12365"}],"version-history":[{"count":1,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/posts\/12365\/revisions"}],"predecessor-version":[{"id":13508,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/posts\/12365\/revisions\/13508"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/media\/12370"}],"wp:attachment":[{"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/media?parent=12365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/categories?post=12365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sreake.com\/wp-json\/wp\/v2\/tags?post=12365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}