id = "mise" name = "mise" homepage = "https://mise.jdx.dev" description = "Dev tools, environment variables and tasks in one project configuration." icon = "https://mise.jdx.dev/favicon.svg" executables = ["mise"] [dotfiles] # https://mise.jdx.dev/configuration.html — the global config is # $XDG_CONFIG_HOME/mise/config.toml, with conf.d for drop-ins; that variable, # and not a hard-coded ~/.config, is [configHome]. ~/.tool-versions is the # asdf-compatible global fallback and is hard-coded in the home directory. paths = [ "[configHome]/mise/config.toml", "[configHome]/mise/conf.d/", "~/.tool-versions", ] # Installed toolchains and the tool cache: gigabytes of build output. `mise # doctor` prints the three under `dirs:` and they do not agree on a single # convention — data is ~/.local/share/mise on macOS as on Linux, which is # [xdgData], while cache is ~/Library/Caches/mise on macOS, which is # [cacheHome]. The state directory is $XDG_STATE_HOME, a base directory the # path syntax has no name for, so it keeps its literal spelling. exclude = [ "[xdgData]/mise/", "[cacheHome]/mise/", "~/.local/state/mise/", ] secret = [] # No machine_lines: the machine-specific part of a mise config is the values # inside [env] (absolute paths to SDKs), and key_path selects keys, not # values. Naming individual [env] keys here would be one contributor's # variable names, not a fact about mise. Left to the consumer's heuristics. [commands] format = 1 label = "mise" description = "Common mise jobs: install tools, add them to the config, list them. Execution and tasks are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand]] path = ["use"] label = "Install a tool and add it to config" [[commands.subcommand.source]] id = "help" kind = "help" revision = "mise 2026.10.15" evidence = """Usage: mise use [FLAGS] [TOOL@VERSION]… Tool to add to the config file, such as node@24, -f, --force Reinstall even if already installed -g, --global Write to the global config instead of the -p, --path Write to this config file, or to the config --fuzzy Write the version as requested, such as `20` --pin Write the resolved version, such as `20.19.5` --dry-run-code Like --dry-run, but exit with code 1 if there""" [[commands.subcommand.field]] id = "tools" label = "Tools (tool@version)" type = "string" position = 0 multiple = true suggestions = [{ value = "node@24", label = "node@24" }, { value = "python@latest", label = "python@latest" }] sources = ["help"] [[commands.subcommand.field]] id = "global" label = "Write to global config" type = "boolean" option = ["--global", "-g"] sources = ["help"] [[commands.subcommand.field]] id = "pin" label = "Pin resolved version" type = "boolean" option = ["--pin"] sources = ["help"] [[commands.subcommand.field]] id = "force" label = "Reinstall if installed" type = "boolean" option = ["--force", "-f"] effect = "overwrite" sources = ["help"] [[commands.subcommand.field]] id = "path" label = "Config file" type = "path" option = ["--path", "-p"] path = { kind = "any", role = "output" } sources = ["help"] [[commands.subcommand.task]] id = "use_tool" label = "Use a tool in this project" fields = ["tools"] required = ["tools"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["tools", "global", "pin"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["path", "force"] [[commands.subcommand]] path = ["install"] label = "Install tools" [[commands.subcommand.source]] id = "help" kind = "help" revision = "mise 2026.10.15" evidence = """Usage: mise install [FLAGS] [TOOL@VERSION]… [TOOL@VERSION]… Tools to install, such as `node@24`; defaults to every tool -f, --force Reinstall even if already installed -j, --jobs How many tools to install in parallel; -n, --dry-run Show what would be installed, without -v, --verbose Show installer output""" [[commands.subcommand.field]] id = "tools" label = "Tools (tool@version)" description = "Leave empty to install everything in the config." type = "string" position = 0 multiple = true sources = ["help"] [[commands.subcommand.field]] id = "dry_run" label = "Dry run" type = "boolean" option = ["--dry-run", "-n"] sources = ["help"] [[commands.subcommand.field]] id = "force" label = "Reinstall" type = "boolean" option = ["--force", "-f"] effect = "overwrite" sources = ["help"] [[commands.subcommand.field]] id = "jobs" label = "Parallel jobs" type = "integer" option = ["--jobs", "-j"] sources = ["help"] [[commands.subcommand.field]] id = "verbose" label = "Show installer output" type = "boolean" option = ["--verbose", "-v"] sources = ["help"] [[commands.subcommand.task]] id = "install_all" label = "Install everything in config" fields = ["dry_run", "verbose"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["tools", "dry_run", "verbose"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["jobs", "force"]