{
"$id": "https://mise.jdx.dev/schema/mise.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "mise",
"type": "object",
"$defs": {
"daemon_port": {
"description": "A fixed port, or \"auto\" to derive one from the project root so the primary checkout keeps the base port and each linked git worktree gets its own.",
"oneOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 65535
},
{
"type": "string",
"const": "auto",
"description": "Offset the preset's default port by this project root's worktree slot."
},
{
"type": "object",
"required": ["auto"],
"properties": {
"auto": {
"const": true,
"description": "Enable per-worktree port allocation."
},
"base": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "Port used by the primary checkout. Defaults to the preset's port; required for custom daemons."
},
"stride": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "Distance between consecutive worktree slots. Defaults to 1."
}
},
"additionalProperties": false
}
]
},
"daemon_proxy": {
"description": "Hostname label the reverse proxy routes to this daemon, false to opt out, or true to use the daemon's name. Only a daemon with a port is routed. The hostname is <proxy>.<worktree>.<project>.<tld> in a linked git worktree and <proxy>.<project>.<tld> in the primary checkout.",
"oneOf": [
{
"type": "string",
"pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$",
"maxLength": 63
},
{
"type": "boolean",
"description": "false opts out of the reverse proxy; true uses the daemon's name, which re-enables routing for a preset that opts out."
}
]
},
"daemon_proxy_tls": {
"description": "Whether the proxy terminates TLS for this daemon or passes the connection through to it.",
"type": "string",
"enum": ["terminate", "passthrough"]
},
"task_dependency_item": {
"description": "task name and args",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "object",
"properties": {
"task": {
"type": "string"
},
"args": {
"type": "array",
"items": {
"type": "string"
}
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"optional": {
"description": "do not fail when the task name or pattern has no matches",
"type": "boolean"
}
},
"required": ["task"],
"unevaluatedProperties": false
}
]
},
"os_filter_item": {
"description": "operating system or os/arch pair to install on",
"type": "string",
"pattern": "^[A-Za-z0-9_.+-]+(/[A-Za-z0-9_.+-]+)?$",
"examples": [
"linux",
"macos",
"windows",
"unix",
"macos/arm64",
"linux/x64"
]
},
"os_filter": {
"description": "operating system filters to install on",
"oneOf": [
{
"$ref": "#/$defs/os_filter_item"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/os_filter_item"
},
"minItems": 1
}
]
},
"tool_alias_versions": {
"description": "tool version aliases",
"type": "object",
"additionalProperties": {
"description": "version alias points to",
"type": "string"
}
},
"tool_alias_entry": {
"oneOf": [
{
"description": "where the alias goes",
"type": "string"
},
{
"description": "tool to set aliases for",
"type": "object",
"properties": {
"backend": {
"description": "where the alias goes",
"type": "string"
},
"versions": {
"$ref": "#/$defs/tool_alias_versions"
}
},
"additionalProperties": {
"description": "version alias points to",
"type": "string"
}
}
]
},
"env_value": {
"description": "environment variable value; false removes the variable",
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "boolean"
}
]
},
"env_path": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"env_paths": {
"type": "array",
"items": {
"type": "string"
}
},
"env_tools": {
"type": "boolean",
"description": "load tools before resolving"
},
"env_file_expand": {
"type": "boolean",
"default": false,
"description": "enable shell-style variable expansion for values loaded by env._.file"
},
"env_redact": {
"type": "boolean",
"description": "redact the value from logs"
},
"env_required": {
"oneOf": [
{
"type": "boolean",
"description": "require this environment variable to be defined before mise runs or in a later config file"
},
{
"type": "string",
"description": "require this environment variable with user help text on how to set it"
}
],
"description": "require this environment variable to be defined before mise runs or in a later config file. Cannot be used with empty string values or value=false. Can be a boolean or a help string."
},
"env_default": {
"oneOf": [
{
"type": "string",
"description": "fallback value to use when the environment variable is unset or empty"
},
{
"type": "integer",
"description": "fallback value to use when the environment variable is unset or empty"
}
],
"description": "fallback value to use when the environment variable is unset or empty"
},
"env_age": {
"type": "string",
"description": "[experimental] age-encrypted value (simplified format)"
},
"env_age_value": {
"type": "string",
"description": "[experimental] age-encrypted value"
},
"env_age_format": {
"type": "string",
"enum": ["raw", "zstd"],
"description": "[experimental] compression format for the encrypted value"
},
"env_directive": {
"type": "object",
"properties": {
"path": {
"$ref": "#/$defs/env_path"
},
"paths": {
"$ref": "#/$defs/env_paths"
},
"tools": {
"$ref": "#/$defs/env_tools"
},
"expand": {
"$ref": "#/$defs/env_file_expand"
},
"redact": {
"$ref": "#/$defs/env_redact"
},
"required": {
"$ref": "#/$defs/env_required"
}
},
"oneOf": [
{
"type": "object",
"properties": {
"path": {
"$ref": "#/$defs/env_path"
}
},
"required": ["path"]
},
{
"type": "object",
"properties": {
"paths": {
"$ref": "#/$defs/env_paths"
}
},
"required": ["paths"]
}
]
},
"env": {
"additionalProperties": {
"oneOf": [
{
"type": "object",
"properties": {
"value": {
"$ref": "#/$defs/env_value"
},
"tools": {
"$ref": "#/$defs/env_tools"
},
"redact": {
"$ref": "#/$defs/env_redact"
},
"required": {
"$ref": "#/$defs/env_required"
}
},
"required": ["value"],
"unevaluatedProperties": false
},
{
"type": "object",
"properties": {
"default": {
"$ref": "#/$defs/env_default"
},
"tools": {
"$ref": "#/$defs/env_tools"
},
"redact": {
"$ref": "#/$defs/env_redact"
}
},
"required": ["default"],
"unevaluatedProperties": false
},
{
"type": "object",
"properties": {
"tools": {
"$ref": "#/$defs/env_tools"
},
"redact": {
"$ref": "#/$defs/env_redact"
},
"required": {
"$ref": "#/$defs/env_required"
}
},
"required": ["required"],
"unevaluatedProperties": false
},
{
"type": "object",
"properties": {
"age": {
"$ref": "#/$defs/env_age"
},
"tools": {
"$ref": "#/$defs/env_tools"
},
"redact": {
"$ref": "#/$defs/env_redact"
},
"required": {
"$ref": "#/$defs/env_required"
}
},
"required": ["age"],
"unevaluatedProperties": false,
"description": "[experimental] age-encrypted environment variable"
},
{
"type": "object",
"properties": {
"age": {
"type": "object",
"properties": {
"value": {
"$ref": "#/$defs/env_age_value"
},
"format": {
"$ref": "#/$defs/env_age_format"
},
"tools": {
"$ref": "#/$defs/env_tools"
},
"redact": {
"$ref": "#/$defs/env_redact"
},
"required": {
"$ref": "#/$defs/env_required"
}
},
"required": ["value"],
"unevaluatedProperties": false,
"description": "[experimental] age-encrypted value (complex format)"
}
},
"required": ["age"],
"unevaluatedProperties": false,
"description": "[experimental] age-encrypted environment variable"
},
{
"$ref": "#/$defs/env_value"
}
]
},
"description": "environment variables",
"properties": {
"_": {
"description": "environment modules",
"additionalProperties": true,
"properties": {
"file": {
"oneOf": [
{
"$ref": "#/$defs/env_directive"
},
{
"description": "environment file to load (dotenv, json, yaml, or toml)",
"type": "string"
},
{
"description": "environment files to load (dotenv, json, yaml, or toml)",
"type": "array",
"items": {
"oneOf": [
{
"description": "environment file to load (dotenv, json, yaml, or toml)",
"type": "string"
},
{
"$ref": "#/$defs/env_directive"
}
]
}
}
]
},
"path": {
"oneOf": [
{
"type": "object",
"properties": {
"path": {
"$ref": "#/$defs/env_path"
},
"paths": {
"$ref": "#/$defs/env_paths"
},
"tools": {
"$ref": "#/$defs/env_tools"
}
},
"oneOf": [
{
"type": "object",
"properties": {
"path": {
"$ref": "#/$defs/env_path"
}
},
"required": ["path"]
},
{
"type": "object",
"properties": {
"paths": {
"$ref": "#/$defs/env_paths"
}
},
"required": ["paths"]
}
]
},
{
"description": "PATH entry to add",
"type": "string"
},
{
"description": "PATH entries to add",
"type": "array",
"items": {
"oneOf": [
{
"description": "PATH entry to add",
"type": "string"
},
{
"type": "object",
"properties": {
"path": {
"$ref": "#/$defs/env_path"
},
"tools": {
"$ref": "#/$defs/env_tools"
}
}
}
]
}
}
]
},
"python": {
"description": "python environment",
"properties": {
"venv": {
"oneOf": [
{
"description": "path to python virtual environment to use",
"type": "string"
},
{
"description": "virtualenv options",
"properties": {
"create": {
"default": false,
"description": "create a new virtual environment if one does not exist",
"type": "boolean"
},
"path": {
"description": "path to python virtual environment to use",
"type": "string"
},
"python": {
"description": "python version to use",
"type": "string"
},
"python_create_args": {
"description": "additional arguments to pass to python when creating a virtual environment",
"type": "array",
"items": {
"type": "string"
}
},
"uv_create_args": {
"description": "additional arguments to pass to uv when creating a virtual environment",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["path"],
"type": "object"
}
]
}
},
"type": "object"
},
"source": {
"oneOf": [
{
"$ref": "#/$defs/env_directive"
},
{
"description": "bash script to load",
"type": "string"
},
{
"description": "bash scripts to load",
"type": "array",
"items": {
"oneOf": [
{
"description": "bash script to load",
"type": "string"
},
{
"$ref": "#/$defs/env_directive"
}
]
}
}
]
}
},
"type": "object"
}
},
"type": "object"
},
"settings": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"activate_aggressive": {
"description": "Pushes tools' bin-paths to the front of PATH instead of allowing modifications of PATH after activation to take precedence.",
"type": "boolean"
},
"activate_shims": {
"default": true,
"description": "Allow full shell activation to add tool shims to PATH.",
"type": "boolean"
},
"age": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"identity_files": {
"description": "List of age identity files to use for decryption (encrypted shared dotfiles and the experimental `[env]` age directives).",
"type": "array",
"items": {
"type": "string"
}
},
"key_file": {
"description": "Path to the age private key file to use for encryption/decryption: the default recipient and identity for encrypted shared dotfiles and the key for the experimental `[env]` age directives.",
"type": "string"
},
"ssh_identity_files": {
"description": "List of SSH identity files to use for age decryption (encrypted shared dotfiles and the experimental `[env]` age directives).",
"type": "array",
"items": {
"type": "string"
}
},
"strict": {
"default": true,
"description": "If true, fail when age decryption fails (including when age is not available, the key is missing, or the key is invalid). If false, skip decryption and continue in these cases.",
"type": "boolean"
}
}
},
"all_compile": {
"description": "do not use precompiled binaries for any tool",
"type": "boolean"
},
"always_keep_download": {
"description": "keep downloaded files after installation for debugging",
"type": "boolean"
},
"always_keep_install": {
"description": "should mise keep install files after installation even if the installation fails",
"type": "boolean"
},
"aqua": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"baked_registry": {
"default": true,
"description": "Use baked-in aqua registry.",
"type": "boolean"
},
"cosign": {
"default": true,
"description": "Use cosign to verify aqua tool signatures.",
"type": "boolean"
},
"github_attestations": {
"default": true,
"description": "Enable GitHub Artifact Attestations verification for aqua tools.",
"type": "boolean"
},
"minisign": {
"default": true,
"description": "Use minisign to verify aqua tool signatures.",
"type": "boolean"
},
"registries": {
"description": "Aqua registry sources to load before the baked-in registry.",
"type": "array",
"items": {
"type": "string"
}
},
"registry_cache_ttl": {
"description": "How long to cache downloaded aqua registry source files.",
"type": "string"
},
"registry_url": {
"description": "[deprecated] URL of an aqua registry repository to fetch.",
"type": "string",
"deprecated": true
},
"slsa": {
"default": true,
"description": "Use SLSA to verify aqua tool signatures.",
"type": "boolean"
}
}
},
"arch": {
"description": "Architecture to use for precompiled binaries.",
"type": "string"
},
"asdf_compat": {
"description": "set to true to ensure .tool-versions will be compatible with asdf",
"type": "boolean",
"deprecated": true
},
"auto_env": {
"description": "Automatically enable platform config environments (unix, {os}, {os}-{arch}).",
"type": "boolean"
},
"auto_install": {
"default": true,
"description": "Automatically install missing tools when running `mise x`, `mise run`, or as part of the 'not found' handler.",
"type": "boolean"
},
"auto_install_disable_tools": {
"description": "List of tools to skip automatically installing when running `mise x`, `mise run`, or as part of the 'not found' handler.",
"type": "array",
"items": {
"type": "string"
}
},
"auto_update": {
"default": false,
"description": "Automatically update mise before running eligible commands.",
"type": "boolean"
},
"auto_update_check_duration": {
"default": "7d",
"description": "How often to check for a new mise release when auto-update is enabled.",
"type": "string"
},
"cache_prune_age": {
"default": "30d",
"description": "Delete files in cache that have not been accessed in this duration",
"type": "string"
},
"cargo": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"binstall": {
"default": true,
"description": "Use cargo-binstall instead of cargo install if available",
"type": "boolean"
},
"binstall_native": {
"description": "Use mise's native cargo binary installer when cargo-binstall is unavailable.",
"type": "boolean"
},
"binstall_only": {
"default": false,
"description": "Require cargo-binstall for Cargo tools without an explicit Git source. Fail if no prebuilt binary is available or if tool options require cargo install.",
"type": "boolean"
},
"binstall_quickinstall": {
"default": false,
"description": "Allow cargo-binstall to use third-party cargo-quickinstall artifacts.",
"type": "boolean"
},
"registry_name": {
"description": "Name of the cargo registry to use.",
"type": "string"
}
}
},
"cd": {
"description": "Path to change to after launching mise",
"type": "string"
},
"ceiling_paths": {
"default": [],
"description": "Directories where mise stops searching for config files.",
"type": "array",
"items": {
"type": "string"
}
},
"ci": {
"default": "false",
"description": "Set to true if running in a CI environment",
"type": "boolean"
},
"color": {
"default": true,
"description": "Use color in mise terminal output",
"type": "boolean"
},
"color_theme": {
"default": "default",
"description": "Theme for interactive prompts (auto/default, charm, base16, catppuccin, dracula)",
"type": "string",
"enum": [
"auto",
"default",
"charm",
"base16",
"catppuccin",
"dracula"
]
},
"conda": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"channel": {
"default": "conda-forge",
"description": "Default channel for conda packages.",
"type": "string"
}
}
},
"debug": {
"description": "Sets log level to debug",
"type": "boolean"
},
"default_config_filename": {
"default": "mise.toml",
"description": "The default config filename read. `mise use` and other commands that create new config files will use this value. This must be an env var.",
"type": "string"
},
"default_tool_versions_filename": {
"default": ".tool-versions",
"description": "The default .tool-versions filename read. This will not ignore .tool-versions—use override_tool_versions_filename for that. This must be an env var.",
"type": "string"
},
"disable_backends": {
"default": [],
"description": "Backends to exclude from tool resolution and new installs, such as `asdf`, `pypi`, or a vfox-backend plugin name. Existing installations are left on disk and become available again if the backend is re-enabled.",
"type": "array",
"items": {
"type": "string"
}
},
"disable_default_registry": {
"description": "Disable the default mapping of short tool names like `php` -> `asdf:mise-plugins/asdf-php`. This parameter disables only for the backends `vfox` and `asdf`.",
"type": "boolean"
},
"disable_hints": {
"default": [],
"description": "Turns off helpful hints when using different mise features",
"type": "array",
"items": {
"type": "string"
}
},
"disable_tools": {
"default": [],
"description": "Tools defined in mise.toml that should be ignored",
"type": "array",
"items": {
"type": "string"
}
},
"disable_update_warning": {
"default": false,
"description": "Suppress warnings when a newer mise version is available.",
"type": "boolean"
},
"dotfiles": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"default_mode": {
"default": "symlink",
"description": "Default mode for dotfile entries when mode is omitted. Options: `symlink`, `symlink-each`, `copy`, `template`.",
"type": "string"
},
"relative_symlinks": {
"default": false,
"description": "Create dotfile symlinks with relative targets instead of absolute ones.",
"type": "boolean"
},
"root": {
"default": "~/.dotfiles",
"description": "Root directory used for implied dotfile sources.",
"type": "string"
}
}
},
"dotnet": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"cli_telemetry_optout": {
"description": "Set DOTNET_CLI_TELEMETRY_OPTOUT to opt out of .NET CLI telemetry.",
"type": "boolean"
},
"dotnet_root": {
"description": "Path to the shared .NET SDK root directory.",
"type": "string"
},
"isolated": {
"default": false,
"description": "Install each .NET SDK version in its own isolated directory.",
"type": "boolean"
},
"package_flags": {
"default": [],
"description": "[deprecated] Extends dotnet search and install abilities.",
"type": "array",
"deprecated": true,
"items": {
"type": "string"
}
},
"registry_url": {
"default": "https://api.nuget.org/v3/index.json",
"description": "NuGet service index used to discover dotnet tool versions.",
"type": "string"
}
}
},
"enable_tools": {
"description": "Tools defined in mise.toml that should be used; unset enables all tools and empty disables all tools",
"type": "array",
"items": {
"type": "string"
}
},
"env": {
"default": [],
"description": "Env to use for mise.<MISE_ENV>.toml files.",
"type": "array",
"items": {
"type": "string"
}
},
"env_cache": {
"default": false,
"description": "[experimental] Enable environment caching for nested mise invocations",
"type": "boolean"
},
"env_cache_ttl": {
"default": "1h",
"description": "TTL for cached environments",
"type": "string"
},
"env_conf_d": {
"description": "Enable environment-specific filenames in conf.d directories.",
"type": "boolean"
},
"env_file": {
"description": "Path to a file containing environment variables to automatically load.",
"type": "string"
},
"env_shell_expand": {
"default": true,
"description": "Controls shell-style variable expansion in env values (e.g., $FOO, ${BAR:-default})",
"type": "boolean"
},
"erlang": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"compile": {
"description": "If true, compile erlang from source. If false, use precompiled binaries. If not set, use precompiled binaries if available.",
"type": "boolean"
},
"precompiled_os": {
"description": "Ubuntu release target to use for precompiled Erlang builds from builds.hex.pm.",
"type": "string"
}
}
},
"exec_auto_install": {
"default": true,
"description": "Automatically install missing tools when running `mise x`.",
"type": "boolean"
},
"experimental": {
"description": "Enable experimental mise features which are incomplete or unstable—breakings changes may occur",
"type": "boolean"
},
"fetch_remote_versions_cache": {
"default": "1h",
"description": "How long to cache remote versions for tools.",
"type": "string"
},
"fetch_remote_versions_timeout": {
"default": "20s",
"description": "Timeout in seconds for HTTP requests to fetch new tool versions in mise.",
"type": "string"
},
"forgejo": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"credential_command": {
"default": "",
"description": "Shell command to run to obtain a Forgejo token for mise.",
"type": "string"
},
"fj_cli_tokens": {
"default": true,
"description": "Read Forgejo tokens from the fj CLI config.",
"type": "boolean"
},
"use_git_credentials": {
"default": false,
"description": "Use git credential helpers to obtain Forgejo tokens.",
"type": "boolean"
}
}
},
"github": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"credential_command": {
"default": "",
"description": "Shell command to run to obtain a GitHub token for mise.",
"type": "string"
},
"gh_cli_tokens": {
"default": true,
"description": "Read GitHub tokens from the gh CLI's hosts.yml config.",
"type": "boolean"
},
"github_attestations": {
"default": true,
"description": "Enable GitHub Artifact Attestations verification for github backend tools.",
"type": "boolean"
},
"oauth_api_url": {
"default": "https://api.github.com",
"description": "GitHub API base URL for native OAuth token validation.",
"type": "string"
},
"oauth_auth_url": {
"default": "https://github.com/login",
"description": "GitHub OAuth endpoint base URL for native device-flow tokens.",
"type": "string"
},
"oauth_client_id": {
"default": "",
"description": "GitHub App client ID for native OAuth device-flow tokens.",
"type": "string"
},
"oauth_export_env": {
"default": "GITHUB_TOKEN",
"description": "Environment variable name to export the native GitHub OAuth token under (empty disables).",
"type": "string"
},
"oauth_open_browser": {
"default": true,
"description": "Open the browser during native GitHub OAuth device flow.",
"type": "boolean"
},
"oauth_scopes": {
"default": "",
"description": "OAuth scopes requested for native GitHub device-flow tokens.",
"type": "string"
},
"slsa": {
"default": true,
"description": "Enable SLSA provenance verification for github backend tools.",
"type": "boolean"
},
"use_git_credentials": {
"default": false,
"description": "Use git credential helpers to obtain GitHub tokens.",
"type": "boolean"
}
}
},
"github_attestations": {
"default": true,
"description": "Enable GitHub Artifact Attestations verification for supported tools.",
"type": "boolean"
},
"github_relay": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"concurrency": {
"default": 8,
"description": "Maximum simultaneous GitHub relay requests (1-32); excess requests fail closed.",
"type": "integer"
},
"log_format": {
"default": "text",
"description": "GitHub relay request and summary output format: text or jsonl.",
"type": "string"
},
"log_requests": {
"default": false,
"description": "Log sanitized GitHub relay requests on the initiating machine's stderr.",
"type": "boolean"
},
"max_duration": {
"default": "0s",
"description": "Maximum borrowed GitHub access duration; 0s means until the session ends.",
"type": "string"
},
"request_timeout": {
"default": "5m",
"description": "Total time limit for a relayed request, including response streaming.",
"type": "string"
}
}
},
"gitlab": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"credential_command": {
"default": "",
"description": "Shell command to run to obtain a GitLab token for mise.",
"type": "string"
},
"glab_cli_tokens": {
"default": true,
"description": "Read GitLab tokens from the glab CLI config.",
"type": "boolean"
},
"use_git_credentials": {
"default": false,
"description": "Use git credential helpers to obtain GitLab tokens.",
"type": "boolean"
}
}
},
"gix": {
"default": true,
"description": "Use gix for git operations, set to false to shell out to git.",
"type": "boolean"
},
"global_config_file": {
"description": "Path to the global mise config file. Default is `~/.config/mise/config.toml`. This must be an env var.",
"type": "string"
},
"global_config_root": {
"description": "Path which is used as `{{config_root}}` for the global config file. Default is `$HOME`. This must be an env var.",
"type": "string"
},
"go": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"default_packages_file": {
"default": "~/.default-go-packages",
"description": "Path to a file containing default go packages to install when installing go.",
"type": "string",
"deprecated": true
},
"download_mirror": {
"default": "https://dl.google.com/go",
"description": "Mirror to download go sdk tarballs from.",
"type": "string"
},
"repo": {
"default": "https://github.com/golang/go",
"description": "URL to fetch go from.",
"type": "string"
},
"set_gobin": {
"description": "Changes where `go install` installs binaries to.",
"type": "boolean"
},
"set_gopath": {
"description": "[deprecated] Set to true to set GOPATH=~/.local/share/mise/installs/go/.../packages.",
"type": "boolean",
"deprecated": true
},
"set_goroot": {
"default": true,
"description": "Sets GOROOT=~/.local/share/mise/installs/go/.../.",
"type": "boolean"
},
"skip_checksum": {
"description": "Set to true to skip checksum verification when downloading go sdk tarballs.",
"type": "boolean"
}
}
},
"go_default_packages_file": {
"description": "Path to a file containing default go packages to install when installing go.",
"type": "string",
"deprecated": true
},
"go_download_mirror": {
"description": "Mirror to download go sdk tarballs from.",
"type": "string",
"deprecated": true
},
"go_repo": {
"description": "URL to fetch go from.",
"type": "string",
"deprecated": true
},
"go_set_gobin": {
"description": "Changes where `go install` installs binaries to.",
"type": "boolean",
"deprecated": true
},
"go_set_gopath": {
"description": "[deprecated] Set to true to set GOPATH=~/.local/share/mise/installs/go/.../packages.",
"type": "boolean",
"deprecated": true
},
"go_set_goroot": {
"description": "Sets GOROOT=~/.local/share/mise/installs/go/.../.",
"type": "boolean",
"deprecated": true
},
"go_skip_checksum": {
"description": "Set to true to skip checksum verification when downloading go sdk tarballs.",
"type": "boolean",
"deprecated": true
},
"gpg_verify": {
"description": "Verify OpenPGP signatures for all tools (built-in, no external gpg required). Set to false to disable.",
"type": "boolean"
},
"history": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"allow_plaintext_history": {
"default": false,
"description": "Allow publishing history that contains unencrypted versions of files now marked for encryption.",
"type": "boolean"
},
"describe_command": {
"default": "",
"description": "A command that names commits the watcher saves (an agent, say): it gets one JSON object on stdin (uuid, trigger, the computed description, changed tracked paths, and a unified diff of changed unencrypted files, at most 64 KiB) and prints one line of at most 200 characters, which becomes the description. Empty: computed descriptions only.",
"type": "string"
},
"enabled": {
"default": true,
"description": "Record ordinary Git commits for explicitly tracked files around bootstrap operations and on explicit saves.",
"type": "boolean"
},
"fetch_interval": {
"default": "15m",
"description": "How often the history watcher fetches the origin branch. Values below one second use one second; use history.sync = 'manual' to disable automatic synchronization.",
"type": "string"
},
"notify": {
"default": true,
"description": "Show a desktop notification when conflicts pause sharing for the setup. Enabled by default; retries stay silent until sharing recovers, and a notifier that is missing or failing never holds up history or sync.",
"type": "boolean"
},
"sync": {
"default": "sync",
"description": "What the history watcher does with a connected setup repository on its own: `sync` publishes after saves, fetches periodically, and applies incoming changes. Any conflict pauses publication and incoming application for the entire setup; local commits and fetching continue. `fetch-only` only fetches; `manual` does nothing automatically. `mise bootstrap dotfiles sync` and `pull` work on request in every mode.",
"type": "string",
"enum": ["sync", "fetch-only", "manual"]
},
"sync_interval": {
"default": "5m",
"description": "How soon after a save the history watcher publishes to the setup repository, at most this often.",
"type": "string"
},
"watch": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"debounce": {
"default": "2s",
"description": "How long a changed file must stay quiet before the history watcher saves it (the base autosave interval). A file that keeps changing is stretched on its own and never delays the others.",
"type": "string"
},
"max_interval": {
"default": "24h",
"description": "The longest autosave interval the history watcher stretches a constantly changing file to. Sustained churn doubles a file's own interval up to this; a settled file is saved promptly again, and a sustained quiet period resets it.",
"type": "string"
},
"reconcile": {
"default": "10m",
"description": "How often the history watcher rescans the whole tracked set for changes its watches missed. `0` disables periodic reconciliation (startup and configuration changes still reconcile).",
"type": "string"
}
}
}
}
},
"hook_env": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"cache_ttl": {
"default": "0s",
"description": "Cache hook-env directory checks for this duration. Useful for slow filesystems like NFS.",
"type": "string"
},
"chpwd_only": {
"default": false,
"description": "Only run hook-env checks on directory change, not on every prompt.",
"type": "boolean"
}
}
},
"http_download_timeout": {
"default": "30m",
"description": "Total time allowed for an HTTP download, including retries.",
"type": "string"
},
"http_retries": {
"default": 3,
"description": "Number of retries for transient HTTP failures in mise.",
"type": "integer"
},
"http_timeout": {
"default": "30s",
"description": "Timeout for connecting or waiting between reads during HTTP requests.",
"type": "string"
},
"idiomatic_version_file": {
"description": "Set to false to disable the idiomatic version files such as .node-version, .ruby-version, etc.",
"type": "boolean",
"deprecated": true
},
"idiomatic_version_file_disable_files": {
"default": [],
"description": "Specific idiomatic version files to disable for a tool.",
"type": "array",
"items": {
"type": "string"
}
},
"idiomatic_version_file_disable_tools": {
"default": [],
"description": "Specific tools to disable idiomatic version files for.",
"type": "array",
"deprecated": true,
"items": {
"type": "string"
}
},
"idiomatic_version_file_enable_tools": {
"default": [],
"description": "Specific tools to enable idiomatic version files for like .node-version, .ruby-version, etc.",
"type": "array",
"items": {
"type": "string"
}
},
"idiomatic_version_file_ignore_minimum_versions": {
"default": false,
"description": "Ignore idiomatic version file fields that only declare a minimum compatible version.",
"type": "boolean"
},
"ignored_config_paths": {
"default": [],
"description": "This is a list of config paths that mise will ignore.",
"type": "array",
"items": {
"type": "string"
}
},
"install_before": {
"description": "Minimum release age / supply chain protection — only install versions released before this date",
"type": "string",
"deprecated": true
},
"java": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"shorthand_vendor": {
"default": "openjdk",
"description": "Shorthand for Java. Used when installing Java without a vendor prefix.",
"type": "string"
}
}
},
"jobs": {
"default": 8,
"description": "How many jobs to run concurrently such as tool installs. Values below 1 are treated as 1.",
"type": "integer",
"minimum": 0
},
"legacy_version_file": {
"default": true,
"description": "Set to false to disable the idiomatic version files such as .node-version, .ruby-version, etc.",
"type": "boolean",
"deprecated": true
},
"legacy_version_file_disable_tools": {
"default": [],
"description": "Specific tools to disable idiomatic version files for.",
"type": "array",
"deprecated": true,
"items": {
"type": "string"
}
},
"libc": {
"description": "Libc implementation to use for precompiled Linux binaries.",
"type": "string",
"enum": ["glibc", "gnu", "musl"]
},
"libgit2": {
"default": true,
"description": "Use libgit2 for git operations, set to false to shell out to git.",
"type": "boolean"
},
"locked": {
"default": false,
"description": "Require lockfile URLs to be present during installation.",
"type": "boolean"
},
"locked_scopes": {
"default": ["global", "project", "system"],
"description": "Config scopes where invocation-wide locked mode is enforced.",
"type": "array",
"items": {
"type": "string",
"enum": ["project", "global", "system"]
}
},
"locked_verify_provenance": {
"default": false,
"description": "Re-verify provenance at install time even when the lockfile already has provenance.",
"type": "boolean"
},
"lockfile": {
"description": "Create and read lockfiles for tool versions.",
"type": "boolean"
},
"lockfile_mode": {
"description": "Choose incremental merging or complete lockfile generation.",
"type": "string",
"enum": ["merge", "generate"]
},
"lockfile_platforms": {
"description": "Platforms to target in lockfile operations.",
"type": "array",
"items": {
"type": "string"
}
},
"log_level": {
"default": "info",
"description": "Show more/less output.",
"type": "string",
"enum": ["trace", "debug", "info", "warn", "error"]
},
"minimum_release_age": {
"description": "Minimum release age / supply chain protection — only install versions older than this threshold",
"type": "string"
},
"minimum_release_age_excludes": {
"default": [],
"description": "Tools and backends to exclude from the global/default minimum_release_age setting",
"type": "array",
"items": {
"type": "string"
}
},
"netrc": {
"default": true,
"description": "Use a netrc file for HTTP Basic authentication.",
"type": "boolean"
},
"netrc_file": {
"description": "Path to the netrc file to use for HTTP Basic authentication.",
"type": "string"
},
"no_env": {
"description": "Do not load environment variables from config files.",
"type": "boolean"
},
"no_hooks": {
"description": "Do not execute hooks from config files.",
"type": "boolean"
},
"node": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"apply_patches": {
"description": "A list of patch files or URLs to apply to node source.",
"type": "string"
},
"cflags": {
"description": "Additional CFLAGS options (e.g., to override -O3).",
"type": "string"
},
"compile": {
"description": "Compile node from source.",
"type": "boolean"
},
"concurrency": {
"description": "How many jobs should be used in compilation.",
"type": "integer"
},
"configure_opts": {
"description": "Additional ./configure options.",
"type": "string"
},
"corepack": {
"description": "Installs the default corepack shims after installing any node version.",
"type": "boolean"
},
"default_packages_file": {
"description": "Path to a file containing default npm packages to install.",
"type": "string",
"deprecated": true
},
"flavor": {
"description": "Install a specific node flavor like glibc-217 or musl. Use with unofficial node build repo.",
"type": "string"
},
"gpg_verify": {
"description": "Verify OpenPGP signatures for node (built-in, no external gpg required). Set to false to disable.",
"type": "boolean"
},
"make": {
"description": "Make command to use.",
"type": "string"
},
"make_install_opts": {
"description": "Additional make install options.",
"type": "string"
},
"make_opts": {
"description": "Additional make options.",
"type": "string"
},
"mirror_url": {
"description": "Mirror to download node tarballs from.",
"type": "string"
},
"ninja": {
"description": "Use ninja instead of make to compile node.",
"type": "boolean"
},
"nodenv_root": {
"default": "~/.nodenv",
"description": "Directory for nodenv.",
"type": "string"
},
"npm_shim": {
"default": true,
"description": "Install a bash wrapper at bin/npm that triggers `mise reshim` after `npm install -g`. Disable to let corepack or a global `npm install -g npm@...` manage `bin/npm` directly.",
"type": "boolean"
},
"nvm_dir": {
"default": "~/.nvm",
"description": "Directory for nvm.",
"type": "string"
},
"verify": {
"default": true,
"description": "Verify the downloaded assets using GPG.",
"type": "boolean"
}
}
},
"not_found_auto_install": {
"default": true,
"description": "Set to false to disable the \"command not found\" handler to autoinstall missing tool versions.",
"type": "boolean"
},
"not_found_system_fallback": {
"default": true,
"description": "Set to false to stop shims from falling back to a same-named binary found elsewhere on PATH.",
"type": "boolean"
},
"npm": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"bun": {
"description": "Use bun instead of npm if bun is installed and on PATH.",
"type": "boolean",
"deprecated": true
},
"package_manager": {
"default": "auto",
"description": "Package manager to use for installing npm packages.",
"type": "string",
"enum": ["auto", "npm", "aube", "aube_cli", "bun", "pnpm"]
},
"shell_out": {
"default": false,
"description": "Shell out to the npm CLI for `npm:` version metadata and installs instead of mise's built-in aube-based implementation.",
"type": "boolean"
}
}
},
"oci": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"default_from": {
"default": "debian:bookworm-slim",
"description": "Default base image for `mise oci build` when [oci].from is not set.",
"type": "string"
},
"default_mount_point": {
"default": "/mise",
"description": "Path inside OCI images where mise tools are installed.",
"type": "string"
},
"insecure_registries": {
"description": "Registries (host or host:port) contacted over plain HTTP instead of HTTPS.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"offline": {
"description": "Disable all HTTP requests. Tools will only use locally cached data.",
"type": "boolean"
},
"os": {
"description": "OS to use for precompiled binaries.",
"type": "string"
},
"otel": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"enabled": {
"default": false,
"description": "[experimental] Enable OpenTelemetry trace export for task executions.",
"type": "boolean"
},
"logs": {
"default": false,
"description": "[experimental] Enable OpenTelemetry log export for task stdout/stderr.",
"type": "boolean"
}
}
},
"override_config_filenames": {
"default": [],
"description": "If set, mise will ignore default config files like `mise.toml` and use these filenames instead.",
"type": "array",
"items": {
"type": "string"
}
},
"override_tool_versions_filenames": {
"default": [],
"description": "If set, mise will ignore .tool-versions files and use these filenames instead. Can be set to `none` to disable .tool-versions.",
"type": "array",
"items": {
"type": "string"
}
},
"packslip": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"exec": {
"default": false,
"description": "Run a tool's own command at install time to produce a resource its packslip offers only as an exec entry, such as an agent skill.",
"type": "boolean"
},
"stampers": {
"description": "Hosts whose signed stamp lists say which packslip releases may be installed, each with its pin.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"paranoid": {
"description": "Enables extra-secure behavior.",
"type": "boolean"
},
"pin": {
"description": "Default to pinning versions when running `mise use` in mise.toml files.",
"type": "boolean"
},
"pipx": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"registry_url": {
"description": "URL to use for pipx registry.",
"type": "string"
},
"uvx": {
"description": "Use uvx instead of pipx if uv is installed and on PATH.",
"type": "boolean"
}
}
},
"plugin_autoupdate_last_check_duration": {
"default": "7d",
"description": "How long to wait before updating plugins automatically (note this isn't currently implemented).",
"type": "string"
},
"prefer_offline": {
"description": "Prefer locally cached data over remote fetches when possible.",
"type": "boolean"
},
"prereleases": {
"description": "Include pre-release versions in `ls-remote`, `latest` resolution, and fuzzy matching for all tools.",
"type": "boolean"
},
"profile": {
"description": "Profile to use for mise.${MISE_PROFILE}.toml files.",
"type": "string",
"deprecated": true
},
"provenance_api_failures_fatal": {
"default": true,
"description": "Fail when provenance API checks cannot be completed.",
"type": "boolean"
},
"pypi": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"registry_url": {
"description": "Package registry URL for Python tools (pipx.registry_url is a compatibility alias).",
"type": "string"
},
"uvx": {
"description": "Use uv for Python tools when available (pipx.uvx is a compatibility alias).",
"type": "boolean"
}
}
},
"python": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"compile": {
"description": "If true, compile python from source. If false, use precompiled binaries. If not set, use precompiled binaries if available.",
"type": "boolean"
},
"default_packages_file": {
"description": "Path to a file containing default python packages to install when installing a python version.",
"type": "string",
"deprecated": true
},
"github_attestations": {
"description": "Enable GitHub Artifact Attestations verification for precompiled Python binaries.",
"type": "boolean"
},
"patch_url": {
"description": "URL to fetch python patches from to pass to python-build.",
"type": "string"
},
"patches_directory": {
"description": "Directory to fetch python patches from.",
"type": "string"
},
"precompiled_arch": {
"description": "Specify the architecture to use for precompiled binaries.",
"type": "string"
},
"precompiled_flavor": {
"description": "Specify the flavor to use for precompiled binaries.",
"type": "string"
},
"precompiled_os": {
"description": "Specify the OS to use for precompiled binaries.",
"type": "string"
},
"pyenv_repo": {
"default": "https://github.com/pyenv/pyenv.git",
"description": "URL to fetch pyenv from for compiling python with python-build.",
"type": "string"
},
"uv_venv_auto": {
"default": false,
"description": "Integrate with uv to manage project venvs when uv.lock is present.",
"enum": [false, "source", "create|source", true],
"oneOf": [
{
"type": "boolean"
},
{
"type": "string"
}
]
},
"uv_venv_create_args": {
"description": "Arguments to pass to uv when creating a venv.",
"type": "array",
"items": {
"type": "string"
}
},
"venv_create_args": {
"description": "Arguments to pass to python when creating a venv. (not used for uv venv creation)",
"type": "array",
"items": {
"type": "string"
}
},
"venv_stdlib": {
"description": "Prefer to use venv from Python's standard library.",
"type": "boolean"
}
}
},
"quiet": {
"description": "Suppress all output except errors.",
"type": "boolean"
},
"raw": {
"description": "Connect stdin/stdout/stderr to child processes.",
"type": "boolean"
},
"registry_cache_ttl": {
"description": "How long to cache the floating mise registry.",
"type": "string"
},
"registry_floating": {
"default": false,
"description": "Fetch the latest released mise registry and current aqua registry instead of using only the snapshots baked into this mise release.",
"type": "boolean"
},
"ruby": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"apply_patches": {
"description": "A list of patch files or URLs to apply to ruby source.",
"type": "string"
},
"compile": {
"description": "If true, compile ruby from source. If false, require precompiled binaries. If not set, use precompiled binaries if available.",
"type": "boolean"
},
"default_packages_file": {
"default": "~/.default-gems",
"description": "Path to a file containing default ruby gems to install when installing ruby.",
"type": "string",
"deprecated": true
},
"github_attestations": {
"description": "Enable GitHub Artifact Attestations verification for precompiled Ruby binaries.",
"type": "boolean"
},
"precompiled_arch": {
"description": "Override architecture identifier for precompiled Ruby binaries.",
"type": "string"
},
"precompiled_os": {
"description": "Override OS identifier for precompiled Ruby binaries.",
"type": "string"
},
"precompiled_url": {
"default": "jdx/ruby",
"description": "URL template or GitHub repo for precompiled Ruby binaries.",
"type": "string"
},
"ruby_build_cli_opts": {
"description": "CLI options passed directly to ruby-build before the version and install prefix.",
"type": "string"
},
"ruby_build_opts": {
"description": "Configure arguments passed through ruby-build after `--`.",
"type": "string"
},
"ruby_build_repo": {
"default": "https://github.com/rbenv/ruby-build.git",
"description": "The URL used to fetch ruby-build. This accepts either a Git repository or a ZIP archive.",
"type": "string"
},
"ruby_install": {
"description": "Use ruby-install instead of ruby-build.",
"type": "boolean"
},
"ruby_install_opts": {
"description": "Options to pass to ruby-install.",
"type": "string"
},
"ruby_install_repo": {
"default": "https://github.com/postmodern/ruby-install.git",
"description": "The URL used to fetch ruby-install. This accepts either a Git repository or a ZIP archive.",
"type": "string"
},
"verbose_install": {
"description": "Set to true to enable verbose output during ruby installation.",
"type": "boolean"
}
}
},
"rust": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"cargo_home": {
"description": "Path to the cargo home directory. Defaults to `~/.cargo` or `%USERPROFILE%\\.cargo`",
"type": "string"
},
"default_host": {
"description": "Default host triple to pass to `rustup init` via `--default-host`.",
"type": "string"
},
"rustup_home": {
"description": "Path to the rustup home directory. Defaults to `~/.rustup` or `%USERPROFILE%\\.rustup`",
"type": "string"
}
}
},
"safe": {
"default": false,
"description": "Prevent project configuration from executing code during config loading and version resolution.",
"type": "boolean"
},
"sandbox": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"deny_all": {
"default": false,
"description": "Deny filesystem reads and writes, network access, and environment variable inheritance by default for `mise run` and `mise exec`.",
"type": "boolean"
},
"deny_env": {
"default": false,
"description": "Deny environment variable inheritance by default for `mise run` and `mise exec`.",
"type": "boolean"
},
"deny_net": {
"default": false,
"description": "Deny network access by default for `mise run` and `mise exec`.",
"type": "boolean"
},
"deny_read": {
"default": false,
"description": "Deny filesystem reads by default for `mise run` and `mise exec`.",
"type": "boolean"
},
"deny_write": {
"default": false,
"description": "Deny filesystem writes by default for `mise run` and `mise exec`.",
"type": "boolean"
}
}
},
"self_update": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"api_url": {
"default": "https://api.github.com",
"description": "GitHub API base URL used by `mise self-update`.",
"type": "string"
},
"repository": {
"default": "jdx/mise",
"description": "GitHub repository used by `mise self-update`.",
"type": "string"
}
}
},
"shared_install_dirs": {
"description": "Additional read-only directories to search for installed tool versions.",
"type": "array",
"items": {
"type": "string"
}
},
"shims": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"exclude": {
"default": [],
"description": "Command names mise should never create shims for, leaving them to the system.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"shims_dir": {
"description": "Directory containing user shims.",
"type": "string"
},
"shorthands_file": {
"description": "[deprecated] Path to a file containing custom tool shorthands.",
"type": "string",
"deprecated": true
},
"silent": {
"description": "Suppress all `mise run|watch` output except errors—including what tasks output.",
"type": "boolean"
},
"skills": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"auto_sync": {
"default": false,
"description": "Link the active tools' agent skills into the project after `mise install` and `mise use`.",
"type": "boolean"
},
"dir": {
"default": ".claude/skills",
"description": "Where `mise skills sync` links skills: a path under the project root, or under the home directory with `--global`.",
"type": "string"
},
"fetch": {
"default": true,
"description": "Fetch the agent skills a tool's packslip declares when installing it.",
"type": "boolean"
},
"prune": {
"default": false,
"description": "Remove links mise made for skills that are no longer active when syncing.",
"type": "boolean"
}
}
},
"slsa": {
"default": true,
"description": "Enable SLSA provenance verification globally.",
"type": "boolean"
},
"sops": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"age_key": {
"description": "The age private key to use for sops secret decryption. Takes precedence over standard SOPS_AGE_KEY environment variable.",
"type": "string"
},
"age_key_file": {
"description": "Path to the age private key file for sops secret decryption. Takes precedence over standard SOPS_AGE_KEY_FILE environment variable.",
"type": "string"
},
"age_recipients": {
"description": "The age public keys to use for sops secret encryption.",
"type": "string"
},
"rops": {
"default": true,
"description": "Use rops to decrypt sops files. Disable to shell out to `sops` which will slow down mise but sops may offer features not available in rops. Required for TOML SOPS files because the sops CLI does not support TOML.",
"type": "boolean"
},
"strict": {
"default": true,
"description": "If true, fail when sops decryption fails (including when sops is not available, the key is missing, or the key is invalid). If false, skip decryption and continue in these cases.",
"type": "boolean"
}
}
},
"spm": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"artifactbundle_only": {
"default": false,
"description": "Only use SwiftPM artifact bundles for installation, fail if no matching bundle is available.",
"type": "boolean"
}
}
},
"status": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"missing_tools": {
"default": "if_other_versions_installed",
"description": "Show a warning if tools are not installed when entering a directory with a mise.toml file.",
"type": "string"
},
"show_deps_stale": {
"default": true,
"description": "Show warning when deps providers have stale dependencies.",
"type": "boolean"
},
"show_env": {
"description": "Show configured env vars when entering a directory with a mise.toml file.",
"type": "boolean"
},
"show_tools": {
"description": "Show configured tools when entering a directory with a mise.toml file.",
"type": "boolean"
},
"truncate": {
"default": true,
"description": "Truncate status messages.",
"type": "boolean"
}
}
},
"swift": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"gpg_verify": {
"description": "Verify OpenPGP signatures for swift (built-in, no external gpg required). Set to false to disable.",
"type": "boolean"
},
"platform": {
"description": "Override the distro build to use for precompiled binaries. By default the distro is detected and matched against what the Swift release actually publishes, which changes from release to release. Set this to force a specific build, or to install without reaching swift.org's release index.",
"type": "string"
}
}
},
"system_config_file": {
"description": "Path to the system mise config file. Default is `/etc/mise/config.toml`. This must be an env var.",
"type": "string"
},
"system_deps": {
"default": "prompt",
"description": "How to handle a plugin's declared system dependencies before installing a tool.",
"type": "string",
"enum": ["prompt", "auto", "warn", "ignore"]
},
"system_installs_dir": {
"description": "Directory containing system tool installs.",
"type": "string"
},
"system_packages": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"managers": {
"description": "Restrict which system package managers mise will use.",
"type": "array",
"items": {
"type": "string"
}
},
"sudo": {
"default": true,
"description": "Allow `mise bootstrap` and `mise install --system` to elevate with sudo when not running as root.",
"type": "boolean"
}
}
},
"system_shims_dir": {
"description": "Directory containing system shims.",
"type": "string"
},
"task": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"auto_infer": {
"default": [],
"description": "[experimental] Workspace providers from which to automatically infer tasks.",
"type": "array",
"items": {
"type": "string"
}
},
"cache": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"audit_report": {
"description": "[experimental] File to write the complete task cache audit report to.",
"type": "string"
},
"remote_mode": {
"default": "read-write",
"description": "[experimental] Remote task and action cache access mode.",
"type": "string",
"enum": ["read-write", "read-only", "write-only"]
},
"remote_namespace": {
"description": "[experimental] Namespace sent to the remote build cache.",
"type": "string"
},
"remote_oidc_audience": {
"description": "[experimental] Audience for an automatically acquired remote cache OIDC token.",
"type": "string"
},
"remote_token": {
"description": "[experimental] Bearer token for remote build-cache authentication.",
"type": "string"
},
"remote_token_file": {
"description": "[experimental] File containing a remote build-cache bearer token.",
"type": "string"
},
"remote_url": {
"description": "[experimental] Base URL for the remote build-cache service.",
"type": "string"
},
"stats_report": {
"description": "[experimental] File to write action-cache session statistics to.",
"type": "string"
}
}
},
"cache_dir": {
"description": "[experimental] Directory for task output cache artifacts.",
"type": "string"
},
"cache_max_age": {
"description": "[experimental] Maximum age of task output cache entries since their last access.",
"type": "string"
},
"cache_max_size": {
"description": "[experimental] Maximum total size of task output cache entries.",
"type": "string"
},
"cache_remote_mode": {
"description": "Compatibility alias for task.cache.remote_mode.",
"type": "string",
"deprecated": true,
"enum": ["read-write", "read-only", "write-only"]
},
"cache_remote_namespace": {
"description": "Compatibility alias for task.cache.remote_namespace.",
"type": "string",
"deprecated": true
},
"cache_remote_oidc_audience": {
"description": "Compatibility alias for task.cache.remote_oidc_audience.",
"type": "string",
"deprecated": true
},
"cache_remote_token": {
"description": "Compatibility alias for task.cache.remote_token.",
"type": "string",
"deprecated": true
},
"cache_remote_token_file": {
"description": "Compatibility alias for task.cache.remote_token_file.",
"type": "string",
"deprecated": true
},
"cache_remote_url": {
"description": "Compatibility alias for task.cache.remote_url.",
"type": "string",
"deprecated": true
},
"disable_paths": {
"default": [],
"description": "Paths that mise will not look for tasks in.",
"type": "array",
"items": {
"type": "string"
}
},
"disable_spec_from_run_scripts": {
"default": false,
"description": "Opt out of parsing task run scripts to infer the usage spec (arguments and flags). When enabled, mise will derive the usage spec only from the `usage` field, ignoring any `arg()`, `option()`, or `flag()` templates used in run scripts. This can restore previous behavior and avoid the extra template pass over run scripts when collecting specs.",
"type": "boolean"
},
"monorepo_depth": {
"default": 5,
"description": "Maximum depth to search for task files in monorepo subdirectories.",
"type": "integer"
},
"monorepo_exclude_dirs": {
"default": [],
"description": "Directory patterns to exclude when discovering monorepo subdirectories.",
"type": "array",
"items": {
"type": "string"
}
},
"monorepo_respect_gitignore": {
"default": true,
"description": "Whether to respect .gitignore files when discovering monorepo subdirectories.",
"type": "boolean"
},
"output": {
"description": "Change output style when executing tasks.",
"type": "string",
"enum": [
"prefix",
"interleave",
"keep-order",
"replacing",
"timed",
"quiet",
"silent"
]
},
"quiet": {
"default": false,
"description": "Suppress mise's own output while executing tasks.",
"type": "boolean"
},
"remote_no_cache": {
"description": "Mise will always fetch the latest tasks from the remote, by default the cache is used.",
"type": "boolean"
},
"run_auto_install": {
"default": true,
"description": "Automatically install missing tools when executing tasks.",
"type": "boolean"
},
"show_full_cmd": {
"description": "Disable truncation of command lines in task execution output. When true, the full command line will be shown.",
"type": "boolean"
},
"skip": {
"default": [],
"description": "Tasks to skip when running `mise run`.",
"type": "array",
"items": {
"type": "string"
}
},
"skip_depends": {
"description": "Run only specified tasks skipping all dependencies.",
"type": "boolean"
},
"source_freshness_equal_mtime_is_fresh": {
"default": false,
"description": "When source mtime equals output mtime, consider sources fresh (use <=). Default false uses strict < comparison.",
"type": "boolean"
},
"source_freshness_hash_contents": {
"default": false,
"description": "Use content hashing (blake3) instead of metadata for source freshness. More accurate but slower.",
"type": "boolean"
},
"timeout": {
"description": "Default timeout for tasks.",
"type": "string"
},
"timings": {
"description": "Show completion message with elapsed time for each task on `mise run`. Default shows when output type is `prefix`.",
"type": "boolean"
}
}
},
"task_disable_paths": {
"description": "Paths that mise will not look for tasks in.",
"type": "array",
"deprecated": true,
"items": {
"type": "string"
}
},
"task_output": {
"description": "Change output style when executing tasks.",
"type": "string",
"deprecated": true
},
"task_remote_no_cache": {
"description": "Mise will always fetch the latest tasks from the remote, by default the cache is used.",
"type": "boolean",
"deprecated": true
},
"task_run_auto_install": {
"description": "Automatically install missing tools when executing tasks.",
"type": "boolean",
"deprecated": true
},
"task_show_full_cmd": {
"description": "Disable truncation of command lines in task execution output. When true, the full command line will be shown.",
"type": "boolean",
"deprecated": true
},
"task_skip": {
"description": "Tasks to skip when running `mise run`.",
"type": "array",
"deprecated": true,
"items": {
"type": "string"
}
},
"task_skip_depends": {
"description": "Run only specified tasks skipping all dependencies.",
"type": "boolean",
"deprecated": true
},
"task_timeout": {
"description": "Default timeout for tasks. Can be overridden by individual tasks.",
"type": "string",
"deprecated": true
},
"task_timings": {
"description": "Show completion message with elapsed time for each task on `mise run`. Default shows when output type is `prefix`.",
"type": "boolean",
"deprecated": true
},
"tera_v1": {
"default": false,
"description": "Use Tera v1 instead of Tera v2 for template rendering.",
"type": "boolean",
"deprecated": true
},
"terminal_progress": {
"default": true,
"description": "Enable terminal progress indicators (OSC 9;4) for compatible terminals.",
"type": "boolean"
},
"trace": {
"description": "Sets log level to trace",
"type": "boolean"
},
"truncate": {
"default": true,
"description": "Truncate long terminal output to fit the available width.",
"type": "boolean"
},
"trusted_config_paths": {
"default": [],
"description": "This is a list of config paths that mise will automatically mark as trusted. Any config files under these paths will be trusted without prompting. Set to `[\"/\"]` to trust all config files, effectively disabling the trust mechanism. Paths are separated by the OS path separator when using the environment variable, `mise settings set`, or `mise settings add` (`:` on Unix, `;` on Windows).",
"type": "array",
"items": {
"type": "string"
}
},
"unix_default_file_shell_args": {
"default": "sh",
"description": "Default shell arguments for Unix to be used for file commands. For example, `sh` for sh.",
"type": "string"
},
"unix_default_inline_shell_args": {
"default": "sh -o errexit -c",
"description": "Default shell arguments for Unix to be used for inline commands. For example, `sh -c` for sh.",
"type": "string"
},
"upgrade": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"auto_prune": {
"default": true,
"description": "Schedule the version `mise upgrade` replaced for pruning once the new one has installed.",
"type": "boolean"
},
"prune_after": {
"default": "24h",
"description": "Grace period before versions replaced by `mise upgrade` are automatically pruned.",
"type": "string"
}
}
},
"url_replacements": {
"description": "Map of URL patterns to replacement URLs applied to all requests.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"use_file_shell_for_executable_tasks": {
"default": false,
"description": "Determines whether to use a specified shell for executing tasks in the tasks directory. When set to true, the shell defined in the file will be used, or the default shell specified by `windows_default_file_shell_args` or `unix_default_file_shell_args` will be applied. If set to false, tasks will be executed directly as programs.",
"type": "boolean"
},
"use_versions_host": {
"default": true,
"description": "Set to false to disable using the mise-versions API for version lists, public GitHub release metadata, and GitHub artifact attestations.",
"type": "boolean"
},
"use_versions_host_track": {
"default": true,
"description": "Send anonymous download statistics when installing tools.",
"type": "boolean"
},
"verbose": {
"description": "Shows more verbose output such as installation logs when installing tools.",
"type": "boolean"
},
"windows_default_file_shell_args": {
"default": "cmd /c",
"description": "Default shell arguments for Windows to be used for file commands. For example, `cmd /c` for cmd.exe.",
"type": "string"
},
"windows_default_inline_shell_args": {
"default": "cmd /c",
"description": "Default shell arguments for Windows to be used for inline commands. For example, `cmd /c` for cmd.exe.",
"type": "string"
},
"windows_executable_extensions": {
"default": ["exe", "bat", "cmd", "com", "ps1", "vbs"],
"description": "List of executable extensions for Windows. For example, `exe` for .exe files, `bat` for .bat files, and so on.",
"type": "array",
"items": {
"type": "string"
}
},
"windows_powershell_no_profile": {
"default": true,
"description": "Pass `-NoProfile` to PowerShell (`pwsh`/`powershell`) shells that mise spawns for tasks and inline commands, so startup profiles are skipped.",
"type": "boolean"
},
"windows_shim_mode": {
"default": "exe",
"description": "Shim file mode for Windows. Options: `exe`, `file`, `hardlink`, `symlink`.",
"type": "string"
},
"yes": {
"description": "This will automatically answer yes or no to prompts. This is useful for scripting.",
"type": "boolean"
},
"zig": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"use_community_mirrors": {
"default": true,
"description": "Download Zig from community-maintained mirrors",
"type": "boolean"
}
}
}
}
},
"task_run_entry": {
"oneOf": [
{
"description": "script to run",
"type": "string"
},
{
"type": "object",
"unevaluatedProperties": false,
"properties": {
"task": {
"description": "single task name to run",
"type": "string"
},
"args": {
"description": "arguments to pass to the task",
"type": "array",
"items": {
"type": "string"
}
},
"env": {
"description": "environment variables to set for the task",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"required": ["task"]
},
{
"type": "object",
"unevaluatedProperties": false,
"properties": {
"tasks": {
"description": "parallel task group to run",
"items": {
"description": "task name and args",
"type": "string"
},
"type": "array"
}
},
"required": ["tasks"]
}
]
},
"task": {
"oneOf": [
{
"description": "script to run",
"type": "string"
},
{
"description": "script to run",
"items": {
"description": "script to run",
"type": "string"
},
"type": "array"
},
{
"allOf": [
{
"$ref": "#/$defs/task_props"
},
{
"properties": {
"extends": {
"description": "name of the task template to extend",
"type": "string"
}
}
}
],
"unevaluatedProperties": false,
"type": "object"
}
]
},
"vars": {
"description": "variables to set",
"type": "object",
"properties": {
"_": {
"description": "vars modules",
"additionalProperties": true,
"properties": {
"file": {
"oneOf": [
{
"description": "environment file to load (dotenv, json, yaml, or toml)",
"type": "string"
},
{
"description": "environment files to load (dotenv, json, yaml, or toml)",
"items": {
"description": "environment file to load (dotenv, json, yaml, or toml)",
"type": "string"
},
"type": "array"
}
]
},
"source": {
"oneOf": [
{
"description": "bash script to load",
"type": "string"
},
{
"description": "bash scripts to load",
"items": {
"description": "bash script to load",
"type": "string"
},
"type": "array"
}
]
}
},
"type": "object"
}
},
"additionalProperties": {
"oneOf": [
{
"description": "value of variable",
"type": "string"
},
{
"description": "value of variable",
"type": "integer"
},
{
"description": "value of variable",
"const": true
},
{
"type": "object",
"properties": {
"value": {
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"const": true
}
]
},
"redact": {
"$ref": "#/$defs/env_redact"
}
},
"required": ["value"],
"unevaluatedProperties": false
},
{
"type": "object",
"properties": {
"default": {
"$ref": "#/$defs/env_default"
},
"redact": {
"$ref": "#/$defs/env_redact"
}
},
"required": ["default"],
"unevaluatedProperties": false
},
{
"type": "object",
"properties": {
"redact": {
"$ref": "#/$defs/env_redact"
},
"required": {
"oneOf": [
{
"const": true
},
{
"type": "string"
}
]
}
},
"required": ["required"],
"unevaluatedProperties": false
},
{
"type": "object",
"properties": {
"age": {
"$ref": "#/$defs/env_age"
},
"redact": {
"$ref": "#/$defs/env_redact"
}
},
"required": ["age"],
"unevaluatedProperties": false,
"description": "[experimental] age-encrypted variable"
},
{
"type": "object",
"properties": {
"age": {
"type": "object",
"properties": {
"value": {
"$ref": "#/$defs/env_age_value"
},
"format": {
"$ref": "#/$defs/env_age_format"
},
"redact": {
"$ref": "#/$defs/env_redact"
}
},
"required": ["value"],
"unevaluatedProperties": false,
"description": "[experimental] age-encrypted value (complex format)"
}
},
"required": ["age"],
"unevaluatedProperties": false
}
]
}
},
"task_config": {
"description": "configuration for task execution/management",
"type": "object",
"unevaluatedProperties": false,
"properties": {
"cascade": {
"default": false,
"description": "cascade task configuration to descendant config roots",
"type": "boolean"
},
"dir": {
"description": "default directory to run tasks in defined in this file",
"type": "string"
},
"shell": {
"description": "default shell to run tasks with in this config scope",
"type": "string"
},
"cache": {
"description": "default experimental local artifact cache configuration for eligible tasks with sources and explicit outputs",
"type": "object",
"unevaluatedProperties": false,
"properties": {
"enabled": {
"default": false,
"description": "store and restore eligible task outputs from the local mise cache",
"type": "boolean"
},
"audit": {
"default": false,
"description": "report project files read or written outside declared cache sources and outputs",
"type": "boolean"
},
"env": {
"description": "ambient environment variable names whose values affect eligible task cache keys",
"items": {
"type": "string"
},
"type": "array"
},
"command_inputs": {
"description": "commands whose stdout and stderr affect eligible task cache keys",
"items": {
"type": "string"
},
"type": "array"
}
}
},
"rust_cache": {
"deprecated": true,
"description": "deprecated no-op; use mbx for Rust action caching instead: https://mr-boxington.jdx.dev/getting-started",
"oneOf": [
{
"type": "boolean"
},
{
"type": "object",
"unevaluatedProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"default": true
}
}
}
]
},
"global_env": {
"description": "experimental ambient environment variable names added to every enabled task cache key in this config scope",
"items": {
"type": "string"
},
"type": "array"
},
"global_pass_through_env": {
"description": "experimental ambient environment variable names preserved under environment denial without affecting task cache keys",
"items": {
"type": "string"
},
"type": "array"
},
"global_inputs": {
"description": "experimental config-root-relative source patterns added to every task in this config scope; entries may reference input groups with @group:<name>",
"items": {
"type": "string"
},
"type": "array"
},
"input_groups": {
"description": "experimental reusable config-root-relative source groups referenced with @group:<name>",
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"type": "object"
},
"includes": {
"description": "files/directories to include searching for tasks. Can be local paths or git repository URLs using git:: prefix (e.g., git::https://github.com/org/repo.git//path?ref=branch)",
"items": {
"description": "file/directory root to include in task execution. Supports local paths and git URLs (git::https://github.com/org/repo.git//path?ref=branch)",
"type": "string"
},
"type": "array"
},
"excludes": {
"description": "config-root-relative paths or glob patterns to exclude from file-task discovery",
"items": {
"type": "string"
},
"type": "array"
}
}
},
"tool_config": {
"description": "policy for tools declared by configs sharing the containing config root",
"type": "object",
"unevaluatedProperties": false,
"properties": {
"locked": {
"default": false,
"description": "require tools declared by this config root to resolve and install from their lockfiles",
"type": "boolean"
}
}
},
"monorepo_root": {
"description": "Marks this config as a monorepo root, enabling target path syntax for tasks. When enabled, tasks can be referenced with paths like //projects/frontend:build",
"type": "boolean"
},
"monorepo": {
"description": "Configuration for monorepo task discovery",
"type": "object",
"unevaluatedProperties": false,
"properties": {
"config_roots": {
"description": "Explicit list of config root paths for monorepo task discovery. Supports single-level glob patterns (*). When set, skips filesystem walking for better performance.",
"type": "array",
"items": {
"type": "string"
}
},
"lockfile": {
"description": "Use a single lockfile at the monorepo root for descendant config roots. true opts in now, false keeps lockfiles next to subproject configs, and unset keeps the current behavior until the scheduled default flip.",
"type": "boolean"
},
"task_defaults": {
"description": "Experimental task defaults applied by task name across inferred and explicit workspace projects",
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/task_template"
}
},
"projects": {
"description": "Experimental explicit additions, removals, and overrides applied to provider-inferred workspace projects",
"type": "object",
"additionalProperties": {
"type": "object",
"unevaluatedProperties": false,
"properties": {
"remove": {
"description": "Remove this project and every dependency edge connected to it",
"type": "boolean"
},
"root": {
"description": "Add the project at this workspace-relative root or replace its inferred root",
"type": "string"
},
"metadata": {
"description": "Replace provider-inferred project metadata",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"depends": {
"description": "Replace the complete provider-inferred dependency set",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"depends_add": {
"description": "Add dependency edges after an optional depends replacement",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"depends_remove": {
"description": "Remove dependency edges after an optional depends replacement",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
}
}
}
}
}
},
"tool": {
"oneOf": [
{
"description": "version of the tool to install",
"type": "string"
},
{
"allOf": [
{
"$ref": "#/$defs/tool_options"
},
{
"properties": {
"install_env": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/env_value"
},
"description": "environment variables during tool installation"
},
"depends": {
"oneOf": [
{
"description": "tools that must be installed before this tool",
"type": "string"
},
{
"description": "tools that must be installed before this tool",
"type": "array",
"items": {
"type": "string"
}
}
]
},
"lazy": {
"description": "defer installation until one of the tool's bootstrap shims is invoked",
"type": "boolean",
"default": false
},
"lazy_bins": {
"description": "bootstrap shim names for lazy tools without registry bin metadata",
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"postinstall": {
"description": "command to run after tool installation",
"type": "string"
}
}
}
],
"type": "object",
"unevaluatedProperties": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array"
},
{
"type": "object",
"additionalProperties": true
}
]
}
}
]
},
"tool_options": {
"properties": {
"version": {
"description": "version of the tool to install",
"type": "string"
},
"path": {
"description": "path to a custom compiled version",
"type": "string"
},
"prefix": {
"description": "version prefix to resolve",
"type": "string"
},
"ref": {
"description": "version control reference to compile",
"type": "string"
},
"os": {
"$ref": "#/$defs/os_filter"
},
"minimum_release_age": {
"description": "minimum time since a version's release before mise selects it, as a duration such as \"7d\" or an absolute date",
"type": "string"
},
"install_before": {
"description": "deprecated alias for minimum_release_age",
"deprecated": true,
"type": "string"
},
"version_order": {
"description": "ordering applied to remote versions: \"source\" keeps the backend's order, \"semver\" sorts semantic versions",
"enum": ["source", "semver"]
}
},
"oneOf": [
{
"required": ["version"]
},
{
"required": ["path"]
},
{
"required": ["prefix"]
},
{
"required": ["ref"]
}
],
"type": "object"
},
"hook_run_string": {
"description": "inline hook command to run",
"type": "string"
},
"hook_run_table": {
"unevaluatedProperties": false,
"properties": {
"run": {
"description": "inline hook command to run",
"type": "string"
},
"run_windows": {
"description": "inline hook command to run on Windows",
"type": "string"
},
"shell": {
"description": "inline shell command to use for run hooks, such as \"bash -c\"",
"type": "string"
}
},
"anyOf": [
{
"required": ["run"]
},
{
"required": ["run_windows"]
}
],
"type": "object"
},
"hook_script_value": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"hook_scripts_value": {
"type": "array",
"items": {
"type": "string"
}
},
"hook_current_shell_script_table": {
"unevaluatedProperties": false,
"properties": {
"script": {
"description": "script or scripts to evaluate in the active shell for enter/leave/cd hooks",
"$ref": "#/$defs/hook_script_value"
},
"shell": {
"description": "active shell name for current-shell hooks, such as \"bash\"",
"type": "string"
}
},
"required": ["script", "shell"],
"type": "object"
},
"hook_current_shell_scripts_table": {
"unevaluatedProperties": false,
"properties": {
"scripts": {
"description": "scripts to evaluate in the active shell for enter/leave/cd hooks",
"$ref": "#/$defs/hook_scripts_value"
},
"shell": {
"description": "active shell name for current-shell hooks, such as \"bash\"",
"type": "string"
}
},
"required": ["scripts", "shell"],
"type": "object"
},
"hook_spawned_script_table": {
"deprecated": true,
"unevaluatedProperties": false,
"properties": {
"script": {
"deprecated": true,
"description": "deprecated alias for run when an enter/leave/cd hook has no shell",
"$ref": "#/$defs/hook_script_value"
}
},
"required": ["script"],
"type": "object"
},
"hook_spawned_scripts_table": {
"deprecated": true,
"unevaluatedProperties": false,
"properties": {
"scripts": {
"deprecated": true,
"description": "deprecated alias for run when an enter/leave/cd hook has no shell",
"$ref": "#/$defs/hook_scripts_value"
}
},
"required": ["scripts"],
"type": "object"
},
"hook_install_script_table": {
"deprecated": true,
"unevaluatedProperties": false,
"properties": {
"script": {
"deprecated": true,
"description": "deprecated alias for run in preinstall/postinstall hooks; executes in a subprocess",
"$ref": "#/$defs/hook_script_value"
},
"shell": {
"deprecated": true,
"description": "ignored for preinstall/postinstall hooks that use script; use a run hook to select an inline shell",
"type": "string"
}
},
"required": ["script"],
"type": "object"
},
"hook_install_scripts_table": {
"deprecated": true,
"unevaluatedProperties": false,
"properties": {
"scripts": {
"deprecated": true,
"description": "deprecated alias for run in preinstall/postinstall hooks; joins the scripts and executes them in a subprocess",
"$ref": "#/$defs/hook_scripts_value"
},
"shell": {
"deprecated": true,
"description": "ignored for preinstall/postinstall hooks that use scripts; use a run hook to select an inline shell",
"type": "string"
}
},
"required": ["scripts"],
"type": "object"
},
"hook_task_ref": {
"unevaluatedProperties": false,
"properties": {
"task": {
"description": "mise task to run",
"type": "string"
}
},
"required": ["task"],
"type": "object"
},
"hook_definition_item": {
"oneOf": [
{
"$ref": "#/$defs/hook_run_string"
},
{
"$ref": "#/$defs/hook_run_table"
},
{
"$ref": "#/$defs/hook_current_shell_script_table"
},
{
"$ref": "#/$defs/hook_current_shell_scripts_table"
},
{
"$ref": "#/$defs/hook_spawned_script_table"
},
{
"$ref": "#/$defs/hook_spawned_scripts_table"
},
{
"$ref": "#/$defs/hook_task_ref"
}
]
},
"hook_definition": {
"oneOf": [
{
"$ref": "#/$defs/hook_definition_item"
},
{
"description": "scripts/tasks to run",
"items": {
"$ref": "#/$defs/hook_definition_item"
},
"type": "array"
}
]
},
"hook_install_definition_item": {
"oneOf": [
{
"$ref": "#/$defs/hook_run_string"
},
{
"$ref": "#/$defs/hook_run_table"
},
{
"$ref": "#/$defs/hook_install_script_table"
},
{
"$ref": "#/$defs/hook_install_scripts_table"
},
{
"$ref": "#/$defs/hook_task_ref"
}
]
},
"hook_install_definition": {
"oneOf": [
{
"$ref": "#/$defs/hook_install_definition_item"
},
{
"description": "install hooks to run",
"items": {
"$ref": "#/$defs/hook_install_definition_item"
},
"type": "array"
}
]
},
"hooks": {
"description": "hooks to run",
"type": "object",
"properties": {
"enter": {
"$ref": "#/$defs/hook_definition"
},
"leave": {
"$ref": "#/$defs/hook_definition"
},
"cd": {
"$ref": "#/$defs/hook_definition"
},
"preinstall": {
"$ref": "#/$defs/hook_install_definition"
},
"postinstall": {
"$ref": "#/$defs/hook_install_definition"
}
},
"additionalProperties": false
},
"watch_files": {
"description": "files to watch for changes",
"type": "array",
"items": {
"type": "object",
"description": "file to watch for changes",
"oneOf": [
{
"unevaluatedProperties": false,
"properties": {
"run": {
"type": "string",
"description": "script to run when file changes"
},
"shell": {
"type": "string",
"description": "inline shell command used to run script when file changes"
},
"patterns": {
"type": "array",
"description": "patterns to watch for",
"items": {
"type": "string"
}
}
},
"required": ["run", "patterns"]
},
{
"unevaluatedProperties": false,
"properties": {
"task": {
"type": "string",
"description": "mise task to run when file changes"
},
"patterns": {
"type": "array",
"description": "patterns to watch for",
"items": {
"type": "string"
}
}
},
"required": ["task", "patterns"]
}
]
}
},
"deps_provider": {
"type": "object",
"properties": {
"auto": {
"type": "boolean",
"default": false,
"description": "Auto-run before `mise x` and `mise run`"
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Files/patterns to check for changes"
},
"outputs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Files/directories that should be newer than sources"
},
"run": {
"type": "string",
"description": "Command to run when stale"
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Environment variables to set"
},
"dir": {
"type": "string",
"description": "Working directory for the command"
},
"description": {
"type": "string",
"description": "Description shown in output"
},
"depends": {
"type": "array",
"items": {
"type": "string"
},
"description": "Other deps providers that must complete before this one runs"
},
"timeout": {
"type": "string",
"description": "Timeout for the run command (e.g., \"30s\", \"5m\", \"1h\")"
}
},
"unevaluatedProperties": false,
"description": "Prepare provider configuration"
},
"task_watch": {
"description": "options used by `mise watch` for this task",
"type": "object",
"unevaluatedProperties": false,
"properties": {
"no_vcs_ignore": {
"default": false,
"description": "do not load VCS ignore files such as `.gitignore` when watching this task",
"type": "boolean"
}
}
},
"daemon_init": {
"description": "idempotent setup commands run before the daemon's long-running process",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"task_props": {
"description": "common task properties",
"properties": {
"alias": {
"oneOf": [
{
"description": "alias for this task",
"type": "string"
},
{
"description": "alias for this task",
"items": {
"description": "alias for this task",
"type": "string"
},
"type": "array"
}
]
},
"confirm": {
"oneOf": [
{
"description": "confirmation message before running this task",
"type": "string"
},
{
"description": "confirmation message before running this task with default value",
"properties": {
"message": {
"description": "confirmation message before running this task",
"type": "string"
},
"default": {
"description": "default value for confirmation (yes/no/true/false)",
"enum": ["yes", "no", "y", "n", "true", "false"],
"type": "string"
}
},
"required": ["message", "default"],
"unevaluatedProperties": false,
"type": "object"
}
]
},
"depends": {
"oneOf": [
{
"description": "task with args to run before this task",
"type": "string"
},
{
"description": "task with args to run before this task",
"type": "array",
"items": {
"$ref": "#/$defs/task_dependency_item"
}
}
]
},
"daemons": {
"description": "[experimental] project daemons that must be running and ready before this task runs",
"oneOf": [
{
"description": "true requires every daemon declared in [daemons]",
"type": "boolean"
},
{
"description": "name of a daemon declared in [daemons]",
"type": "string"
},
{
"description": "names of daemons declared in [daemons]",
"type": "array",
"items": {
"type": "string"
}
}
]
},
"depends_post": {
"oneOf": [
{
"description": "task with args to run after this task",
"type": "string"
},
{
"description": "task with args to run after this task",
"type": "array",
"items": {
"$ref": "#/$defs/task_dependency_item"
}
}
]
},
"wait_for": {
"oneOf": [
{
"description": "task with args to wait for completion first",
"type": "string"
},
{
"description": "task with args to wait for completion first",
"items": {
"$ref": "#/$defs/task_dependency_item"
},
"type": "array"
}
]
},
"description": {
"description": "description of task",
"type": "string"
},
"dir": {
"default": "{{ config_root }}",
"description": "directory to run script in, default is the project's base directory",
"type": "string"
},
"env": {
"$ref": "#/$defs/env"
},
"vars": {
"$ref": "#/$defs/vars"
},
"tools": {
"description": "tools to install/activate before running this task",
"additionalProperties": {
"$ref": "#/$defs/tool"
},
"type": "object"
},
"hide": {
"default": false,
"description": "do not display this task",
"type": "boolean"
},
"outputs": {
"oneOf": [
{
"description": "files created by this task (entries starting with `!` are excluded; use `\\!` to escape a literal `!` prefix)",
"items": {
"description": "glob pattern or path to files created by this task (entries starting with `!` are excluded)",
"type": "string"
},
"type": "array"
},
{
"description": "glob pattern or path to files created by this task (entries starting with `!` are excluded)",
"type": "string"
},
{
"unevaluatedProperties": false,
"properties": {
"auto": {
"description": "automatically touch an internal tracked file instead of specifying outputs",
"enum": [true],
"type": "boolean"
}
},
"required": ["auto"],
"type": "object"
}
]
},
"cache": {
"description": "experimental local artifact cache for declared task outputs",
"type": "object",
"unevaluatedProperties": false,
"properties": {
"enabled": {
"default": false,
"description": "store and restore task outputs from the local mise cache",
"type": "boolean"
},
"audit": {
"default": false,
"description": "report project files read or written outside declared cache sources and outputs",
"type": "boolean"
},
"env": {
"description": "ambient environment variable names whose values affect the cache key",
"items": {
"type": "string"
},
"type": "array"
},
"command_inputs": {
"description": "commands whose stdout and stderr affect the cache key",
"items": {
"type": "string"
},
"type": "array"
}
}
},
"rust_cache": {
"deprecated": true,
"description": "deprecated no-op; use mbx for Rust action caching instead: https://mr-boxington.jdx.dev/getting-started",
"oneOf": [
{
"type": "boolean"
},
{
"type": "object",
"unevaluatedProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"default": true
}
}
}
]
},
"output": {
"description": "output style for this task (prefix, interleave, keep-order, replacing, timed, quiet, silent). Independent of the quiet/silent verbosity fields.",
"enum": [
"prefix",
"interleave",
"keep-order",
"replacing",
"timed",
"quiet",
"silent"
],
"type": "string"
},
"quiet": {
"default": false,
"description": "do not display mise information for this task",
"type": "boolean"
},
"silent": {
"default": false,
"description": "suppress all output for this task",
"oneOf": [
{
"type": "boolean"
},
{
"enum": ["stdout", "stderr"],
"type": "string"
}
]
},
"interactive": {
"default": false,
"description": "mark task as interactive, acquiring exclusive terminal access while allowing other non-interactive tasks to run in parallel",
"type": "boolean"
},
"raw": {
"default": false,
"description": "directly connect task to stdin/stdout/stderr",
"type": "boolean"
},
"raw_args": {
"default": false,
"description": "skip mise's argument parsing for this task — all arguments (including --help/-h) are forwarded verbatim to the underlying command. Use for tasks that proxy a tool with its own argument parser.",
"type": "boolean"
},
"run": {
"oneOf": [
{
"$ref": "#/$defs/task_run_entry"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/task_run_entry"
}
}
]
},
"run_windows": {
"oneOf": [
{
"$ref": "#/$defs/task_run_entry"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/task_run_entry"
}
}
]
},
"file": {
"description": "Execute an external script",
"type": "string"
},
"sources": {
"oneOf": [
{
"description": "files that this task depends on (entries starting with `!` are excluded; use `\\!` to escape a literal `!` prefix)",
"items": {
"description": "glob pattern or path to files that this task depends on (entries starting with `!` are excluded)",
"type": "string"
},
"type": "array"
},
{
"description": "glob pattern or path to files that this task depends on (entries starting with `!` are excluded)",
"type": "string"
}
]
},
"watch": {
"$ref": "#/$defs/task_watch"
},
"shell": {
"description": "specify a shell command to run the script with",
"type": "string"
},
"usage": {
"description": "Specify usage (https://usage.jdx.dev/) specs for the task",
"type": "string"
},
"timeout": {
"description": "timeout for this task",
"type": "string"
},
"deny_all": {
"default": false,
"description": "block reads, writes, network, and env vars",
"type": "boolean"
},
"deny_read": {
"default": false,
"description": "block filesystem reads",
"type": "boolean"
},
"deny_write": {
"default": false,
"description": "block all filesystem writes",
"type": "boolean"
},
"deny_net": {
"default": false,
"description": "block all network access",
"type": "boolean"
},
"deny_env": {
"default": false,
"description": "block env var inheritance",
"type": "boolean"
},
"allow_read": {
"description": "allow reads from specific paths",
"items": {
"type": "string"
},
"type": "array"
},
"allow_write": {
"description": "allow writes to specific paths",
"items": {
"type": "string"
},
"type": "array"
},
"allow_net": {
"description": "allow network to specific hosts",
"items": {
"type": "string"
},
"type": "array"
},
"allow_env": {
"description": "allow specific env vars through",
"items": {
"type": "string"
},
"type": "array"
},
"pass_through_env": {
"description": "experimental ambient env vars preserved under environment denial without affecting the task cache key",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"task_template": {
"description": "task template that can be extended by tasks",
"allOf": [
{
"$ref": "#/$defs/task_props"
},
{
"properties": {
"hide": false,
"interactive": false,
"quiet": false,
"raw": false,
"raw_args": false
}
}
],
"unevaluatedProperties": false,
"type": "object"
},
"launchd_calendar_interval": {
"type": "object",
"description": "calendar schedule fields for launchd StartCalendarInterval",
"properties": {
"minute": {
"type": "integer",
"minimum": 0,
"maximum": 59
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 31
},
"weekday": {
"type": "integer",
"minimum": 0,
"maximum": 7
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12
}
},
"minProperties": 1,
"additionalProperties": false
},
"bootstrap_file_phase": {
"type": "string",
"enum": ["pre-packages", "post-packages"],
"default": "post-packages",
"description": "When to apply the managed path during bootstrap; pre-packages runs before the pre-packages hook"
},
"bootstrap_hook": {
"description": "command or commands to run for a bootstrap phase",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "object",
"properties": {
"run": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"required": ["run"],
"additionalProperties": true
}
]
},
"bootstrap_shell_activation": {
"oneOf": [
{
"type": "boolean",
"description": "enable the target with its default mode, or disable it"
},
{
"type": "string",
"enum": ["activate", "shims"],
"description": "enable the target with the selected activation mode"
},
{
"type": "object",
"description": "shell activation settings for the target",
"properties": {
"enabled": {
"type": "boolean",
"description": "whether to manage the activation block"
},
"mode": {
"type": "string",
"enum": ["activate", "shims"],
"description": "activation mode; defaults according to the target"
}
},
"required": ["enabled"],
"additionalProperties": false
}
]
},
"bootstrap_remote_install_mise": {
"oneOf": [
{
"type": "boolean",
"description": "install the provisioned mise to ~/.local/bin/mise, or do not install it"
},
{
"type": "string",
"description": "absolute or ~/-relative remote path to install the provisioned mise to"
}
]
},
"doctor": {
"description": "Project diagnostic checks, run explicitly with mise doctor project.",
"type": "object",
"additionalProperties": true,
"properties": {
"checks": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["run"],
"properties": {
"run": {
"type": "string",
"minLength": 1,
"description": "Diagnostic command. Exit zero to pass; other exit codes fail."
},
"description": {
"type": "string",
"description": "Human-readable requirement checked by the command."
},
"hint": {
"type": "string",
"description": "Remediation guidance displayed on failure; never executed."
},
"timeout": {
"type": "string",
"description": "Positive command timeout, such as 5s. Defaults to 10s."
},
"dir": {
"type": "string",
"description": "Working directory. Relative paths resolve from the declaring config's root (the invocation directory for global and system config); a leading ~/ and absolute paths are used as given."
},
"shell": {
"description": "Shell command, including the command flag, as in tasks.",
"type": "string",
"examples": ["bash -c", "pwsh -Command"]
},
"os": {
"$ref": "#/$defs/os_filter",
"description": "OS or OS/arch selectors; omit to run everywhere."
}
}
}
}
}
}
},
"unevaluatedProperties": false,
"description": "config file for mise version manager (mise.toml)",
"properties": {
"alias": {
"deprecated": true,
"description": "custom shorthands",
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/tool_alias_entry"
}
},
"tool_alias": {
"description": "Tool version aliases",
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/tool_alias_entry"
}
},
"shell_alias": {
"description": "shell aliases",
"type": "object",
"additionalProperties": {
"description": "command to run",
"type": "string"
}
},
"wrappers": {
"description": "commands that intercept a binary name before delegating to the active toolset",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"description": "command to run",
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*"
},
{
"type": "object",
"properties": {
"command": {
"description": "command to run",
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*"
},
"args": {
"description": "arguments inserted before the intercepted command's arguments",
"type": "array",
"items": {
"type": "string"
}
},
"env": {
"description": "environment variables set for the wrapper",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"required": ["command"],
"additionalProperties": false
}
]
}
},
"env": {
"description": "environment variables to set",
"oneOf": [
{
"$ref": "#/$defs/env"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/env"
}
}
]
},
"env_file": {
"description": "dotenv file(s) to load. Deprecated; use env._.file instead. This will be removed in mise 2027.4.0.",
"deprecated": true,
"oneOf": [
{
"description": "dotenv file to load",
"type": "string"
},
{
"description": "dotenv files to load",
"type": "array",
"items": {
"type": "string"
}
}
]
},
"dotenv": {
"description": "dotenv file(s) to load. Deprecated; use env._.file instead. This will be removed in mise 2027.4.0.",
"deprecated": true,
"oneOf": [
{
"description": "dotenv file to load",
"type": "string"
},
{
"description": "dotenv files to load",
"type": "array",
"items": {
"type": "string"
}
}
]
},
"env_path": {
"description": "PATH entries to add. Deprecated; use env._.path instead. This will be removed in mise 2027.4.0.",
"deprecated": true,
"oneOf": [
{
"description": "PATH entry to add",
"type": "string"
},
{
"description": "PATH entries to add",
"type": "array",
"items": {
"type": "string"
}
}
]
},
"monorepo_root": {
"description": "marks this config as a monorepo root for task path syntax",
"$ref": "#/$defs/monorepo_root"
},
"monorepo": {
"description": "configuration for monorepo task discovery",
"$ref": "#/$defs/monorepo"
},
"min_version": {
"description": "minimum version of mise required to use this config",
"oneOf": [
{
"pattern": "^\\d+\\.\\d+\\.\\d+$",
"type": "string"
},
{
"type": "object",
"unevaluatedProperties": false,
"properties": {
"hard": {
"description": "error if current mise is lower than this version",
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"soft": {
"description": "warn if current mise is lower than this version",
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
}
}
}
]
},
"redactions": {
"description": "env or vars keys to redact from logs",
"type": "array",
"items": {
"type": "string"
}
},
"plugins": {
"additionalProperties": {
"description": "url to plugin repository",
"type": "string"
},
"description": "plugins to use",
"type": "object"
},
"deps": {
"type": "object",
"properties": {
"disable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Disable specific deps providers"
},
"npm": {
"$ref": "#/$defs/deps_provider"
},
"yarn": {
"$ref": "#/$defs/deps_provider"
},
"pnpm": {
"$ref": "#/$defs/deps_provider"
},
"bun": {
"$ref": "#/$defs/deps_provider"
},
"aube": {
"$ref": "#/$defs/deps_provider"
},
"deno": {
"$ref": "#/$defs/deps_provider"
},
"go": {
"$ref": "#/$defs/deps_provider"
},
"pip": {
"$ref": "#/$defs/deps_provider"
},
"poetry": {
"$ref": "#/$defs/deps_provider"
},
"uv": {
"$ref": "#/$defs/deps_provider"
},
"bundler": {
"$ref": "#/$defs/deps_provider"
},
"composer": {
"$ref": "#/$defs/deps_provider"
},
"dart": {
"$ref": "#/$defs/deps_provider"
},
"flutter": {
"$ref": "#/$defs/deps_provider"
},
"git-submodule": {
"$ref": "#/$defs/deps_provider"
}
},
"additionalProperties": {
"$ref": "#/$defs/deps_provider"
},
"description": "configure deps providers"
},
"oci": {
"type": "object",
"unevaluatedProperties": false,
"description": "configuration for `mise oci build`",
"properties": {
"from": {
"type": "string",
"description": "Base image reference (overrides the oci.default_from setting)"
},
"tag": {
"type": "string",
"description": "Default tag applied to the built image"
},
"workdir": {
"type": "string",
"description": "Working directory baked into the image config"
},
"entrypoint": {
"type": "array",
"items": {
"type": "string"
},
"description": "Entrypoint baked into the image config"
},
"cmd": {
"type": "array",
"items": {
"type": "string"
},
"description": "Cmd baked into the image config"
},
"user": {
"type": "string",
"description": "User baked into the image config"
},
"user_id": {
"type": "integer",
"minimum": 0,
"maximum": 4294967295,
"description": "Numeric UID assigned to tar layer entries"
},
"group_id": {
"type": "integer",
"minimum": 0,
"maximum": 4294967295,
"description": "Numeric GID assigned to tar layer entries. Defaults to user_id when unset"
},
"mount_point": {
"type": "string",
"description": "Override where mise installs go in the image (default /mise)"
},
"copy": {
"type": "array",
"description": "Host files or directories copied into the image as independent layers",
"items": {
"type": "object",
"properties": {
"host": {
"type": "string",
"minLength": 1,
"description": "host path to copy, relative to the config file when not absolute"
},
"image": {
"type": "string",
"pattern": "^/.*[^/]",
"not": {
"pattern": "(^|/)\\.{1,2}(/|$)"
},
"description": "absolute non-root image path without `.` or `..` components"
}
},
"required": ["host", "image"],
"additionalProperties": false
}
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Extra env vars baked into the image config"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Labels baked into the image config"
}
}
},
"settings": {
"$ref": "#/$defs/settings",
"description": "mise settings",
"type": "object"
},
"dotfiles": {
"type": "object",
"description": "dotfiles applied with `mise dotfiles apply` or `mise bootstrap`, keyed by target path or a logical name when every variant overrides the target; an omitted source for the latter resolves the relative key under dotfiles.root",
"additionalProperties": {
"oneOf": [
{
"type": "string",
"description": "source path for a whole-file dotfile entry"
},
{
"type": "object",
"description": "whole-file dotfile entry or file edit entry",
"properties": {
"encrypt": {
"type": "boolean",
"default": false,
"description": "encrypt tracked file contents before storing them in Git; the live file remains plaintext"
},
"source": {
"type": "string",
"description": "source file or directory"
},
"content": {
"type": "string",
"description": "literal inline file content; alternative to source"
},
"mode": {
"type": "string",
"description": "how to apply a whole-file source to the target; omitted uses dotfiles.default_mode. \"absent\" removes a file or symlink at the target and takes no source",
"anyOf": [
{
"enum": [
"symlink",
"symlink-each",
"copy",
"template",
"absent"
]
},
{
"type": "string"
}
]
},
"exclude": {
"type": "array",
"description": "glob patterns to skip when the mode walks a directory (symlink-each, copy with a directory source, or a tracked directory, where they are relative to the tracked path); a pattern without \"/\" matches any path component, one with \"/\" is anchored to the root",
"items": {
"type": "string"
}
},
"include": {
"type": "array",
"description": "history only (mode = \"track\"): the only paths of the tracked directory that are captured, relative to it and matched like \"exclude\"; without it the whole tree is captured with the builtin credential filtering, and an explicit \"exclude\" still wins. A selected file is captured even when it looks like a credential store, in plaintext unless the entry sets encrypt",
"items": {
"type": "string"
}
},
"manifest": {
"type": "string",
"description": "source manifest used to select managed files from a directory",
"enum": ["git"]
},
"remove_empty": {
"type": "boolean",
"default": false,
"description": "template mode only: remove the target when the template renders empty or whitespace-only; a target that changed since mise last wrote it needs --force"
},
"dot_prefix": {
"type": "boolean",
"default": false,
"description": "symlink-each and directory copy only: deploy each source path component named \"dot-<name>\" as \".<name>\", like GNU Stow's --dotfiles; exclude still matches source names"
},
"relative": {
"type": "boolean",
"description": "symlink and symlink-each only: link by a path relative to the link's directory instead of an absolute one; overrides the dotfiles.relative_symlinks setting (ignored on Windows)"
},
"permissions": {
"type": "string",
"description": "octal permissions for the target, such as \"0600\"; overrides what copy, template, and inline content entries set, and on its own manages only the permissions of an existing target (Unix only)",
"pattern": "^(0o)?[0-7]{1,4}$"
},
"block": {
"type": "string",
"description": "block content, maintained between marker comments"
},
"template": {
"type": "string",
"description": "template engine to render block content with; currently only \"tera\"",
"anyOf": [
{
"enum": ["tera"]
},
{
"type": "string"
}
]
},
"line": {
"type": "string",
"description": "exact line to ensure exists"
},
"position": {
"type": "string",
"default": "append",
"description": "where to insert a missing line",
"anyOf": [
{
"enum": ["append", "prepend"]
},
{
"type": "string"
}
]
},
"comment": {
"type": "string",
"description": "comment prefix for edit marker lines; inferred from the file extension when omitted"
},
"variants": {
"type": "array",
"description": "OS/profile variants: history streams for track mode, or optional destinations for deployment modes",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"os": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"profile": {
"type": "string",
"description": "mise environment selected with -E or MISE_ENV"
},
"default": {
"type": "boolean"
},
"target": {
"type": "string",
"description": "deployment destination override; requires either an explicit source or a safe relative entry key when every variant has a target, and is not supported in track mode"
}
}
}
}
},
"allOf": [
{
"anyOf": [
{
"properties": {
"relative": {
"const": false
}
}
},
{
"required": ["mode"],
"properties": {
"mode": {
"enum": ["symlink", "symlink-each"]
}
}
},
{
"properties": {
"mode": false,
"content": false,
"permissions": false,
"block": false,
"line": false
}
}
]
},
{
"anyOf": [
{
"properties": {
"remove_empty": {
"const": false
}
}
},
{
"properties": {
"mode": {
"const": "template"
},
"content": false,
"block": false,
"line": false
},
"anyOf": [
{
"required": ["source"]
},
{
"required": ["mode"]
},
{
"properties": {
"permissions": false
}
}
]
}
],
"if": {
"required": ["mode"],
"properties": {
"mode": {
"const": "absent"
}
}
},
"then": {
"properties": {
"source": false,
"content": false,
"exclude": false,
"manifest": false,
"permissions": false,
"remove_empty": false,
"dot_prefix": {
"const": false
},
"encrypt": {
"const": false
},
"block": false,
"line": false,
"position": false,
"template": false,
"comment": false
}
}
},
{
"oneOf": [
{
"required": ["manifest"],
"properties": {
"source": {},
"content": false,
"permissions": false,
"mode": {
"enum": ["copy", "symlink-each"]
},
"exclude": {},
"manifest": {},
"block": false,
"line": false,
"template": false,
"comment": false
}
},
{
"properties": {
"manifest": false
}
}
]
},
{
"if": {
"required": ["dot_prefix"],
"properties": {
"dot_prefix": {
"const": true
}
}
},
"then": {
"properties": {
"content": false,
"mode": {
"enum": ["copy", "symlink-each"]
},
"block": false,
"line": false,
"template": false,
"comment": false
},
"anyOf": [
{
"required": ["source"]
},
{
"required": ["mode"]
},
{
"properties": {
"permissions": false
}
}
]
}
},
{
"oneOf": [
{
"required": ["permissions"],
"properties": {
"mode": {
"enum": ["copy", "template"]
},
"block": false,
"template": false,
"comment": false
},
"anyOf": [
{
"required": ["source"]
},
{
"required": ["content"]
},
{
"required": ["mode"]
},
{
"properties": {
"exclude": false,
"manifest": false,
"encrypt": false
}
}
]
},
{
"properties": {
"permissions": false
}
}
]
},
{
"oneOf": [
{
"required": ["content"],
"properties": {
"source": false,
"manifest": false,
"mode": false,
"exclude": false,
"block": false,
"line": false,
"position": false,
"template": false,
"comment": false
}
},
{
"required": ["line"],
"properties": {
"content": false,
"permissions": false,
"mode": false,
"exclude": false,
"source": false,
"block": false,
"template": false,
"comment": false
}
},
{
"properties": {
"content": false,
"line": false,
"position": false
}
}
]
},
{
"oneOf": [
{
"required": ["include", "mode"],
"properties": {
"mode": {
"const": "track"
}
}
},
{
"properties": {
"include": false
}
}
]
}
],
"anyOf": [
{
"properties": {
"encrypt": {
"const": false
}
}
},
{
"properties": {
"content": false,
"block": false,
"line": false,
"template": false
}
}
]
}
]
}
},
"bootstrap": {
"type": "object",
"description": "machine-global bootstrapping (system packages, repos, macOS defaults, launchd agents, login shell)",
"properties": {
"files": {
"type": "object",
"description": "Managed system files keyed by absolute target path",
"additionalProperties": {
"type": "object",
"properties": {
"phase": {
"$ref": "#/$defs/bootstrap_file_phase"
},
"source": {
"type": "string"
},
"content": {
"type": "string"
},
"owner": {
"type": "string"
},
"group": {
"type": "string"
},
"mode": {
"type": "string"
},
"template": {
"type": "boolean"
},
"remove_empty": {
"type": "boolean",
"description": "remove the target when the template renders to empty or whitespace-only content; requires template = true"
},
"state": {
"type": "string",
"enum": ["present", "absent"]
},
"replace": {
"type": "boolean"
},
"notify": {
"type": "array",
"items": {
"type": "string"
}
}
},
"allOf": [
{
"if": {
"required": ["remove_empty"],
"properties": {
"remove_empty": {
"const": true
}
}
},
"then": {
"required": ["template"],
"properties": {
"template": {
"const": true
},
"state": {
"const": "present"
}
}
}
},
{
"$comment": "A present file without source or content manages only its permissions: it must declare some, and cannot be templated or replaced.",
"if": {
"properties": {
"state": {
"const": "present"
}
},
"not": {
"anyOf": [
{
"required": ["source"]
},
{
"required": ["content"]
}
]
}
},
"then": {
"anyOf": [
{
"required": ["mode"]
},
{
"required": ["owner"]
},
{
"required": ["group"]
}
],
"properties": {
"template": {
"const": false
},
"replace": {
"const": false
}
}
}
}
],
"additionalProperties": false
}
},
"directories": {
"type": "object",
"description": "Managed system directories keyed by absolute target path",
"additionalProperties": {
"type": "object",
"properties": {
"phase": {
"$ref": "#/$defs/bootstrap_file_phase"
},
"owner": {
"type": "string"
},
"group": {
"type": "string"
},
"mode": {
"type": "string"
},
"state": {
"type": "string",
"enum": ["present", "absent"]
},
"recursive": {
"type": "boolean"
},
"replace": {
"type": "boolean"
},
"notify": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"config_roots": {
"deprecated": true,
"type": "array",
"description": "deprecated and will be removed in mise 2027.3.3; move each selected root into a conf.d folder instead (https://mise.jdx.dev/configuration.html#conf-d-folders)",
"items": {
"type": "string"
}
},
"remote": {
"type": "object",
"description": "OpenSSH targets used by `mise bootstrap remote`",
"properties": {
"source": {
"type": "string",
"description": "local project directory sent to inventory hosts"
},
"mise_env": {
"type": "array",
"description": "default ordered config environments loaded by remote bootstrap",
"items": {
"type": "string"
}
},
"install_mise": {
"$ref": "#/$defs/bootstrap_remote_install_mise",
"description": "install the provisioned mise on inventory hosts instead of only staging it"
},
"copy_links": {
"type": "boolean",
"description": "dereference every symbolic link in the source archive"
},
"copy_link": {
"type": "array",
"description": "source-relative symbolic links to dereference",
"items": {
"type": "string"
}
},
"exclude": {
"type": "array",
"description": "additional source archive exclusion patterns",
"items": {
"type": "string"
}
},
"hosts": {
"type": "object",
"description": "remote bootstrap inventory keyed by target name",
"additionalProperties": {
"type": "object",
"required": ["host"],
"properties": {
"host": {
"type": "string",
"description": "SSH host name or address"
},
"user": {
"type": "string",
"description": "SSH user"
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "SSH port"
},
"identity_file": {
"type": "string",
"description": "SSH identity file"
},
"source": {
"type": "string",
"description": "host-specific local project directory to send"
},
"mise_env": {
"type": "array",
"description": "ordered config environments loaded by remote bootstrap",
"items": {
"type": "string"
}
},
"copy_links": {
"type": "boolean",
"description": "dereference every symbolic link in this host's source archive"
},
"copy_link": {
"type": "array",
"description": "source-relative symbolic links to dereference for this host",
"items": {
"type": "string"
}
},
"exclude": {
"type": "array",
"description": "additional source archive exclusion patterns for this host",
"items": {
"type": "string"
}
},
"ssh_options": {
"type": "array",
"description": "OpenSSH options passed with `-o`",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"description": "inventory selection tags",
"items": {
"type": "string"
}
},
"install_mise": {
"$ref": "#/$defs/bootstrap_remote_install_mise",
"description": "install the provisioned mise on this host instead of only staging it"
},
"mise_bin": {
"type": "string",
"description": "local mise executable to upload"
},
"remote_mise": {
"type": "string",
"description": "existing mise executable name or path on the host"
},
"bootstrap_command": {
"type": "string",
"description": "remote shell command that installs mise"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"services": {
"type": "object",
"description": "System services and portable user services managed by mise bootstrap, keyed by service name",
"additionalProperties": {
"type": "object",
"not": {
"required": ["builtin", "command"]
},
"properties": {
"state": {
"type": "string",
"enum": ["running", "stopped", "absent"],
"default": "running"
},
"enabled": {
"type": "boolean",
"default": true
},
"masked": {
"type": "boolean",
"default": false,
"description": "System scope only"
},
"on_change": {
"type": "string",
"enum": ["reload", "restart", "reload_or_restart", "none"],
"default": "reload_or_restart",
"description": "System scope only"
},
"scope": {
"type": "string",
"enum": ["system", "user"],
"description": "Defaults to system; builtin implies user"
},
"builtin": {
"type": "string",
"enum": ["history-watch"],
"description": "A mise-provided user service"
},
"command": {
"type": "string",
"minLength": 1,
"description": "User service command; mutually exclusive with builtin"
},
"description": {
"type": "string"
},
"restart": {
"type": "string",
"enum": ["always", "on-failure", "never"],
"default": "on-failure"
},
"environment": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"working_directory": {
"type": "string"
},
"requires_tools": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
},
"plugins": {
"type": "object",
"description": "package manager plugins to install with `mise bootstrap plugins apply`, keyed by manager name",
"additionalProperties": {
"type": "string",
"description": "plugin git URL"
}
},
"packages": {
"type": "object",
"description": "system packages to install with `mise bootstrap packages apply`, keyed by \"manager:package\" (e.g. \"apt:libssl-dev\", \"brew:postgresql@17\", \"dnf:openssl-devel\", \"pacman:base-devel\")",
"propertyNames": {
"pattern": "^[A-Za-z0-9_-]+:.+$"
},
"additionalProperties": {
"oneOf": [
{
"type": "string",
"description": "version pin in the manager's native format, or \"latest\""
},
{
"type": "object",
"properties": {
"version": {
"type": "string",
"default": "latest",
"description": "version pin in the manager's native format, or \"latest\""
},
"os": {
"description": "operating system or OS/architecture selectors",
"oneOf": [
{
"$ref": "#/$defs/os_filter_item"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/os_filter_item"
},
"minItems": 1
}
]
},
"env": {
"description": "mise environments in which this package is enabled",
"oneOf": [
{
"type": "string",
"minLength": 1,
"pattern": "\\S"
},
{
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"pattern": "\\S"
},
"minItems": 1
}
]
},
"adopt": {
"type": "boolean",
"description": "adopt an existing identical app artifact instead of replacing it (brew-cask and macos-app)"
},
"url": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*",
"description": "macos-app only: download URL for the app archive; {{version}} is replaced with the declared version"
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-fA-F]{64}$",
"description": "macos-app only: expected sha256 of the download as 64 hex characters; required with url. Homebrew's no_check sentinel is not accepted"
},
"artifact": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*",
"description": "macos-app only: app bundle to install from the archive, e.g. Nuvio.app; required with url"
},
"state": {
"type": "string",
"description": "desired package state; only pacman currently supports absent",
"enum": ["present", "absent"],
"default": "present"
}
},
"dependentRequired": {
"url": ["sha256", "artifact", "version"]
},
"additionalProperties": false
}
]
}
},
"repos": {
"type": "object",
"description": "git repositories to clone or update with `mise bootstrap repos apply`, keyed by target path",
"additionalProperties": {
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*",
"description": "git repository URL"
},
"ref": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*",
"description": "optional branch, tag, or full commit SHA to check out"
}
},
"required": ["url"],
"additionalProperties": false
}
},
"macos": {
"type": "object",
"description": "macOS-specific bootstrap config",
"properties": {
"dock": {
"type": "object",
"description": "curated Dock preferences that compile into macOS defaults",
"properties": {
"apps": {
"type": "array",
"items": {
"type": "string",
"pattern": "^(?:/|~/(?!/)).+\\.[aA][pP][pP]/*$"
},
"uniqueItems": true,
"description": "Pinned application paths in order; absolute or ~/ paths ending in .app. An empty array removes application tiles."
},
"autohide_delay": {
"type": "number",
"description": "delay before showing the Dock"
},
"autohide_time_modifier": {
"type": "number",
"description": "Dock autohide animation time modifier"
},
"autohide": {
"type": "boolean",
"description": "hide and show the Dock automatically"
},
"orientation": {
"type": "string",
"enum": ["bottom", "left", "right"],
"description": "Dock screen edge"
},
"tilesize": {
"type": "integer",
"description": "Dock icon size"
},
"magnification": {
"type": "boolean",
"description": "enable Dock magnification"
},
"largesize": {
"type": "integer",
"description": "Dock magnified icon size"
},
"show_recents": {
"type": "boolean",
"description": "show recent applications in the Dock"
},
"mru_spaces": {
"type": "boolean",
"description": "automatically rearrange Spaces based on most recent use"
}
},
"additionalProperties": false
},
"finder": {
"type": "object",
"description": "curated Finder preferences that compile into macOS defaults",
"properties": {
"sort_folders_first": {
"type": "boolean",
"description": "keep folders first when sorting by name"
},
"save_new_documents_to_cloud": {
"type": "boolean",
"description": "save new documents to iCloud by default (applies globally to application save dialogs)"
},
"show_all_files": {
"type": "boolean",
"description": "show hidden files in Finder"
},
"show_pathbar": {
"type": "boolean",
"description": "show the Finder path bar"
},
"show_status_bar": {
"type": "boolean",
"description": "show the Finder status bar"
},
"show_extensions_warning": {
"type": "boolean",
"description": "show the warning when changing file extensions"
},
"preferred_view_style": {
"type": "string",
"enum": ["icon", "list", "column", "gallery"],
"description": "Finder preferred view style"
}
},
"additionalProperties": false
},
"keyboard": {
"type": "object",
"description": "curated keyboard preferences that compile into macOS defaults",
"properties": {
"automatic_capitalization": {
"type": "boolean",
"description": "automatically capitalize words"
},
"automatic_spelling_correction": {
"type": "boolean",
"description": "automatically correct spelling"
},
"key_repeat": {
"type": "integer",
"description": "keyboard repeat interval"
},
"initial_key_repeat": {
"type": "integer",
"description": "delay before key repeat starts"
},
"press_and_hold": {
"type": "boolean",
"description": "enable press-and-hold accent picker"
},
"fn_state": {
"type": "boolean",
"description": "use F1, F2, etc. as standard function keys"
}
},
"additionalProperties": false
},
"trackpad": {
"type": "object",
"description": "curated trackpad preferences that compile into macOS defaults",
"properties": {
"tap_to_click": {
"type": "boolean",
"description": "enable tap to click for built-in and Bluetooth trackpads"
},
"three_finger_drag": {
"type": "boolean",
"description": "enable three finger drag for built-in and Bluetooth trackpads"
}
},
"additionalProperties": false
},
"defaults": {
"type": "object",
"description": "macOS user defaults to apply with `mise bootstrap macos defaults apply`, keyed by preferences domain (e.g. \"com.apple.dock\", \"NSGlobalDomain\")",
"additionalProperties": {
"type": "object",
"description": "defaults keys and their desired values for this domain",
"additionalProperties": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
}
],
"description": "desired value, written with the matching `defaults write` type (-bool, -int, -float, -string)"
}
}
},
"defaults_entries": {
"type": "array",
"description": "Explicit macOS preferences with a selectable host scope",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["domain", "key", "value"],
"properties": {
"domain": {
"type": "string"
},
"key": {
"type": "string"
},
"path": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"description": "Dictionary keys below the preference key; omitted to replace the whole value"
},
"host": {
"type": "string",
"enum": ["any", "current"],
"default": "any"
},
"value": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array"
},
{
"type": "object"
}
]
}
}
}
},
"launchd": {
"type": "object",
"description": "macOS launchd bootstrap config",
"properties": {
"agents": {
"type": "object",
"description": "macOS user LaunchAgents to write and load with `mise bootstrap macos launchd-agents apply`",
"propertyNames": {
"pattern": "^[A-Za-z0-9._-]+$"
},
"additionalProperties": {
"type": "object",
"properties": {
"program": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*",
"description": "program path for ProgramArguments[0]"
},
"args": {
"type": "array",
"description": "additional ProgramArguments entries",
"items": {
"type": "string"
}
},
"run_at_load": {
"type": "boolean",
"description": "write RunAtLoad"
},
"keep_alive": {
"type": "boolean",
"description": "write KeepAlive"
},
"start_interval": {
"type": "integer",
"minimum": 0,
"description": "write StartInterval in seconds"
},
"throttle_interval": {
"type": "integer",
"minimum": 0,
"description": "write ThrottleInterval in seconds"
},
"process_type": {
"type": "string",
"enum": [
"Background",
"Standard",
"Adaptive",
"Interactive"
],
"description": "write ProcessType, the scheduling band launchd runs the job in"
},
"queue_directories": {
"type": "array",
"description": "write QueueDirectories (absolute paths; `~` and `~/` are expanded)",
"items": {
"type": "string",
"minLength": 1,
"pattern": "^(/|~$|~/)"
}
},
"start_calendar_interval": {
"description": "write one or more StartCalendarInterval schedules",
"oneOf": [
{
"$ref": "#/$defs/launchd_calendar_interval"
},
{
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/launchd_calendar_interval"
}
}
]
},
"environment": {
"type": "object",
"description": "environment variables for EnvironmentVariables",
"additionalProperties": {
"type": "string"
}
},
"working_directory": {
"type": "string",
"description": "write WorkingDirectory"
},
"stdout_path": {
"type": "string",
"description": "write StandardOutPath"
},
"stderr_path": {
"type": "string",
"description": "write StandardErrorPath"
},
"kickstart": {
"type": "boolean",
"description": "run `launchctl kickstart -k` after loading the agent"
}
},
"required": ["program"]
}
}
}
}
}
},
"linux": {
"type": "object",
"description": "Linux-specific bootstrap config",
"properties": {
"firewall": {
"type": "object",
"description": "Linux host firewall policy and rules managed with `mise bootstrap firewall`",
"additionalProperties": false,
"properties": {
"backend": {
"type": "string",
"description": "firewall backend; auto reuses managed or active host infrastructure",
"enum": ["auto", "ufw", "firewalld", "nftables"],
"default": "auto"
},
"state": {
"type": "string",
"description": "desired lifecycle of mise-managed firewall state",
"enum": ["enabled", "disabled", "absent"],
"default": "enabled"
},
"default_incoming": {
"type": "string",
"description": "default action for incoming traffic",
"enum": ["allow", "deny", "reject"],
"default": "deny"
},
"default_outgoing": {
"type": "string",
"description": "default action for outgoing traffic",
"enum": ["allow", "deny", "reject"],
"default": "allow"
},
"exclusive": {
"type": "boolean",
"description": "treat the declared rules as the complete owned ruleset; UFW reset also removes unrelated UFW rules",
"default": false
},
"allow_lockout": {
"type": "boolean",
"description": "allow default-deny or reject over SSH without a rule covering the connected peer",
"default": false
},
"rules": {
"type": "array",
"description": "named firewall rules reconciled without deleting undeclared managed rules",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "stable managed rule identifier",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9_-]+$"
},
"state": {
"type": "string",
"enum": ["present", "absent"],
"default": "present"
},
"direction": {
"type": "string",
"enum": ["incoming", "outgoing"],
"default": "incoming"
},
"action": {
"type": "string",
"enum": ["allow", "limit", "deny", "reject"],
"default": "allow"
},
"port": {
"description": "single port number or inclusive range",
"oneOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 65535
},
{
"type": "string",
"pattern": "^[0-9]+[-:][0-9]+$"
}
]
},
"protocol": {
"type": "string",
"enum": ["tcp", "udp", "sctp", "dccp"]
},
"source": {
"type": "string",
"description": "source IPv4 or IPv6 CIDR network"
},
"destination": {
"type": "string",
"description": "destination IPv4 or IPv6 CIDR network"
},
"interface": {
"type": "string",
"description": "network interface (nftables and UFW only)",
"minLength": 1,
"maxLength": 15,
"pattern": "^[A-Za-z0-9_.:-]+$"
}
},
"required": ["name"]
}
}
}
},
"systemd": {
"type": "object",
"description": "systemd user service and timer bootstrap config",
"properties": {
"units": {
"type": "object",
"description": "systemd user services and timers to write and start with `mise bootstrap linux systemd-units apply`",
"propertyNames": {
"pattern": "^[A-Za-z0-9._@-]+$"
},
"additionalProperties": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "write Description in the [Unit] section"
},
"after": {
"type": "array",
"description": "write After dependencies in the [Unit] section",
"items": {
"type": "string"
}
},
"wants": {
"type": "array",
"description": "write Wants dependencies in the [Unit] section",
"items": {
"type": "string"
}
},
"requires": {
"type": "array",
"description": "write Requires dependencies in the [Unit] section",
"items": {
"type": "string"
}
},
"before": {
"type": "array",
"description": "write Before ordering in the [Unit] section",
"items": {
"type": "string"
}
},
"binds_to": {
"type": "array",
"description": "write BindsTo dependencies in the [Unit] section",
"items": {
"type": "string"
}
},
"part_of": {
"type": "array",
"description": "write PartOf dependencies in the [Unit] section",
"items": {
"type": "string"
}
},
"conflicts": {
"type": "array",
"description": "write Conflicts dependencies in the [Unit] section",
"items": {
"type": "string"
}
},
"exec_start_pre": {
"type": "array",
"description": "write one ExecStartPre entry per command in the [Service] section",
"items": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*"
}
},
"exec_start": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*",
"description": "write ExecStart in the [Service] section"
},
"exec_start_post": {
"type": "array",
"description": "write one ExecStartPost entry per command in the [Service] section",
"items": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*"
}
},
"type": {
"type": "string",
"enum": [
"simple",
"exec",
"forking",
"oneshot",
"dbus",
"notify",
"notify-reload",
"idle"
],
"description": "write Type in the [Service] section"
},
"remain_after_exit": {
"type": "boolean",
"description": "write RemainAfterExit in the [Service] section"
},
"exec_stop": {
"type": "string",
"description": "write ExecStop in the [Service] section"
},
"exec_stop_post": {
"type": "array",
"description": "write one ExecStopPost entry per command in the [Service] section",
"items": {
"type": "string",
"minLength": 1,
"pattern": ".*\\S.*"
}
},
"timeout_start_sec": {
"type": "string",
"description": "write TimeoutStartSec in the [Service] section"
},
"timeout_stop_sec": {
"type": "string",
"description": "write TimeoutStopSec in the [Service] section"
},
"no_new_privileges": {
"type": "boolean",
"description": "write NoNewPrivileges in the [Service] section"
},
"private_tmp": {
"type": "boolean",
"description": "write PrivateTmp in the [Service] section"
},
"environment": {
"type": "object",
"description": "environment variables for Environment entries",
"additionalProperties": {
"type": "string"
}
},
"environment_file": {
"type": "array",
"description": "write one EnvironmentFile entry per path in the [Service] section",
"items": {
"type": "string"
}
},
"nice": {
"type": "integer",
"minimum": -20,
"maximum": 19,
"description": "write Nice in the [Service] section"
},
"umask": {
"type": "string",
"pattern": "^(?:[0-7]{1,3}|0[0-7]{3})$",
"description": "write UMask in the [Service] section"
},
"working_directory": {
"type": "string",
"description": "write WorkingDirectory in the [Service] section"
},
"restart": {
"type": "string",
"description": "write Restart in the [Service] section"
},
"restart_sec": {
"type": "string",
"description": "write RestartSec in the [Service] section"
},
"standard_output": {
"type": "string",
"description": "write StandardOutput in the [Service] section"
},
"standard_error": {
"type": "string",
"description": "write StandardError in the [Service] section"
},
"on_boot_sec": {
"type": "string",
"description": "write OnBootSec in the [Timer] section"
},
"on_unit_active_sec": {
"type": "string",
"description": "write OnUnitActiveSec in the [Timer] section"
},
"on_unit_inactive_sec": {
"type": "string",
"description": "write OnUnitInactiveSec in the [Timer] section"
},
"on_calendar": {
"type": "string",
"description": "write OnCalendar in the [Timer] section"
},
"randomized_delay_sec": {
"type": "string",
"description": "write RandomizedDelaySec in the [Timer] section"
},
"accuracy_sec": {
"type": "string",
"description": "write AccuracySec in the [Timer] section"
},
"persistent": {
"type": "boolean",
"description": "write Persistent in the [Timer] section"
},
"unit": {
"type": "string",
"description": "write Unit in the [Timer] section"
},
"start": {
"type": "boolean",
"description": "restart the unit after writing it; when false, stop the unit after writing it"
},
"wanted_by": {
"type": "array",
"description": "write WantedBy entries in the [Install] section and enable the unit; an empty array disables previous enablement",
"items": {
"type": "string"
}
}
},
"oneOf": [
{
"title": "systemd service",
"required": ["exec_start"],
"not": {
"anyOf": [
{
"required": ["on_boot_sec"]
},
{
"required": ["on_unit_active_sec"]
},
{
"required": ["on_unit_inactive_sec"]
},
{
"required": ["on_calendar"]
},
{
"required": ["randomized_delay_sec"]
},
{
"required": ["accuracy_sec"]
},
{
"required": ["persistent"]
},
{
"required": ["unit"]
}
]
}
},
{
"title": "systemd timer",
"anyOf": [
{
"required": ["on_boot_sec"]
},
{
"required": ["on_unit_active_sec"]
},
{
"required": ["on_unit_inactive_sec"]
},
{
"required": ["on_calendar"]
}
],
"not": {
"anyOf": [
{
"required": ["exec_start_pre"],
"properties": {
"exec_start_pre": {
"type": "array",
"minItems": 1
}
}
},
{
"required": ["exec_start"]
},
{
"required": ["exec_start_post"],
"properties": {
"exec_start_post": {
"type": "array",
"minItems": 1
}
}
},
{
"required": ["type"]
},
{
"required": ["remain_after_exit"]
},
{
"required": ["exec_stop"]
},
{
"required": ["exec_stop_post"],
"properties": {
"exec_stop_post": {
"type": "array",
"minItems": 1
}
}
},
{
"required": ["timeout_start_sec"]
},
{
"required": ["timeout_stop_sec"]
},
{
"required": ["no_new_privileges"]
},
{
"required": ["private_tmp"]
},
{
"required": ["environment"],
"properties": {
"environment": {
"type": "object",
"minProperties": 1
}
}
},
{
"required": ["environment_file"],
"properties": {
"environment_file": {
"type": "array",
"minItems": 1
}
}
},
{
"required": ["nice"]
},
{
"required": ["umask"]
},
{
"required": ["working_directory"]
},
{
"required": ["restart"]
},
{
"required": ["restart_sec"]
},
{
"required": ["standard_output"]
},
{
"required": ["standard_error"]
}
]
}
}
]
}
}
}
}
}
},
"user": {
"type": "object",
"description": "current-user bootstrap settings",
"properties": {
"login_shell": {
"type": "string",
"pattern": "^/",
"description": "current user's desired login shell, applied with `chsh -s`; must be an absolute path"
}
}
},
"brew": {
"type": "object",
"description": "Homebrew-specific bootstrap package config",
"properties": {
"adopt": {
"type": "boolean",
"description": "adopt existing app artifacts by default for configured brew-cask packages"
},
"taps": {
"type": "object",
"description": "Homebrew tap names mapped to custom git URLs",
"additionalProperties": {
"type": "string"
}
}
}
},
"hooks": {
"type": "object",
"description": "commands to run before and after bootstrap phases",
"properties": {
"pre-packages": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre_packages": {
"$ref": "#/$defs/bootstrap_hook"
},
"post-packages": {
"$ref": "#/$defs/bootstrap_hook"
},
"post_packages": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre-repos": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre_repos": {
"$ref": "#/$defs/bootstrap_hook"
},
"post-repos": {
"$ref": "#/$defs/bootstrap_hook"
},
"post_repos": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre-dotfiles": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre_dotfiles": {
"$ref": "#/$defs/bootstrap_hook"
},
"post-dotfiles": {
"$ref": "#/$defs/bootstrap_hook"
},
"post_dotfiles": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre-defaults": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre_defaults": {
"$ref": "#/$defs/bootstrap_hook"
},
"post-defaults": {
"$ref": "#/$defs/bootstrap_hook"
},
"post_defaults": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre-user": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre_user": {
"$ref": "#/$defs/bootstrap_hook"
},
"post-user": {
"$ref": "#/$defs/bootstrap_hook"
},
"post_user": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre-tools": {
"$ref": "#/$defs/bootstrap_hook"
},
"pre_tools": {
"$ref": "#/$defs/bootstrap_hook"
},
"post-tools": {
"$ref": "#/$defs/bootstrap_hook"
},
"post_tools": {
"$ref": "#/$defs/bootstrap_hook"
},
"final": {
"$ref": "#/$defs/bootstrap_hook"
}
},
"additionalProperties": false
},
"mise_shell_activate": {
"type": "object",
"description": "declarative mise shell activation snippets, applied with `mise bootstrap mise-shell-activate apply`",
"properties": {
"bash": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"zsh": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"fish": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"bash_profile": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"bashrc": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"zshenv": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"zprofile": {
"$ref": "#/$defs/bootstrap_shell_activation"
},
"zshrc": {
"$ref": "#/$defs/bootstrap_shell_activation"
}
},
"additionalProperties": false
}
}
},
"history": {
"type": "object",
"description": "dotfiles history: what is never captured, reload commands, and the setup repository (https://mise.jdx.dev/history.html)",
"properties": {
"encryption": {
"type": "object",
"properties": {
"recipients": {
"type": "array",
"items": {
"type": "string"
},
"description": "shared age, SSH, or age-plugin public recipients for all encrypted dotfiles"
}
},
"additionalProperties": false
},
"exclude": {
"type": "array",
"description": "globs never captured by dotfiles history; a `!glob` entry re-includes a path an earlier glob excluded",
"items": {
"type": "string"
}
},
"reload": {
"type": "object",
"description": "commands run once after a rollback or undo writes a path matching the glob (trusted global or system config only)",
"additionalProperties": {
"type": "string"
}
},
"origin": {
"type": "object",
"description": "the setup repository this machine publishes to and fetches from; machine-local, written by `mise bootstrap dotfiles origin set`",
"properties": {
"url": {
"type": "string",
"description": "the repository url"
},
"branch": {
"type": "string",
"description": "the setup branch",
"default": "main"
}
},
"required": ["url"],
"additionalProperties": false
}
},
"additionalProperties": false
},
"task_config": {
"description": "configuration for task execution and management",
"$ref": "#/$defs/task_config"
},
"tool_config": {
"description": "policy for tools declared by this config root",
"$ref": "#/$defs/tool_config"
},
"tasks": {
"additionalProperties": {
"$ref": "#/$defs/task"
},
"description": "task runner tasks",
"type": "object"
},
"task_templates": {
"description": "task templates that can be extended by tasks via extends",
"additionalProperties": {
"$ref": "#/$defs/task_template"
},
"type": "object"
},
"tools": {
"additionalProperties": {
"oneOf": [
{
"items": {
"$ref": "#/$defs/tool"
},
"type": "array"
},
{
"$ref": "#/$defs/tool"
}
]
},
"description": "dev tools to use",
"type": "object"
},
"hooks": {
"description": "hooks to run on events like cd, enter, leave",
"$ref": "#/$defs/hooks"
},
"vars": {
"description": "variables to set for use in config templates",
"$ref": "#/$defs/vars"
},
"watch_files": {
"description": "files to watch for changes and run scripts when modified",
"$ref": "#/$defs/watch_files"
},
"_": {
"type": "object",
"additionalProperties": true
},
"doctor": {
"$ref": "#/$defs/doctor"
},
"daemons": {
"description": "Experimental project daemons: custom pitchfork commands or managed presets.",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "string",
"description": "Version request for a preset matching the daemon name."
},
{
"type": "object",
"required": ["run"],
"not": {
"anyOf": [
{
"required": ["preset"]
},
{
"required": ["project"]
},
{
"required": ["task"]
},
{
"required": ["args"]
},
{
"required": ["provider"]
},
{
"required": ["resource"]
}
]
},
"properties": {
"run": {
"type": "string"
},
"init": {
"$ref": "#/$defs/daemon_init"
},
"mise": {
"type": "boolean"
},
"port": {
"oneOf": [
{
"$ref": "#/$defs/daemon_port"
},
{
"type": "object",
"description": "Pitchfork's structured port configuration, forwarded verbatim.",
"not": {
"required": ["auto"]
}
}
]
},
"proxy": {
"$ref": "#/$defs/daemon_proxy"
},
"proxy_tls": {
"$ref": "#/$defs/daemon_proxy_tls"
}
},
"additionalProperties": true
},
{
"type": "object",
"required": ["task"],
"not": {
"anyOf": [
{
"required": ["run"]
},
{
"required": ["preset"]
},
{
"required": ["project"]
},
{
"required": ["provider"]
},
{
"required": ["resource"]
}
]
},
"properties": {
"task": {
"description": "mise task run as this daemon's long-running process",
"type": "string"
},
"args": {
"description": "arguments passed to the task after `--`",
"type": "array",
"items": {
"type": "string"
}
},
"init": {
"$ref": "#/$defs/daemon_init"
},
"proxy": {
"$ref": "#/$defs/daemon_proxy"
},
"proxy_tls": {
"$ref": "#/$defs/daemon_proxy_tls"
}
},
"additionalProperties": true
},
{
"type": "object",
"required": ["preset", "version"],
"not": {
"anyOf": [
{
"required": ["project"]
},
{
"required": ["task"]
},
{
"required": ["args"]
},
{
"required": ["provider"]
},
{
"required": ["resource"]
}
]
},
"properties": {
"data_dir": {
"type": "string",
"minLength": 1,
"description": "Persistent preset data directory, relative to the declaring project root or absolute. Defaults to mise state storage."
},
"preset": {
"type": "string",
"enum": ["cockroachdb", "nats", "postgres", "redis", "spicedb"]
},
"version": {
"type": "string"
},
"port": {
"$ref": "#/$defs/daemon_port"
},
"ports": {
"type": "object",
"description": "Overrides for the preset's additional named ports.",
"additionalProperties": {
"type": "integer",
"minimum": 1,
"maximum": 65535
}
},
"options": {
"type": "object"
},
"run": {
"type": "string"
},
"init": {
"$ref": "#/$defs/daemon_init"
},
"proxy": {
"$ref": "#/$defs/daemon_proxy"
},
"proxy_tls": {
"$ref": "#/$defs/daemon_proxy_tls"
}
},
"additionalProperties": true
},
{
"type": "object",
"description": "Daemon declared by another project, run under that project's namespace and root.",
"required": ["project"],
"properties": {
"project": {
"type": "string",
"description": "Directory of a project whose mise configuration declares the daemon. A relative path resolves against this project root."
},
"name": {
"type": "string",
"description": "Daemon name inside the referenced project, when it differs from this key."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": ["provider"],
"additionalProperties": false,
"properties": {
"provider": {
"type": "string",
"description": "Name of a globally defined shared server provider."
},
"resource": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,62}$",
"description": "Database or NATS account shared by consumers choosing this name. Omit for a checkout-specific resource."
}
}
}
]
}
},
"daemon_providers": {
"description": "Experimental shared servers owned by the user. Only allowed in global configuration.",
"type": "object",
"propertyNames": {
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"additionalProperties": {
"type": "object",
"required": ["preset", "version"],
"additionalProperties": false,
"properties": {
"preset": {
"enum": ["postgres", "cockroachdb", "nats"]
},
"version": {
"type": "string"
},
"port": {
"$ref": "#/$defs/daemon_port"
},
"ports": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 1,
"maximum": 65535
}
},
"options": {
"type": "object"
},
"data_dir": {
"type": "string",
"minLength": 1
},
"tool": {
"type": "string"
}
}
}
},
"daemons_settings": {
"description": "Experimental project-wide daemon options.",
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "Fixed pitchfork namespace for this project, replacing the hashed default so other projects can refer to its daemons by qualified ID."
},
"namespace_per_worktree": {
"type": "boolean",
"default": true,
"description": "Append a worktree-specific suffix to an explicit namespace when the project root is a linked git worktree."
}
},
"additionalProperties": false
},
"daemon_groups": {
"description": "Experimental named groups of project daemons. Members are daemon names or other group names declared in the same project.",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "array",
"description": "Daemon or group names in this project.",
"items": {
"type": "string"
},
"minItems": 1
},
{
"type": "object",
"required": ["daemons"],
"properties": {
"daemons": {
"type": "array",
"description": "Daemon or group names in this project.",
"items": {
"type": "string"
},
"minItems": 1
}
},
"additionalProperties": false
}
]
}
}
}
}