Skip to content

Directory Structure

The following are the directories that mise uses.

TIP

If you often find yourself using these directories (as I do), I suggest setting all of them to ~/.mise for easy access.

~/.config/mise

  • Override: $MISE_CONFIG_DIR
  • Default: ${XDG_CONFIG_HOME:-$HOME/.config}/mise

This directory stores the global configuration file ~/.config/mise/config.toml. This is intended to go into your dotfiles repo to share across machines.

~/.cache/mise

  • Override: $MISE_CACHE_DIR
  • Default: ${XDG_CACHE_HOME:-$HOME/.cache}/mise, macOS: ~/Library/Caches/mise.

Stores internal cache that mise uses for things like the list of all available versions of a plugin. Do not share this across machines. You may delete this directory any time mise isn't actively installing something. Do this with mise cache clear. See Cache Behavior for more information.

~/.local/state/mise

  • Override: $MISE_STATE_DIR
  • Default: ${XDG_STATE_HOME:-$HOME/.local/state}/mise

Used for storing state local to the machine such as which config files are trusted. These should not be shared across machines.

~/.local/share/mise

  • Override: $MISE_DATA_DIR
  • Default: ${XDG_DATA_HOME:-$HOME/.local/share}/mise

This is the main directory that mise uses and is where plugins and tools are installed into. It is nearly identical to ~/.asdf in asdf, so much so that you may be able to get by symlinking these together and using asdf and mise simultaneously. (Supporting this isn't a project goal, however).

This directory could be shared across machines but only if they run the same OS/arch. In general I wouldn't advise doing so.

~/.local/share/mise/downloads

This is where plugins may write downloaded assets such as tarballs during installation. mise removes these files by default after install/uninstall; set always_keep_download to keep them for debugging backend/plugin install behavior. This directory is not a supported download cache. Some backends may skip a download when the expected file already exists, but that behavior is backend-specific and not guaranteed. Cache ~/.local/share/mise/installs instead if you want to avoid reinstalling tools in CI or offline workflows.

~/.local/share/mise/plugins

mise installs plugins to this directory when running mise plugins install. If you are working on a plugin, I suggest symlinking it manually by running:

sh
ln -s ~/src/mise-my-tool ~/.local/share/mise/plugins/my-tool

~/.local/share/mise/installs

This is where tools are installed to when running mise install. For example, mise install node@20.0.0 will install to ~/.local/share/mise/installs/node/20.0.0

This will also create other symlinks to this directory for version prefixes ("20" and "20.15") and matching aliases ("lts", "latest"). For example:

sh
$ tree ~/.local/share/mise/installs/node
20 -> ./20.15.0
20.15 -> ./20.15.0
lts -> ./20.15.0
latest -> ./20.15.0

You can set the MISE_INSTALLS_DIR environment variable to override this location.

MISE_INSTALLS_DIR is read when mise starts. Set it in the environment before invoking mise and keep it set for later mise and shim invocations. Do not set it in the [env] section of mise.toml: [env] describes the environment mise exports, after mise has already selected its installation directory. Setting it there can make an install use one directory while later commands and shims look in another.

~/.local/share/mise/shims

This is where mise places shims. Generally these are used for IDE integration or if mise activate does not work for some reason.

MIT LicenseCopyright © 2026jdx.dev