Skip to content

Instantly share code, notes, and snippets.

@morisono
Forked from daveio/use-mise.md
Created July 3, 2025 09:25
Show Gist options
  • Save morisono/e11e5161164e529be3d306ddb0ff4572 to your computer and use it in GitHub Desktop.
Save morisono/e11e5161164e529be3d306ddb0ff4572 to your computer and use it in GitHub Desktop.
Use mise.

Use mise.

If you're not using mise as your version manager, you really should consider it.

It's become my primary way of installing things, only falling back to Homebrew when absolutely necessary.

Combined with chezmoi this keeps my tooling in sync across every environment I work in.

Shims

By default, it links binaries directly in the shell path instead of using shims, but also generates shims if you want to use them - they're kept in ~/.local/share/mise/shims/.

direnv

If you don't want to use the mise shell integration directly for some reason, it works with direnv. Here's a sample .envrc:

use mise

That's literally it.

Core Plugins

It can manage the following as core plugins:

  • node - Node.js
  • python - Python
  • ruby - Ruby
  • go - Go
  • rust - Rust
  • java - Java
  • bun - Bun
  • deno - Deno
  • elixir - Elixir
  • erlang - Erlang
  • swift - Swift
  • zig - Zig

Other Languages

Other languages are available through other backends. This is not an exhaustive list, just to give you a taste:

  • clojure - via asdf
  • crystal - via asdf and vfox
  • dart - via asdf and vfox
  • elm - via ubi and asdf
  • groovy - via asdf and vfox
  • haskell - via asdf
  • julia - via asdf
  • kotlin - via asdf and vfox
  • lua - via asdf
  • nim - via asdf
  • ocaml - via asdf
  • perl - via aqua and asdf
  • php - via asdf and vfox
  • purescript - via ubi and asdf
  • r - via asdf
  • scala - via asdf and vfox
  • solidity - via ubi and asdf

Backends

It also uses backends to support installation of tools - not just languages - from all kind of sources:

  • aqua - Deterministic package manager with cosign/slsa validation
  • asdf - Use any asdf plugin with mise
  • cargo - Rust tools, will use cargo-binstall if you have it (you can use mise to install it, of course)
  • dotnet - .NET tools
  • gem - Ruby tools
  • go - Compile and fetch Go tools
  • npm - Node.js tools, supports using bun instead
  • pipx - Self contained Python packages, supports using uvx instead
  • spm - Swift Package Manager
  • ubi - Fetch binaries from GitHub releases
  • vfox - Windows-compatible plugin system

Tasks

It is also a task runner:

  • mise [task] - Run the task named [task]
  • mise run [task] - Run the task named [task] - useful if your task name clashes with a mise subcommand

Integration

It can integrate itself with stuff nicely:

  • mise generate bootstrap - Generate a script to download and execute mise
  • mise generate config - Generate a mise.toml file for your project
  • mise generate devcontainer - Generate a devcontainer configuration to execute mise
  • mise generate git-pre-commit - Generate a git pre-commit hook for your project
  • mise generate github-action - Generate a GitHub Action workflow file
  • mise generate task-docs - Generate documentation for tasks in a project
  • mise generate task-stubs - Generate shims to run mise tasks

Coexistence

Finally, a pretty cool feature - import your tools from other version managers. You can even continue to use them:

  • mise sync node - Symlinks all Node.js tool versions from external tools (like nvm) into mise
  • mise sync python - Symlinks all Python tool versions from external tools (like pyenv) into mise
  • mise sync ruby - Symlinks all Ruby tool versions from external tools (like rbenv) into mise
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment