{
  "$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"]
    },
    "daemon_proxy_idle_timeout": {
      "description": "Stop this daemon after this long without proxy traffic when the proxy started it, for example \"30m\". false exempts it from idle shutdown even when pitchfork's proxy.idle_timeout is set; \"0\" does the same. Idle shutdown is off unless this or pitchfork's proxy.idle_timeout is set, and a daemon started with `mise daemons start` is never stopped for inactivity. Requires pitchfork 2.27.0.",
      "oneOf": [
        {
          "type": "string",
          "pattern": "^\\s*[0-9]"
        },
        {
          "type": "boolean",
          "enum": [false]
        }
      ]
    },
    "task_dependency_item": {
      "description": "task name and args",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        },
        {
          "$ref": "#/$defs/task_dependency_table"
        }
      ]
    },
    "task_dependency_table": {
      "description": "task dependency with args, env, and optional flag",
      "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_file_find_up": {
      "type": "boolean",
      "default": false,
      "description": "look for a relative env._.file path in the current directory and each parent directory"
    },
    "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. Can be a boolean or a help string. A variable that carries its own `value` cannot also be `required = true`."
    },
    "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"
        },
        "find_up": {
          "$ref": "#/$defs/env_file_find_up"
        },
        "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": {
                "const": false,
                "description": "a variable with its own value cannot be required; only `required = false` is accepted"
              }
            },
            "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": {
                "oneOf": [
                  {
                    "const": true
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "a variable without a value must be required: `true` or help text on how to set it"
              }
            },
            "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"],
                      "additionalProperties": false,
                      "type": "object"
                    }
                  ]
                }
              },
              "additionalProperties": false,
              "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": "Keep mise's tool directories ahead of `PATH` entries added after `mise activate`.",
          "type": "boolean"
        },
        "activate_shims": {
          "default": true,
          "description": "Let `mise activate` add the shims directories to `PATH` for auto-install and lazy tools.",
          "type": "boolean"
        },
        "age": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "identity_files": {
              "description": "Age identity files to try when decrypting.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "key_file": {
              "description": "Age private key file used to decrypt and as the default recipient when encrypting.",
              "type": "string"
            },
            "ssh_identity_files": {
              "description": "SSH private keys to try when decrypting age values.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "strict": {
              "default": true,
              "description": "Fail when an `[env]` age value cannot be decrypted, instead of skipping it.",
              "type": "boolean"
            }
          }
        },
        "all_compile": {
          "description": "Compile Node.js, Python, Ruby and Erlang from source instead of using precompiled builds.",
          "type": "boolean"
        },
        "always_keep_download": {
          "description": "[deprecated] Keep downloaded archives and sources after installing, for debugging.",
          "type": "boolean",
          "deprecated": true
        },
        "always_keep_install": {
          "description": "Keep a failed installation's partial install directory and downloads, for debugging.",
          "type": "boolean"
        },
        "aqua": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "baked_registry": {
              "default": true,
              "description": "Use the aqua registry built into mise.",
              "type": "boolean"
            },
            "cosign": {
              "default": true,
              "description": "Verify Cosign signatures for aqua packages that declare them.",
              "type": "boolean"
            },
            "github_attestations": {
              "default": true,
              "description": "Verify GitHub artifact attestations for aqua packages that declare them.",
              "type": "boolean"
            },
            "minisign": {
              "default": true,
              "description": "Verify Minisign signatures for aqua packages that declare them.",
              "type": "boolean"
            },
            "registries": {
              "description": "Aqua registries to search, in order, before the baked-in registry.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "registry_cache_ttl": {
              "description": "How long a downloaded aqua registry stays fresh before mise downloads it again.",
              "type": "string"
            },
            "registry_url": {
              "description": "[deprecated] URL of one aqua registry repository to search before the baked-in registry.",
              "type": "string",
              "deprecated": true
            },
            "slsa": {
              "default": true,
              "description": "Verify SLSA provenance for aqua packages that declare it.",
              "type": "boolean"
            }
          }
        },
        "arch": {
          "description": "Architecture of the precompiled binaries mise downloads.",
          "type": "string"
        },
        "asdf_compat": {
          "description": "Write `.tool-versions` files that asdf can read, with exact versions.",
          "type": "boolean",
          "deprecated": true
        },
        "auto_env": {
          "description": "Automatically enable platform config environments (unix, {os}, {os}-{arch}).",
          "type": "boolean"
        },
        "auto_install": {
          "default": true,
          "description": "Install missing tools automatically when a command needs them.",
          "type": "boolean"
        },
        "auto_install_disable_tools": {
          "description": "Tools that automatic installs skip, such as `node`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "auto_update": {
          "description": "[deprecated] Old name for `self_update.auto`.",
          "type": "boolean",
          "deprecated": true
        },
        "auto_update_check_duration": {
          "description": "[deprecated] Old name for `self_update.check_duration`.",
          "type": "string",
          "deprecated": true
        },
        "cache_prune_age": {
          "default": "30d",
          "description": "Delete cache files that have not been accessed for this long.",
          "type": "string"
        },
        "cargo": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "binstall": {
              "default": true,
              "description": "Install Cargo tools from cargo-binstall's prebuilt binaries when cargo-binstall is installed.",
              "type": "boolean"
            },
            "binstall_native": {
              "description": "Use mise's own prebuilt-binary installer for Cargo tools when cargo-binstall is not installed.",
              "type": "boolean"
            },
            "binstall_only": {
              "default": false,
              "description": "Require prebuilt binaries from cargo-binstall instead of falling back to `cargo install`.",
              "type": "boolean"
            },
            "binstall_quickinstall": {
              "default": false,
              "description": "Let cargo-binstall download third-party artifacts from cargo-quickinstall.",
              "type": "boolean"
            },
            "registry_name": {
              "description": "Cargo registry to install crates from instead of crates.io.",
              "type": "string"
            }
          }
        },
        "cd": {
          "description": "Directory to change to after mise starts.",
          "type": "string"
        },
        "ceiling_paths": {
          "default": [],
          "description": "Directories where mise stops searching parent directories for config files.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ci": {
          "default": "false",
          "description": "Behave as in CI, which answers yes to confirmation prompts; read from the `CI` variable.",
          "type": "boolean"
        },
        "color": {
          "default": true,
          "description": "Use color in mise's terminal output.",
          "type": "boolean"
        },
        "color_theme": {
          "default": "default",
          "description": "Color theme for interactive prompts, such as the task picker in `mise run`.",
          "type": "string",
          "enum": [
            "auto",
            "default",
            "charm",
            "base16",
            "catppuccin",
            "dracula"
          ]
        },
        "conda": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "channel": {
              "default": "conda-forge",
              "description": "Channel for `conda:` tools that do not set their own.",
              "type": "string"
            }
          }
        },
        "debug": {
          "description": "Set the log level to debug.",
          "type": "boolean"
        },
        "default_config_filename": {
          "default": "mise.toml",
          "description": "Extra project config filename mise reads, and the name it gives new config files.",
          "type": "string"
        },
        "default_tool_versions_filename": {
          "default": ".tool-versions",
          "description": "Extra filename mise reads as a `.tool-versions` file.",
          "type": "string"
        },
        "disable_backends": {
          "default": [],
          "description": "Backends mise ignores when resolving and installing tools, such as `asdf` or `pypi`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "disable_default_registry": {
          "description": "Stop mapping short names such as `php` to the asdf and vfox plugins listed in the registry.",
          "type": "boolean"
        },
        "disable_hints": {
          "default": [],
          "description": "Hints to stop showing, by ID; `*` turns off every hint.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "disable_tools": {
          "default": [],
          "description": "Tools mise ignores even when a config file lists them.",
          "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": "Mode for `[dotfiles]` entries that do not set `mode`.",
              "type": "string",
              "enum": ["symlink", "symlink-each", "copy", "template"]
            },
            "relative_symlinks": {
              "default": false,
              "description": "Create dotfile symlinks with relative targets instead of absolute ones.",
              "type": "boolean"
            },
            "root": {
              "default": "~/.dotfiles",
              "description": "Directory that holds dotfile sources for entries without a `source`.",
              "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": "Shared directory that every .NET SDK version installs into.",
              "type": "string"
            },
            "isolated": {
              "default": false,
              "description": "Install each .NET SDK version in its own isolated directory.",
              "type": "boolean"
            },
            "package_flags": {
              "default": [],
              "description": "[deprecated] Flags for every `dotnet:` tool; the only flag, `prerelease`, includes prereleases.",
              "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"
            }
          }
        },
        "download_cache": {
          "default": true,
          "description": "Reuse finished downloads instead of fetching them again.",
          "type": "boolean"
        },
        "download_cache_max_size": {
          "default": "2GiB",
          "description": "Maximum total size of the download cache, such as `500MB` or `10GiB`.",
          "type": "string"
        },
        "enable_tools": {
          "description": "Allowlist of configured tools mise uses; other tools are ignored.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "env": {
          "default": [],
          "description": "Config environments to load, such as `development` for `mise.development.toml`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "env_cache": {
          "default": false,
          "description": "[experimental] Cache computed environments on disk for nested mise commands.",
          "type": "boolean"
        },
        "env_cache_ttl": {
          "default": "1h",
          "description": "How long a cached environment stays valid.",
          "type": "string"
        },
        "env_conf_d": {
          "description": "Enable environment-specific filenames in conf.d directories.",
          "type": "boolean"
        },
        "env_file": {
          "description": "Dotenv file name to load from the current directory and each parent directory.",
          "type": "string"
        },
        "env_shell_expand": {
          "default": true,
          "description": "Expand shell-style variables such as `$FOO` and `${BAR:-default}` in `[env]` values.",
          "type": "boolean"
        },
        "erlang": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "compile": {
              "description": "Compile Erlang from source instead of using a precompiled build.",
              "type": "boolean"
            },
            "precompiled_os": {
              "description": "Ubuntu release whose precompiled Erlang build from builds.hex.pm mise installs on Linux.",
              "type": "string",
              "enum": [
                "ubuntu-20.04",
                "ubuntu-22.04",
                "ubuntu-24.04",
                "ubuntu-26.04"
              ]
            }
          }
        },
        "exec_auto_install": {
          "default": true,
          "description": "Install missing tools automatically when you run `mise exec`.",
          "type": "boolean"
        },
        "experimental": {
          "description": "Enable experimental features, which may change or be removed in any release.",
          "type": "boolean"
        },
        "fetch_remote_versions_cache": {
          "description": "How long a tool's cached list of available versions stays fresh.",
          "type": "string"
        },
        "fetch_remote_versions_timeout": {
          "default": "20s",
          "description": "Timeout for looking up a tool's available versions.",
          "type": "string"
        },
        "forgejo": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "credential_command": {
              "default": "",
              "description": "Command that prints a Forgejo token on stdout.",
              "type": "string"
            },
            "fj_cli_tokens": {
              "default": true,
              "description": "Read Forgejo tokens that the fj CLI stores in its `keys.json` file.",
              "type": "boolean"
            },
            "use_git_credentials": {
              "default": false,
              "description": "Get Forgejo tokens from your Git credential helpers with `git credential fill`.",
              "type": "boolean"
            }
          }
        },
        "github": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "credential_command": {
              "default": "",
              "description": "Command that prints a GitHub token on stdout.",
              "type": "string"
            },
            "gh_cli_tokens": {
              "default": true,
              "description": "Read GitHub tokens that the gh CLI stores in its `hosts.yml` file.",
              "type": "boolean"
            },
            "github_attestations": {
              "default": true,
              "description": "Verify GitHub artifact attestations for github backend tools.",
              "type": "boolean"
            },
            "oauth_api_url": {
              "default": "https://api.github.com",
              "description": "GitHub API base URL mise uses to validate native OAuth tokens.",
              "type": "string"
            },
            "oauth_auth_url": {
              "default": "https://github.com/login",
              "description": "GitHub OAuth endpoint base URL for the native device flow.",
              "type": "string"
            },
            "oauth_cache_get": {
              "default": "",
              "description": "Command that prints the native GitHub OAuth refresh tokens stored by github.oauth_cache_set.",
              "type": "string"
            },
            "oauth_cache_secure_enclave": {
              "default": false,
              "description": "Keep the native GitHub OAuth refresh token behind Touch ID in the macOS Secure Enclave.",
              "type": "boolean"
            },
            "oauth_cache_set": {
              "default": "",
              "description": "Command that stores the native GitHub OAuth refresh tokens, read from its stdin.",
              "type": "string"
            },
            "oauth_client_id": {
              "default": "",
              "description": "GitHub App client ID that turns on native OAuth device-flow tokens.",
              "type": "string"
            },
            "oauth_copy_code": {
              "description": "Copy the one-time device code to the clipboard during the native GitHub OAuth device flow.",
              "type": "boolean"
            },
            "oauth_export_env": {
              "default": "GITHUB_TOKEN",
              "description": "Environment variable that mise exports the native GitHub OAuth token under; empty turns the export off.",
              "type": "string"
            },
            "oauth_open_browser": {
              "default": true,
              "description": "Open the verification page in your browser during the 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": "Verify SLSA provenance for github backend tools that name a signer.",
              "type": "boolean"
            },
            "use_git_credentials": {
              "default": false,
              "description": "Get GitHub tokens from your Git credential helpers with `git credential fill`.",
              "type": "boolean"
            }
          }
        },
        "github_attestations": {
          "default": true,
          "description": "Verify GitHub artifact attestations for downloads whose publisher provides them.",
          "type": "boolean"
        },
        "github_relay": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "concurrency": {
              "default": 8,
              "description": "Maximum relayed GitHub requests that run at once, from 1 to 32; more requests fail instead of waiting.",
              "type": "integer"
            },
            "log_format": {
              "default": "text",
              "description": "Format of GitHub relay request logs and the end-of-session summary.",
              "type": "string",
              "enum": ["text", "jsonl"]
            },
            "log_requests": {
              "default": false,
              "description": "Log each relayed GitHub request, without credentials, on this machine's stderr.",
              "type": "boolean"
            },
            "max_duration": {
              "default": "0s",
              "description": "How long a GitHub relay lends access; `0s` lasts until the session ends.",
              "type": "string"
            },
            "request_timeout": {
              "default": "5m",
              "description": "Time limit for one relayed GitHub request, including streaming its response.",
              "type": "string"
            }
          }
        },
        "gitlab": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "credential_command": {
              "default": "",
              "description": "Command that prints a GitLab token on stdout.",
              "type": "string"
            },
            "glab_cli_tokens": {
              "default": true,
              "description": "Read GitLab tokens that the glab CLI stores in its `config.yml` file.",
              "type": "boolean"
            },
            "use_git_credentials": {
              "default": false,
              "description": "Get GitLab tokens from your Git credential helpers with `git credential fill`.",
              "type": "boolean"
            }
          }
        },
        "gix": {
          "default": true,
          "description": "Clone Git repositories with the built-in gix library instead of running `git`.",
          "type": "boolean"
        },
        "global_config_file": {
          "description": "One file to use as the global config instead of the config files in `~/.config/mise`.",
          "type": "string"
        },
        "global_config_root": {
          "description": "Directory used as `config_root` for the global config, such as for `{{config_root}}` in templates.",
          "type": "string"
        },
        "go": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "default_packages_file": {
              "default": "~/.default-go-packages",
              "description": "[deprecated] File listing Go packages to install with every Go version.",
              "type": "string",
              "deprecated": true
            },
            "download_mirror": {
              "default": "https://dl.google.com/go",
              "description": "Base URL that mise downloads Go archives and their checksums from.",
              "type": "string"
            },
            "repo": {
              "default": "https://github.com/golang/go",
              "description": "Git repository mise lists Go versions from.",
              "type": "string"
            },
            "set_gobin": {
              "description": "Set `GOBIN` so `go install` puts binaries in the active Go version's directory.",
              "type": "boolean"
            },
            "set_gopath": {
              "description": "[deprecated] Set `GOPATH` to the `packages` directory inside the active Go install.",
              "type": "boolean",
              "deprecated": true
            },
            "set_goroot": {
              "default": true,
              "description": "Set `GOROOT` to the active Go version's install directory.",
              "type": "boolean"
            },
            "skip_checksum": {
              "description": "Skip SHA-256 verification of Go downloads.",
              "type": "boolean"
            }
          }
        },
        "go_default_packages_file": {
          "description": "File listing Go packages to install with every Go version.",
          "type": "string",
          "deprecated": true
        },
        "go_download_mirror": {
          "description": "Base URL that mise downloads Go archives and their checksums from.",
          "type": "string",
          "deprecated": true
        },
        "go_repo": {
          "description": "Git repository mise lists Go versions from.",
          "type": "string",
          "deprecated": true
        },
        "go_set_gobin": {
          "description": "Set `GOBIN` so `go install` puts binaries in the active Go version's directory.",
          "type": "boolean",
          "deprecated": true
        },
        "go_set_gopath": {
          "description": "[deprecated] Set `GOPATH` to the `packages` directory inside the active Go install.",
          "type": "boolean",
          "deprecated": true
        },
        "go_set_goroot": {
          "description": "Set `GOROOT` to the active Go version's install directory.",
          "type": "boolean",
          "deprecated": true
        },
        "go_skip_checksum": {
          "description": "Skip SHA-256 verification of Go downloads.",
          "type": "boolean",
          "deprecated": true
        },
        "gpg_verify": {
          "description": "Verify OpenPGP signatures of Node.js and Swift downloads.",
          "type": "boolean"
        },
        "history": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "allow_plaintext_history": {
              "default": false,
              "description": "Allow publishing or applying history that holds plaintext copies of files now marked for encryption, or publishing versions that look like they contain secrets.",
              "type": "boolean"
            },
            "describe_command": {
              "default": "",
              "description": "Command, such as an AI agent, that writes the description of each checkpoint the history watcher saves.",
              "type": "string"
            },
            "enabled": {
              "default": true,
              "description": "Record Git checkpoints of tracked files around bootstrap operations and on explicit saves.",
              "type": "boolean"
            },
            "fetch_interval": {
              "default": "15m",
              "description": "How often the history watcher fetches from the setup repository.",
              "type": "string"
            },
            "notify": {
              "default": true,
              "description": "Show a desktop notification when a sync conflict pauses sharing.",
              "type": "boolean"
            },
            "sync": {
              "default": "sync",
              "description": "What the history watcher shares with a connected setup repository on its own.",
              "type": "string",
              "enum": ["sync", "fetch-only", "manual"]
            },
            "sync_interval": {
              "default": "5m",
              "description": "Minimum time between automatic publishes to the setup repository after a save.",
              "type": "string"
            },
            "watch": {
              "type": "object",
              "unevaluatedProperties": false,
              "properties": {
                "debounce": {
                  "default": "2s",
                  "description": "How long a changed file must stay unchanged before the history watcher saves it.",
                  "type": "string"
                },
                "max_interval": {
                  "default": "24h",
                  "description": "Longest save interval the history watcher uses for a file that changes constantly.",
                  "type": "string"
                },
                "reconcile": {
                  "default": "10m",
                  "description": "How often the history watcher rescans all tracked files for changes it missed.",
                  "type": "string"
                }
              }
            }
          }
        },
        "hook_env": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "cache_ttl": {
              "default": "0s",
              "description": "How long the shell hook reuses its last config file check, for slow filesystems such as NFS.",
              "type": "string"
            },
            "chpwd_only": {
              "default": false,
              "description": "Run the shell hook's full config check only when you change directories, not at every prompt.",
              "type": "boolean"
            }
          }
        },
        "http_download_timeout": {
          "default": "30m",
          "description": "Total time allowed to download one file, including retries.",
          "type": "string"
        },
        "http_retries": {
          "default": 3,
          "description": "Number of retries after a transient HTTP failure.",
          "type": "integer"
        },
        "http_timeout": {
          "default": "30s",
          "description": "Timeout for connecting or waiting between reads during HTTP requests.",
          "type": "string"
        },
        "idiomatic_version_file": {
          "description": "[deprecated] No effect; enable idiomatic version files per tool with `idiomatic_version_file_enable_tools`.",
          "type": "boolean",
          "deprecated": true
        },
        "idiomatic_version_file_disable_files": {
          "default": [],
          "description": "Idiomatic version files to ignore for one tool, as `tool:filename` pairs.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "idiomatic_version_file_disable_tools": {
          "default": [],
          "description": "[deprecated] No effect; idiomatic version files are off unless enabled with `idiomatic_version_file_enable_tools`.",
          "type": "array",
          "deprecated": true,
          "items": {
            "type": "string"
          }
        },
        "idiomatic_version_file_enable_tools": {
          "default": [],
          "description": "Tools that read idiomatic version files such as `.node-version` or `.ruby-version`.",
          "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": "Config files and directories mise does not load.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "install_before": {
          "description": "[deprecated] Install only versions released before this date; use `minimum_release_age` instead.",
          "type": "string",
          "deprecated": true
        },
        "install_layout": {
          "description": "[experimental] Name installations by what they are (`identity`) instead of `installs/<tool>/<version>` (`legacy`).",
          "type": "string",
          "enum": ["legacy", "identity"]
        },
        "java": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "shorthand_vendor": {
              "default": "temurin",
              "description": "Vendor used for a Java version without a vendor prefix, such as `java@21`.",
              "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": "[deprecated] No effect; enable idiomatic version files per tool with `idiomatic_version_file_enable_tools`.",
          "type": "boolean",
          "deprecated": true
        },
        "legacy_version_file_disable_tools": {
          "default": [],
          "description": "[deprecated] No effect; idiomatic version files are off unless enabled with `idiomatic_version_file_enable_tools`.",
          "type": "array",
          "deprecated": true,
          "items": {
            "type": "string"
          }
        },
        "libc": {
          "description": "Libc build to install on Linux when a tool publishes both glibc and musl builds.",
          "type": "string",
          "enum": ["glibc", "gnu", "musl"]
        },
        "libgit2": {
          "default": true,
          "description": "Clone Git repositories with the built-in gix library instead of running `git`; same as `gix`.",
          "type": "boolean"
        },
        "locked": {
          "default": false,
          "description": "Require tool versions and download URLs to come from the lockfile.",
          "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 records it.",
          "type": "boolean"
        },
        "lockfile": {
          "description": "Create, read and update `mise.lock` lockfiles for tool versions.",
          "type": "boolean"
        },
        "lockfile_auto_prune": {
          "default": true,
          "description": "Remove lockfile tools that are absent from the active configuration.",
          "type": "boolean"
        },
        "lockfile_mode": {
          "description": "How lockfiles are written: entry by entry, or rebuilt from the current requests.",
          "type": "string",
          "enum": ["merge", "generate"]
        },
        "lockfile_platforms": {
          "description": "Platforms to resolve lockfile URLs and checksums for.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "log_level": {
          "default": "info",
          "description": "Log level for mise's own output.",
          "type": "string",
          "enum": ["trace", "debug", "info", "warn", "error"]
        },
        "minimum_release_age": {
          "description": "Skip versions published more recently than this duration or date.",
          "type": "string"
        },
        "minimum_release_age_excludes": {
          "default": [],
          "description": "Tools and backends that the configured and default `minimum_release_age` do not apply to.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "netrc": {
          "default": true,
          "description": "Use a netrc file for HTTP Basic authentication.",
          "type": "boolean"
        },
        "netrc_file": {
          "description": "Path of the netrc file to use instead of `~/.netrc` (`%USERPROFILE%\\_netrc` on Windows).",
          "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": "Patch files or URLs to apply to the Node.js source before building it.",
              "type": "string"
            },
            "cflags": {
              "description": "Extra `CFLAGS` for compiling Node.js, for example to replace `-O3`.",
              "type": "string"
            },
            "compile": {
              "description": "Compile Node.js from source instead of using a precompiled build.",
              "type": "boolean"
            },
            "concurrency": {
              "description": "Number of parallel jobs (`make -j`) when compiling Node.js.",
              "type": "integer"
            },
            "configure_opts": {
              "description": "Extra arguments for `./configure` when compiling Node.js.",
              "type": "string"
            },
            "corepack": {
              "description": "Run `corepack enable` after installing a Node.js version, so `yarn` and `pnpm` go through Corepack.",
              "type": "boolean"
            },
            "default_packages_file": {
              "description": "[deprecated] File listing npm packages to install globally into each new Node.js version.",
              "type": "string",
              "deprecated": true
            },
            "flavor": {
              "description": "Linux build flavor of Node.js to download, such as `musl` or `glibc-217`.",
              "type": "string"
            },
            "gpg_verify": {
              "description": "Check the OpenPGP signature of the `SHASUMS256.txt` file that `node.verify` checks downloads against.",
              "type": "boolean"
            },
            "make": {
              "description": "Command to run instead of `make` when compiling Node.js, such as `gmake`.",
              "type": "string"
            },
            "make_install_opts": {
              "description": "Extra arguments for `make install` when compiling Node.js.",
              "type": "string"
            },
            "make_opts": {
              "description": "Extra arguments for `make` when compiling Node.js.",
              "type": "string"
            },
            "mirror_url": {
              "description": "Base URL that mise downloads Node.js archives and their `SHASUMS256.txt` checksums from.",
              "type": "string"
            },
            "ninja": {
              "description": "Build Node.js with ninja instead of make when compiling from source.",
              "type": "boolean"
            },
            "nodenv_root": {
              "default": "~/.nodenv",
              "description": "Root directory of nodenv, which `mise sync node --nodenv` imports Node.js versions from.",
              "type": "string"
            },
            "npm_shim": {
              "default": true,
              "description": "Wrap each Node.js version's `npm` so that `npm install -g` runs `mise reshim` afterwards.",
              "type": "boolean"
            },
            "nvm_dir": {
              "default": "~/.nvm",
              "description": "Directory of nvm, which `mise sync node --nvm` imports Node.js versions from.",
              "type": "string"
            },
            "verify": {
              "default": true,
              "description": "Verify downloaded Node.js archives against the SHA-256 checksums in `SHASUMS256.txt`.",
              "type": "boolean"
            }
          }
        },
        "not_found_auto_install": {
          "default": true,
          "description": "Install the tool that provides a command when your shell cannot find that command.",
          "type": "boolean"
        },
        "not_found_auto_install_registry": {
          "default": false,
          "description": "Install an unconfigured tool when exactly one registry entry provides a command your shell cannot find.",
          "type": "boolean"
        },
        "not_found_system_fallback": {
          "default": true,
          "description": "Let a shim run a same-named executable from elsewhere on `PATH` when mise cannot resolve the tool.",
          "type": "boolean"
        },
        "npm": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "bun": {
              "description": "[deprecated] Install `npm:` tools with bun; same as `npm.package_manager = \"bun\"`.",
              "type": "boolean",
              "deprecated": true
            },
            "package_manager": {
              "default": "auto",
              "description": "Package manager that installs `npm:` tools.",
              "type": "string",
              "enum": ["auto", "npm", "aube", "aube_cli", "bun", "pnpm"]
            },
            "shell_out": {
              "default": false,
              "description": "Use the npm CLI instead of mise's built-in client for `npm:` version metadata and default installs.",
              "type": "boolean"
            }
          }
        },
        "oci": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "default_from": {
              "default": "debian:bookworm-slim",
              "description": "[experimental] Base image for `mise oci` builds when neither `[oci].from` nor `--from` sets one.",
              "type": "string"
            },
            "default_mount_point": {
              "default": "/mise",
              "description": "[experimental] Directory inside `mise oci` images that holds tool installs, unless `[oci].mount_point` sets one.",
              "type": "string"
            },
            "insecure_registries": {
              "description": "Registries, as `host` or `host:port`, that mise contacts over plain HTTP instead of HTTPS.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "offline": {
          "description": "Block every HTTP request, so mise uses only installed tools and cached data.",
          "type": "boolean"
        },
        "os": {
          "description": "Operating system of the precompiled binaries mise downloads.",
          "type": "string"
        },
        "otel": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "[experimental] Export OpenTelemetry traces of `mise run`.",
              "type": "boolean"
            },
            "logs": {
              "default": false,
              "description": "[experimental] Export each line of task stdout and stderr as an OpenTelemetry log record.",
              "type": "boolean"
            }
          }
        },
        "override_config_filenames": {
          "default": [],
          "description": "Project config filenames that mise looks for instead of `mise.toml`, `.mise.toml` and the other standard names.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "override_tool_versions_filenames": {
          "default": [],
          "description": "Filenames that mise reads as `.tool-versions` files instead of `.tool-versions`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "packslip": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "exec": {
              "default": false,
              "description": "Let packslip tools run their own executable at install time to generate resources, such as an agent skill.",
              "type": "boolean"
            },
            "stampers": {
              "description": "Hosts that must approve a packslip release before mise lists or installs it, each as `host=PIN`.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "paranoid": {
          "description": "Require explicit, content-bound trust for project config, and re-verify provenance on every install.",
          "type": "boolean"
        },
        "pin": {
          "description": "Make `mise use` write the resolved version, such as `24.14.0` for `node@24`, instead of the requested one.",
          "type": "boolean"
        },
        "pipx": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "registry_url": {
              "description": "Older name for `pypi.registry_url`.",
              "type": "string"
            },
            "uvx": {
              "description": "Older name for `pypi.uvx`.",
              "type": "boolean"
            }
          }
        },
        "plugin_autoupdate_last_check_duration": {
          "default": "7d",
          "description": "[deprecated] Has no effect; it was never implemented.",
          "type": "string",
          "deprecated": true
        },
        "prefer_offline": {
          "description": "Use cached version lists instead of fetching new ones, and go to the network only when nothing is cached.",
          "type": "boolean"
        },
        "prereleases": {
          "description": "Include prereleases in `mise ls-remote`, `latest` and prefix matching for every tool.",
          "type": "boolean"
        },
        "profile": {
          "description": "Older name for the `env` setting; use `MISE_ENV` instead.",
          "type": "string",
          "deprecated": true
        },
        "provenance_api_failures_fatal": {
          "default": true,
          "description": "Fail an install when a provenance API, such as GitHub's attestation API, cannot be reached or queried.",
          "type": "boolean"
        },
        "prune": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "exclude": {
              "default": [],
              "description": "Tools that `mise prune` never removes, such as `node` or `aqua:BurntSushi/ripgrep`.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "pypi": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "registry_url": {
              "description": "Package index URL that `pypi:` tools list versions from, with `{}` in place of the package name.",
              "type": "string"
            },
            "uvx": {
              "description": "Install `pypi:` tools with uv when uv is available, and with pipx otherwise.",
              "type": "boolean"
            }
          }
        },
        "python": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "compile": {
              "description": "Compile Python from source with python-build instead of using a precompiled build.",
              "type": "boolean"
            },
            "default_packages_file": {
              "description": "[deprecated] Requirements file that mise installs with pip into each new Python version.",
              "type": "string",
              "deprecated": true
            },
            "github_attestations": {
              "description": "Verify GitHub artifact attestations of precompiled Python builds from python-build-standalone.",
              "type": "boolean"
            },
            "patch_url": {
              "description": "URL of a patch that python-build applies to every Python version it compiles.",
              "type": "string"
            },
            "patches_directory": {
              "description": "Directory of per-version patches for the Python versions that python-build compiles.",
              "type": "string"
            },
            "precompiled_arch": {
              "description": "Architecture of the python-build-standalone build that mise downloads, such as `x86_64_v3` or `aarch64`.",
              "type": "string"
            },
            "precompiled_flavor": {
              "description": "Build flavor of python-build-standalone to download, such as `install_only` or `freethreaded-install_only_stripped`.",
              "type": "string"
            },
            "precompiled_os": {
              "description": "OS part of the python-build-standalone build name that mise downloads, such as `unknown-linux-musl`.",
              "type": "string"
            },
            "pyenv_repo": {
              "default": "https://github.com/pyenv/pyenv.git",
              "description": "Git repository that mise clones pyenv from to get python-build.",
              "type": "string"
            },
            "uv_venv_auto": {
              "default": false,
              "description": "Activate, and optionally create, the virtualenv of the uv project around the current directory.",
              "enum": [false, "source", "create|source", true],
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string"
                }
              ]
            },
            "uv_venv_create_args": {
              "description": "Arguments for `uv venv` when mise creates a virtualenv with uv.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "venv_create_args": {
              "description": "Arguments for `python -m venv` when `_.python.venv` creates a virtualenv without uv.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "venv_stdlib": {
              "description": "Create `_.python.venv` virtualenvs with `python -m venv` even when uv is installed.",
              "type": "boolean"
            }
          }
        },
        "quiet": {
          "description": "Hide mise's own non-error messages, such as progress and task headers; same as `--quiet`.",
          "type": "boolean"
        },
        "raw": {
          "description": "Connect tasks and install commands directly to the terminal's stdin, stdout and stderr.",
          "type": "boolean"
        },
        "registry_cache_ttl": {
          "description": "How long a downloaded mise registry stays fresh when `registry_floating` is on.",
          "type": "string"
        },
        "registry_floating": {
          "default": false,
          "description": "Use the latest released mise registry and the current aqua registry, not only the copies built into mise.",
          "type": "boolean"
        },
        "ruby": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "apply_patches": {
              "description": "Patch files or URLs to apply to the Ruby source before compiling it, one per line.",
              "type": "string"
            },
            "compile": {
              "description": "Compile Ruby from source instead of using a precompiled build.",
              "type": "boolean"
            },
            "default_packages_file": {
              "default": "~/.default-gems",
              "description": "[deprecated] File listing gems to install into each new Ruby version.",
              "type": "string",
              "deprecated": true
            },
            "github_attestations": {
              "description": "Verify GitHub artifact attestations of precompiled Ruby builds.",
              "type": "boolean"
            },
            "precompiled_arch": {
              "description": "Architecture name of precompiled Ruby builds, such as `x86_64` or `arm64`, used with `ruby.precompiled_os`.",
              "type": "string"
            },
            "precompiled_os": {
              "description": "OS name of precompiled Ruby builds, such as `linux`, used with `ruby.precompiled_arch`.",
              "type": "string"
            },
            "precompiled_url": {
              "default": "jdx/ruby",
              "description": "GitHub repository, as `owner/repo`, or URL template that mise downloads precompiled Ruby builds from.",
              "type": "string"
            },
            "ruby_build_cli_opts": {
              "description": "Options for ruby-build itself, such as `--keep`, passed before the version and install directory.",
              "type": "string"
            },
            "ruby_build_opts": {
              "description": "Arguments for Ruby's `configure`, such as `--enable-yjit`, passed through ruby-build.",
              "type": "string"
            },
            "ruby_build_repo": {
              "default": "https://github.com/rbenv/ruby-build.git",
              "description": "Git repository or ZIP archive URL that mise gets ruby-build from.",
              "type": "string"
            },
            "ruby_install": {
              "description": "Compile Ruby with ruby-install instead of ruby-build.",
              "type": "boolean"
            },
            "ruby_install_opts": {
              "description": "Arguments for Ruby's `configure`, passed through ruby-install.",
              "type": "string"
            },
            "ruby_install_repo": {
              "default": "https://github.com/postmodern/ruby-install.git",
              "description": "Git repository or ZIP archive URL that mise gets ruby-install from.",
              "type": "string"
            },
            "verbose_install": {
              "description": "Show ruby-build's full output while compiling Ruby.",
              "type": "boolean"
            }
          }
        },
        "rust": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "cargo_home": {
              "description": "Directory used as `CARGO_HOME` for the Rust toolchains that mise manages.",
              "type": "string"
            },
            "default_host": {
              "description": "Host triple that mise passes to `rustup init` as `--default-host`.",
              "type": "string"
            },
            "rustup_home": {
              "description": "Directory used as `RUSTUP_HOME` for the Rust toolchains that mise manages.",
              "type": "string"
            }
          }
        },
        "safe": {
          "default": false,
          "description": "Load project config without letting it run code or change the environment, for automation that reads untrusted config.",
          "type": "boolean"
        },
        "sandbox": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "deny_all": {
              "default": false,
              "description": "Deny filesystem access, network access and inherited environment variables 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 that `mise self-update` gets mise releases from.",
              "type": "string"
            },
            "auto": {
              "default": false,
              "description": "Update mise automatically before running eligible commands.",
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string"
                }
              ]
            },
            "check_duration": {
              "default": "7d",
              "description": "How often automatic updates check for a new mise release when `self_update.auto = true`.",
              "type": "string"
            },
            "minimum_release_age": {
              "description": "Skip mise releases published more recently than this, for `mise self-update` and automatic updates.",
              "type": "string"
            },
            "repository": {
              "default": "jdx/mise",
              "description": "GitHub repository, as `owner/repo`, that mise gets its own releases from.",
              "type": "string"
            }
          }
        },
        "shared_install_dirs": {
          "description": "Extra read-only directories that mise searches for installed tool versions.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "shims": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "exclude": {
              "default": [],
              "description": "Command names that mise never creates shims for, so they resolve to whatever else is on `PATH`.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "shims_dir": {
          "description": "Directory where mise writes user shims.",
          "type": "string"
        },
        "shorthands_file": {
          "description": "[deprecated] File of custom tool shorthands; use `[plugins]` instead.",
          "type": "string",
          "deprecated": true
        },
        "silent": {
          "description": "Hide all output from `mise run` and `mise watch`, including what tasks print, except errors; same as `--silent`.",
          "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`, `mise use`, and `mise upgrade`.",
              "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, on every `mise skills sync`.",
              "type": "boolean"
            }
          }
        },
        "slsa": {
          "default": true,
          "description": "Verify SLSA provenance of downloads whose publisher provides it.",
          "type": "boolean"
        },
        "sops": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "age_key": {
              "description": "Private age key for decrypting SOPS files, used before any other key source.",
              "type": "string"
            },
            "age_key_file": {
              "description": "Path of an age key file for decrypting SOPS files, used after `sops.age_key` and before `SOPS_AGE_KEY_FILE`.",
              "type": "string"
            },
            "age_recipients": {
              "description": "[deprecated] Has no effect; mise does not encrypt sops files.",
              "type": "string",
              "deprecated": true
            },
            "rops": {
              "default": true,
              "description": "Decrypt SOPS files with mise's built-in rops library instead of the `sops` CLI.",
              "type": "boolean"
            },
            "strict": {
              "default": true,
              "description": "Fail when a SOPS file cannot be decrypted, instead of skipping it.",
              "type": "boolean"
            }
          }
        },
        "spm": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "artifactbundle_only": {
              "default": false,
              "description": "Install `spm:` tools only from prebuilt artifact bundles, and fail instead of building from source.",
              "type": "boolean"
            }
          }
        },
        "status": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "missing_tools": {
              "default": "if_other_versions_installed",
              "description": "When to warn that tools requested by config are not installed.",
              "type": "string",
              "enum": ["never", "if_other_versions_installed", "always"]
            },
            "show_deps_stale": {
              "default": true,
              "description": "Warn in an activated shell when a `[deps]` provider with `auto = true` is out of date.",
              "type": "boolean"
            },
            "show_env": {
              "description": "When you change directories in an activated shell, list the environment variables that mise adds, changes or removes.",
              "type": "boolean"
            },
            "show_tools": {
              "description": "When you change directories in an activated shell, list the tool versions that become active or inactive.",
              "type": "boolean"
            },
            "truncate": {
              "default": true,
              "description": "Cut the lines from `status.show_env` and `status.show_tools` to the terminal width.",
              "type": "boolean"
            }
          }
        },
        "swift": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "gpg_verify": {
              "description": "Verify the OpenPGP signature of Swift downloads on Linux.",
              "type": "boolean"
            },
            "platform": {
              "description": "Linux distribution build of Swift to download, such as `ubuntu24.04` or `fedora41`.",
              "type": "string"
            }
          }
        },
        "system_config_file": {
          "description": "One file to use as the system config instead of the config files in `/etc/mise`.",
          "type": "string"
        },
        "system_deps": {
          "default": "prompt",
          "description": "What mise does when a plugin's declared system dependencies are missing before it installs a tool.",
          "type": "string",
          "enum": ["prompt", "auto", "warn", "ignore"]
        },
        "system_installs_dir": {
          "description": "Directory that `mise install --system` installs into.",
          "type": "string"
        },
        "system_packages": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "elevate_with": {
              "description": "Command mise uses to get root instead of `sudo`, such as `run0` or `doas`.",
              "type": "string"
            },
            "managers": {
              "description": "Package managers that mise may use for `[bootstrap.packages]` and missing plugin dependencies.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "ostree": {
              "default": "error",
              "description": "What mise does with `dnf:` packages on an image-based Fedora host such as Silverblue or Bazzite.",
              "type": "string",
              "enum": ["error", "layer"]
            },
            "sudo": {
              "default": true,
              "description": "Let mise run `sudo` for steps that need root, such as system packages and `mise install --system`.",
              "type": "boolean"
            }
          }
        },
        "system_shims_dir": {
          "description": "Directory where `mise reshim --system` writes shims for system installs.",
          "type": "string"
        },
        "task": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "auto_infer": {
              "default": [],
              "description": "Workspace providers whose package scripts mise imports as tasks, such as `node`.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "cache": {
              "type": "object",
              "unevaluatedProperties": false,
              "properties": {
                "audit_report": {
                  "description": "[experimental] File that receives every undeclared path found by the `cache.audit` task option.",
                  "type": "string"
                },
                "remote_mode": {
                  "default": "read-write",
                  "description": "[experimental] How mise uses the remote task cache server.",
                  "type": "string",
                  "enum": ["read-write", "read-only", "write-only"]
                },
                "remote_namespace": {
                  "description": "[experimental] Namespace that keeps this project's entries apart on the remote task cache server.",
                  "type": "string"
                },
                "remote_oidc_audience": {
                  "description": "[experimental] Audience of the GitHub Actions OIDC token that mise requests for the remote task cache.",
                  "type": "string"
                },
                "remote_token": {
                  "description": "[experimental] Bearer token that mise sends to the remote task cache server.",
                  "type": "string"
                },
                "remote_token_file": {
                  "description": "[experimental] File that mise reads the remote task cache token from before each request.",
                  "type": "string"
                },
                "remote_url": {
                  "description": "[experimental] Base URL of the remote task cache server.",
                  "type": "string"
                },
                "stats_report": {
                  "description": "[deprecated] Has no effect since the built-in action cache was removed.",
                  "type": "string",
                  "deprecated": true
                }
              }
            },
            "cache_dir": {
              "description": "[experimental] Directory for the task artifact cache.",
              "type": "string"
            },
            "cache_max_age": {
              "description": "[experimental] Remove task artifact cache entries that have not been used for this long.",
              "type": "string"
            },
            "cache_max_size": {
              "description": "[experimental] Maximum total size of the task artifact cache, such as `500MB` or `2GiB`.",
              "type": "string"
            },
            "cache_remote_mode": {
              "description": "Deprecated alias for `task.cache.remote_mode`.",
              "type": "string",
              "deprecated": true,
              "enum": ["read-write", "read-only", "write-only"]
            },
            "cache_remote_namespace": {
              "description": "Deprecated alias for `task.cache.remote_namespace`.",
              "type": "string",
              "deprecated": true
            },
            "cache_remote_oidc_audience": {
              "description": "Deprecated alias for `task.cache.remote_oidc_audience`.",
              "type": "string",
              "deprecated": true
            },
            "cache_remote_token": {
              "description": "Deprecated alias for `task.cache.remote_token`.",
              "type": "string",
              "deprecated": true
            },
            "cache_remote_token_file": {
              "description": "Deprecated alias for `task.cache.remote_token_file`.",
              "type": "string",
              "deprecated": true
            },
            "cache_remote_url": {
              "description": "Deprecated alias for `task.cache.remote_url`.",
              "type": "string",
              "deprecated": true
            },
            "disable_paths": {
              "default": [],
              "description": "Paths that mise does not look for tasks in.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "disable_spec_from_run_scripts": {
              "default": false,
              "description": "Build task usage specs only from the `usage` field, ignoring deprecated `arg()`, `option()` and `flag()` in run scripts.",
              "type": "boolean"
            },
            "monorepo_depth": {
              "default": 5,
              "description": "Maximum directory depth for automatic monorepo discovery, which is deprecated.",
              "type": "integer"
            },
            "monorepo_exclude_dirs": {
              "default": [],
              "description": "Directory names that automatic monorepo discovery skips.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "monorepo_respect_gitignore": {
              "default": true,
              "description": "Skip directories that `.gitignore` files ignore during automatic monorepo discovery.",
              "type": "boolean"
            },
            "output": {
              "description": "Default output style for `mise run`.",
              "type": "string",
              "enum": [
                "prefix",
                "interleave",
                "keep-order",
                "replacing",
                "timed",
                "quiet",
                "silent"
              ]
            },
            "quiet": {
              "default": false,
              "description": "Hide mise's own messages while tasks run, without changing other mise commands.",
              "type": "boolean"
            },
            "remote_no_cache": {
              "description": "Download remote task files and task includes on every run instead of using the cached copy.",
              "type": "boolean"
            },
            "run_auto_install": {
              "default": true,
              "description": "Install missing tools automatically before tasks run.",
              "type": "boolean"
            },
            "show_full_cmd": {
              "description": "Print each task's full command line instead of truncating it to the terminal width.",
              "type": "boolean"
            },
            "skip": {
              "default": [],
              "description": "Names of tasks that `mise run` skips.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "skip_depends": {
              "description": "Run only the tasks named on the command line, skipping their dependencies; same as `mise run --skip-deps`.",
              "type": "boolean"
            },
            "source_freshness_equal_mtime_is_fresh": {
              "default": false,
              "description": "Treat a task as up to date when its newest source and its outputs have the same modification time.",
              "type": "boolean"
            },
            "source_freshness_hash_contents": {
              "default": false,
              "description": "Decide whether a task's sources changed by hashing their contents instead of comparing modification times.",
              "type": "boolean"
            },
            "timeout": {
              "description": "Time limit for a whole `mise run` invocation, across every task it runs.",
              "type": "string"
            },
            "timings": {
              "description": "Print each task's elapsed time when it finishes.",
              "type": "boolean"
            }
          }
        },
        "task_disable_paths": {
          "description": "Deprecated alias for `task.disable_paths`.",
          "type": "array",
          "deprecated": true,
          "items": {
            "type": "string"
          }
        },
        "task_output": {
          "description": "Deprecated alias for `task.output`.",
          "type": "string",
          "deprecated": true
        },
        "task_remote_no_cache": {
          "description": "Deprecated alias for `task.remote_no_cache`.",
          "type": "boolean",
          "deprecated": true
        },
        "task_run_auto_install": {
          "description": "Deprecated alias for `task.run_auto_install`.",
          "type": "boolean",
          "deprecated": true
        },
        "task_show_full_cmd": {
          "description": "Deprecated alias for `task.show_full_cmd`.",
          "type": "boolean",
          "deprecated": true
        },
        "task_skip": {
          "description": "Deprecated alias for `task.skip`.",
          "type": "array",
          "deprecated": true,
          "items": {
            "type": "string"
          }
        },
        "task_skip_depends": {
          "description": "Deprecated alias for `task.skip_depends`.",
          "type": "boolean",
          "deprecated": true
        },
        "task_timeout": {
          "description": "Deprecated alias for `task.timeout`.",
          "type": "string",
          "deprecated": true
        },
        "task_timings": {
          "description": "Deprecated alias for `task.timings`.",
          "type": "boolean",
          "deprecated": true
        },
        "tera_v1": {
          "default": false,
          "description": "[deprecated] Render templates with Tera v1 instead of Tera v2.",
          "type": "boolean",
          "deprecated": true
        },
        "terminal_progress": {
          "default": true,
          "description": "Show install progress in the terminal window's own progress indicator, with OSC 9;4 escape sequences.",
          "type": "boolean"
        },
        "tool_update": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "check_duration": {
              "default": "24h",
              "description": "How often mise checks for a newer version of a global tool that sets `auto_update = true`, or of every global tool with `tool_update.global_auto = true`.",
              "type": "string"
            },
            "global_auto": {
              "default": false,
              "description": "Update every tool in global config automatically, as if each set `auto_update` to this value.",
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "trace": {
          "description": "Set the 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": "Directories whose config files mise trusts without asking.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "unix_default_file_shell_args": {
          "default": "sh",
          "description": "Shell that runs a file task on Unix when the task sets no `shell` and the file has no shebang or known extension.",
          "type": "string"
        },
        "unix_default_inline_shell_args": {
          "default": "sh -o errexit -c",
          "description": "Shell and arguments that run inline scripts on Unix, such as a task's `run`, hooks and `postinstall`.",
          "type": "string"
        },
        "upgrade": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "auto_prune": {
              "default": true,
              "description": "Remove the version that `mise upgrade` replaced once `upgrade.prune_after` has passed.",
              "type": "boolean"
            },
            "prune_after": {
              "default": "24h",
              "description": "Grace period before mise removes a version that `mise upgrade` replaced.",
              "type": "string"
            }
          }
        },
        "url_replacements": {
          "description": "URL patterns and replacements that mise's HTTP client applies before sending a request, for mirrors and proxies.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "use_file_shell_for_executable_tasks": {
          "default": false,
          "description": "Run executable file tasks through a shell instead of executing them directly.",
          "type": "boolean"
        },
        "use_versions_host": {
          "default": true,
          "description": "Get version lists, public GitHub release metadata and attestations from mise-versions before upstream APIs.",
          "type": "boolean"
        },
        "use_versions_host_track": {
          "default": true,
          "description": "Send download statistics to mise-versions after installing a tool.",
          "type": "boolean"
        },
        "verbose": {
          "description": "Show extra output, such as installation logs, and set the log level to debug; same as `--verbose`.",
          "type": "boolean"
        },
        "windows_default_file_shell_args": {
          "default": "cmd /c",
          "description": "Shell that runs a file task on Windows when the task sets no `shell` and the file has no shebang or known extension.",
          "type": "string"
        },
        "windows_default_inline_shell_args": {
          "default": "cmd /c",
          "description": "Shell and arguments that run inline scripts on Windows, such as a task's `run`, hooks and `postinstall`.",
          "type": "string"
        },
        "windows_executable_extensions": {
          "default": ["exe", "bat", "cmd", "com", "ps1", "vbs"],
          "description": "File extensions, without the dot, that mise treats as executable on Windows.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "windows_powershell_no_profile": {
          "default": true,
          "description": "Pass `-NoProfile` to the PowerShell (`pwsh` or `powershell`) that mise starts, so startup profiles are skipped.",
          "type": "boolean"
        },
        "windows_shim_mode": {
          "default": "exe",
          "description": "How mise creates shims on Windows.",
          "type": "string",
          "enum": ["exe", "file", "hardlink", "symlink"]
        },
        "write_targets": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "dotfiles": {
              "description": "Global config file where `mise dot add` creates new `[dotfiles]` entries.",
              "type": "string"
            },
            "packages": {
              "description": "Global config file where `--global` package commands create new `[bootstrap.packages]` entries.",
              "type": "string"
            },
            "tools": {
              "description": "Global config file where `mise use --global` creates new `[tools]` entries.",
              "type": "string"
            }
          }
        },
        "yes": {
          "description": "Answer yes to every confirmation prompt, as `--yes` does.",
          "type": "boolean"
        },
        "zig": {
          "type": "object",
          "unevaluatedProperties": false,
          "properties": {
            "use_community_mirrors": {
              "default": true,
              "description": "Download Zig from the community mirrors that ziglang.org recommends before trying ziglang.org itself.",
              "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": "scripts or task references to run",
          "items": {
            "$ref": "#/$defs/task_run_entry"
          },
          "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": [
                {
                  "$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)",
                  "items": {
                    "oneOf": [
                      {
                        "description": "environment file to load (dotenv, json, yaml, or toml)",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/env_directive"
                      }
                    ]
                  },
                  "type": "array"
                }
              ]
            },
            "source": {
              "oneOf": [
                {
                  "$ref": "#/$defs/env_directive"
                },
                {
                  "description": "bash script to load",
                  "type": "string"
                },
                {
                  "description": "bash scripts to load",
                  "items": {
                    "oneOf": [
                      {
                        "description": "bash script to load",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/env_directive"
                      }
                    ]
                  },
                  "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"
              },
              "prompt": {
                "description": "question to ask once, on a machine with no saved answer, when a command is run with a prompt flag such as mise bootstrap --prompt-vars",
                "type": "string"
              },
              "redact": {
                "$ref": "#/$defs/env_redact"
              }
            },
            "required": ["default"],
            "unevaluatedProperties": false
          },
          {
            "type": "object",
            "properties": {
              "prompt": {
                "description": "question to ask once, on a machine with no saved answer, when a command is run with a prompt flag such as mise bootstrap --prompt-vars",
                "type": "string"
              },
              "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, git repository URLs using git:: prefix (e.g., git::https://github.com/org/repo.git//path?ref=branch), or OCI artifacts using oci:: prefix (e.g., oci::ghcr.io/org/tasks:1.0.0)",
          "items": {
            "description": "file/directory root to include in task execution. Supports local paths, git URLs (git::https://github.com/org/repo.git//path?ref=branch), and OCI artifacts (oci::ghcr.io/org/tasks:1.0.0)",
            "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"
          }
        },
        "path_aliases": {
          "description": "Short names for configured monorepo task roots. Keys are single path segments; values are paths in config_roots.",
          "type": "object",
          "additionalProperties": {
            "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": "Task defaults applied by task name across inferred and explicit workspace projects",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/task_template"
          }
        },
        "projects": {
          "description": "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": {
                "auto_update": {
                  "description": "update this tool before it runs when its check is due; true, or a check interval such as \"12h\". Only honored in global config",
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "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",
                  "oneOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "pattern": "^[^/\\\\]+$"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "^[^/\\\\]+$"
                      }
                    }
                  ]
                },
                "postinstall": {
                  "description": "command to run after tool installation, or on every install when requested",
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "run": {
                          "type": "string"
                        },
                        "when": {
                          "type": "string",
                          "enum": ["install", "always"],
                          "default": "install"
                        }
                      },
                      "required": ["run"],
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          ],
          "type": "object",
          "unevaluatedProperties": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "array"
              },
              {
                "type": "object",
                "additionalProperties": true
              }
            ]
          }
        }
      ]
    },
    "tool_bool": {
      "description": "a boolean, also accepted as the strings true/false or the integers 1/0",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string",
          "pattern": "^\\s*([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee]|1|0)\\s*$"
        },
        {
          "type": "integer",
          "enum": [0, 1]
        }
      ]
    },
    "tool_bool_text": {
      "description": "a boolean, also accepted as the string true or false",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string",
          "pattern": "^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$"
        }
      ]
    },
    "tool_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "tool_forge_options": {
      "type": "object",
      "properties": {
        "version_prefix": {
          "description": "release tag prefix stripped from versions and re-added when resolving tags",
          "type": "string"
        },
        "asset_pattern": {
          "description": "glob (* and ?) matched against release asset names, tera templated; replaces autodetection",
          "type": "string"
        },
        "additional_asset_patterns": {
          "description": "extra archives from the same release extracted over the primary asset, in order",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "matching": {
          "description": "substring an asset name must contain, applied before platform autodetection",
          "type": "string"
        },
        "matching_regex": {
          "description": "regex an asset name must match, applied before platform autodetection",
          "type": "string"
        },
        "no_app": {
          "description": "penalize macos .app bundle assets during autodetection",
          "$ref": "#/$defs/tool_bool"
        },
        "filter_bins": {
          "description": "only expose these binaries on PATH",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "format": {
          "description": "force the archive format instead of detecting it from the file name",
          "type": "string",
          "enum": [
            "tar.gz",
            "tgz",
            "gz",
            "tar.xz",
            "txz",
            "xz",
            "tar.bz2",
            "tbz2",
            "tbz",
            "bz2",
            "tar.zst",
            "tzst",
            "zst",
            "tar",
            "zip",
            "vsix",
            "7z",
            "tar.br",
            "tbr",
            "br",
            "tar.lz4",
            "tlz4",
            "lz4",
            "tar.sz",
            "tsz",
            "sz",
            "rar",
            "raw"
          ]
        },
        "checksum": {
          "description": "expected artifact digest as algo:hash (sha256, sha512, sha1, md5, blake3)",
          "type": "string"
        },
        "size": {
          "description": "expected artifact size in bytes",
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ]
        },
        "strip_components": {
          "description": "leading directory components to strip on extract (auto 1 for single-root archives)",
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ]
        },
        "bin": {
          "description": "executable name (or safe relative path) to install the downloaded binary as",
          "type": "string"
        },
        "rename_exe": {
          "description": "rename the extracted executable: a name, or a table of glob = new name",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          ]
        },
        "bin_path": {
          "description": "directory inside the install that contains binaries (tera templated)",
          "type": "string"
        }
      }
    },
    "tool_github_options": {
      "type": "object",
      "properties": {
        "api_url": {
          "description": "api base url, for github enterprise or self-hosted instances",
          "type": "string"
        },
        "github_attestations": {
          "description": "verify github artifact attestations when available",
          "$ref": "#/$defs/tool_bool"
        },
        "slsa_signer_identity": {
          "description": "expected fulcio certificate identity for slsa provenance, tera templated",
          "type": "string"
        },
        "slsa_signer_issuer": {
          "description": "expected oidc issuer for slsa provenance; requires slsa_signer_identity",
          "type": "string"
        }
      }
    },
    "tool_forge_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "asset_pattern": {
            "$ref": "#/$defs/tool_forge_options/properties/asset_pattern"
          },
          "additional_asset_patterns": {
            "$ref": "#/$defs/tool_forge_options/properties/additional_asset_patterns"
          },
          "url": {
            "description": "direct download url for this platform, tera templated; skips release asset selection",
            "type": "string"
          },
          "no_app": {
            "$ref": "#/$defs/tool_forge_options/properties/no_app"
          },
          "filter_bins": {
            "$ref": "#/$defs/tool_forge_options/properties/filter_bins"
          },
          "checksum": {
            "$ref": "#/$defs/tool_forge_options/properties/checksum"
          },
          "size": {
            "$ref": "#/$defs/tool_forge_options/properties/size"
          },
          "strip_components": {
            "$ref": "#/$defs/tool_forge_options/properties/strip_components"
          },
          "bin": {
            "$ref": "#/$defs/tool_forge_options/properties/bin"
          },
          "rename_exe": {
            "$ref": "#/$defs/tool_forge_options/properties/rename_exe"
          },
          "bin_path": {
            "$ref": "#/$defs/tool_forge_options/properties/bin_path"
          },
          "format": {
            "$ref": "#/$defs/tool_forge_options/properties/format"
          }
        }
      }
    },
    "tool_github": {
      "description": "a tool installed with the github backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_forge_options"
            },
            {
              "$ref": "#/$defs/tool_github_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_forge_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_forge_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_gitlab_options": {
      "type": "object",
      "properties": {
        "api_url": {
          "description": "api base url, for self-hosted gitlab instances",
          "type": "string"
        }
      }
    },
    "tool_gitlab": {
      "description": "a tool installed with the gitlab backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_forge_options"
            },
            {
              "$ref": "#/$defs/tool_gitlab_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_forge_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_forge_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_forgejo_options": {
      "type": "object",
      "properties": {
        "api_url": {
          "description": "api base url, for self-hosted forgejo or gitea instances",
          "type": "string"
        }
      }
    },
    "tool_forgejo": {
      "description": "a tool installed with the forgejo backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_forge_options"
            },
            {
              "$ref": "#/$defs/tool_forgejo_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_forge_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_forge_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_ubi_options": {
      "type": "object",
      "properties": {
        "exe": {
          "description": "name of the executable inside the archive to extract",
          "type": "string"
        },
        "rename_exe": {
          "description": "name to give the extracted executable",
          "type": "string"
        },
        "matching": {
          "description": "substring to match release filenames when several match the os and arch",
          "type": "string"
        },
        "matching_regex": {
          "description": "regex release filenames must match before os and arch matching",
          "type": "string"
        },
        "provider": {
          "description": "forge used to fetch releases and assets",
          "type": "string",
          "enum": ["github", "gitlab"]
        },
        "api_url": {
          "description": "provider api base url, for self-hosted instances",
          "type": "string"
        },
        "tag_regex": {
          "description": "regex release tags must match to be listed as versions",
          "type": "string"
        },
        "extract_all": {
          "description": "extract every file in the archive instead of only the binary",
          "$ref": "#/$defs/tool_bool"
        },
        "bin_path": {
          "description": "directory in the install containing binaries, used with extract_all",
          "type": "string"
        }
      }
    },
    "tool_ubi_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "bin_path": {
            "$ref": "#/$defs/tool_ubi_options/properties/bin_path"
          }
        }
      }
    },
    "tool_ubi": {
      "description": "a tool installed with the ubi backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_ubi_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_ubi_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_ubi_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_http_options": {
      "type": "object",
      "properties": {
        "url": {
          "description": "download url, tera templated, http(s) or file://; required for each platform",
          "type": "string"
        },
        "checksum": {
          "description": "expected artifact digest as algo:hash",
          "type": "string"
        },
        "checksum_url": {
          "description": "checksum file or manifest url, used by mise lock without downloading",
          "type": "string"
        },
        "checksum_expr": {
          "description": "expr-lang expression extracting algo:hash from the checksum_url manifest",
          "type": "string"
        },
        "headers": {
          "description": "request headers sent with the download, version_list_url and checksum_url requests; values are tera templated (e.g. Bearer {{ env.TOKEN }})",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "headers_forward": {
          "description": "hosts each header in headers may follow a redirect to; exact hosts or *.suffix, and a header with no entry is never forwarded",
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          }
        },
        "size": {
          "description": "expected artifact size in bytes",
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ]
        },
        "format": {
          "description": "force the archive format instead of detecting it from the url",
          "type": "string",
          "enum": [
            "tar.gz",
            "tgz",
            "gz",
            "tar.xz",
            "txz",
            "xz",
            "tar.bz2",
            "tbz2",
            "tbz",
            "bz2",
            "tar.zst",
            "tzst",
            "zst",
            "tar",
            "zip",
            "vsix",
            "7z",
            "tar.br",
            "tbr",
            "br",
            "tar.lz4",
            "tlz4",
            "lz4",
            "tar.sz",
            "tsz",
            "sz",
            "rar",
            "raw"
          ]
        },
        "strip_components": {
          "description": "leading directory components to strip on extract (auto 1 for single-root archives)",
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ]
        },
        "bin": {
          "description": "name for a downloaded raw or compressed single binary (ignored for archives)",
          "type": "string"
        },
        "rename_exe": {
          "description": "rename the extracted executable: a name, or a table of glob = new name",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          ]
        },
        "bin_path": {
          "description": "directory inside the install that contains binaries (tera templated)",
          "type": "string"
        },
        "shared_extraction": {
          "description": "share extracted content between installs with identical artifacts",
          "$ref": "#/$defs/tool_bool"
        },
        "windows_script_interpreter": {
          "description": "windows only: write a .cmd launcher running the raw script with this interpreter",
          "type": "string"
        },
        "version_list_url": {
          "description": "url returning the version list (text, json or html)",
          "type": "string"
        },
        "version_regex": {
          "description": "regex extracting versions from the list (first capture group or whole match)",
          "type": "string"
        },
        "version_json_path": {
          "description": "jq-like path extracting versions from json, such as .[].version",
          "type": "string"
        },
        "version_expr": {
          "description": "expr-lang expression post-processing versions (variables: body, versions)",
          "type": "string"
        }
      }
    },
    "tool_http_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "url": {
            "$ref": "#/$defs/tool_http_options/properties/url"
          },
          "checksum": {
            "$ref": "#/$defs/tool_http_options/properties/checksum"
          },
          "checksum_url": {
            "$ref": "#/$defs/tool_http_options/properties/checksum_url"
          },
          "size": {
            "$ref": "#/$defs/tool_http_options/properties/size"
          },
          "format": {
            "$ref": "#/$defs/tool_http_options/properties/format"
          },
          "strip_components": {
            "$ref": "#/$defs/tool_http_options/properties/strip_components"
          },
          "bin": {
            "$ref": "#/$defs/tool_http_options/properties/bin"
          },
          "rename_exe": {
            "$ref": "#/$defs/tool_http_options/properties/rename_exe"
          },
          "bin_path": {
            "$ref": "#/$defs/tool_http_options/properties/bin_path"
          },
          "windows_script_interpreter": {
            "$ref": "#/$defs/tool_http_options/properties/windows_script_interpreter"
          }
        }
      }
    },
    "tool_http": {
      "description": "a tool installed with the http backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_http_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_http_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_http_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_s3_options": {
      "type": "object",
      "properties": {
        "url": {
          "description": "s3://bucket/key object url, tera templated; required for each platform",
          "type": "string"
        },
        "checksum": {
          "description": "expected artifact digest as algo:hash",
          "type": "string"
        },
        "size": {
          "description": "expected artifact size in bytes",
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ]
        },
        "format": {
          "description": "force the archive format when the object key has no usable extension",
          "type": "string",
          "enum": [
            "tar.gz",
            "tgz",
            "gz",
            "tar.xz",
            "txz",
            "xz",
            "tar.bz2",
            "tbz2",
            "tbz",
            "bz2",
            "tar.zst",
            "tzst",
            "zst",
            "tar",
            "zip",
            "vsix",
            "7z",
            "tar.br",
            "tbr",
            "br",
            "tar.lz4",
            "tlz4",
            "lz4",
            "tar.sz",
            "tsz",
            "sz",
            "rar",
            "raw"
          ]
        },
        "strip_components": {
          "description": "leading directory components to strip on extract (auto 1 for single-root archives)",
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ]
        },
        "bin": {
          "description": "executable name (or safe relative path) to install the downloaded binary as",
          "type": "string"
        },
        "rename_exe": {
          "description": "rename the extracted executable: a name, or a table of glob = new name",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          ]
        },
        "bin_path": {
          "description": "directory inside the install that contains binaries (tera templated)",
          "type": "string"
        },
        "region": {
          "description": "aws region used for the s3 client",
          "type": "string"
        },
        "endpoint": {
          "description": "custom s3-compatible endpoint url (minio and similar); enables path-style addressing",
          "type": "string"
        },
        "version_list_url": {
          "description": "s3:// url of a manifest file listing versions",
          "type": "string"
        },
        "version_prefix": {
          "description": "s3 key prefix to list objects under for version discovery",
          "type": "string"
        },
        "version_regex": {
          "description": "regex extracting versions from the manifest or object keys",
          "type": "string"
        },
        "version_json_path": {
          "description": "jq-like path extracting versions from json, such as .[].version",
          "type": "string"
        },
        "version_expr": {
          "description": "expr-lang expression post-processing versions (variables: body, versions)",
          "type": "string"
        }
      }
    },
    "tool_s3_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "url": {
            "$ref": "#/$defs/tool_s3_options/properties/url"
          },
          "checksum": {
            "$ref": "#/$defs/tool_s3_options/properties/checksum"
          },
          "size": {
            "$ref": "#/$defs/tool_s3_options/properties/size"
          },
          "format": {
            "$ref": "#/$defs/tool_s3_options/properties/format"
          },
          "strip_components": {
            "$ref": "#/$defs/tool_s3_options/properties/strip_components"
          },
          "bin": {
            "$ref": "#/$defs/tool_s3_options/properties/bin"
          },
          "rename_exe": {
            "$ref": "#/$defs/tool_s3_options/properties/rename_exe"
          },
          "bin_path": {
            "$ref": "#/$defs/tool_s3_options/properties/bin_path"
          },
          "region": {
            "$ref": "#/$defs/tool_s3_options/properties/region"
          },
          "endpoint": {
            "$ref": "#/$defs/tool_s3_options/properties/endpoint"
          },
          "version_list_url": {
            "$ref": "#/$defs/tool_s3_options/properties/version_list_url"
          },
          "version_prefix": {
            "$ref": "#/$defs/tool_s3_options/properties/version_prefix"
          },
          "version_regex": {
            "$ref": "#/$defs/tool_s3_options/properties/version_regex"
          },
          "version_json_path": {
            "$ref": "#/$defs/tool_s3_options/properties/version_json_path"
          },
          "version_expr": {
            "$ref": "#/$defs/tool_s3_options/properties/version_expr"
          }
        }
      }
    },
    "tool_s3": {
      "description": "a tool installed with the s3 backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_s3_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_s3_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_s3_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_aqua_options": {
      "type": "object",
      "properties": {
        "symlink_bins": {
          "description": "expose only the registry-declared binaries through a filtered bin directory",
          "$ref": "#/$defs/tool_bool"
        },
        "libc": {
          "description": "force strict glibc or musl asset selection on linux",
          "type": "string",
          "enum": ["glibc", "gnu", "musl"]
        },
        "slsa_signer_identity": {
          "description": "expected fulcio certificate subject for slsa provenance; requires slsa_signer_issuer",
          "type": "string"
        },
        "slsa_signer_issuer": {
          "description": "expected oidc issuer for slsa provenance; requires slsa_signer_identity",
          "type": "string"
        },
        "vars": {
          "description": "values for aqua registry template variables",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "tool_aqua": {
      "description": "a tool installed with the aqua backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_aqua_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_cargo_options": {
      "type": "object",
      "properties": {
        "features": {
          "description": "crate features to enable (cargo install --features); skips cargo-binstall",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "default-features": {
          "description": "set to false to pass --no-default-features; skips cargo-binstall",
          "$ref": "#/$defs/tool_bool"
        },
        "bin": {
          "description": "binary to install when a crate has several (cargo install --bin)",
          "type": "string"
        },
        "crate": {
          "description": "crate to install when a git repository contains several",
          "type": "string"
        },
        "locked": {
          "description": "pass --locked to cargo install (default true)",
          "$ref": "#/$defs/tool_bool"
        }
      }
    },
    "tool_cargo_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "bin": {
            "$ref": "#/$defs/tool_cargo_options/properties/bin"
          }
        }
      }
    },
    "tool_cargo": {
      "description": "a tool installed with the cargo backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_cargo_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_cargo_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_cargo_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_npm_options": {
      "type": "object",
      "properties": {
        "allow_builds": {
          "description": "dependency packages whose build scripts are approved; true approves all",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "trust_policy_excludes": {
          "description": "packages or version ranges exempt from aube's trustPolicy no-downgrade check",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "allow_low_downloads": {
          "description": "approve the requested package past aube's reputation checks",
          "$ref": "#/$defs/tool_bool_text"
        },
        "allow_exotic_deps": {
          "description": "dependencies allowed from non-registry sources (git, file, tarball url); true allows all",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "aube_args": {
          "description": "extra arguments for aube add --global (only with npm.package_manager = aube_cli)",
          "type": "string"
        },
        "pnpm_args": {
          "description": "extra arguments for pnpm installs (shell-split)",
          "type": "string"
        },
        "bun_args": {
          "description": "extra arguments for bun installs (shell-split)",
          "type": "string"
        },
        "npm_args": {
          "description": "extra arguments for npm installs (shell-split)",
          "type": "string"
        }
      }
    },
    "tool_npm": {
      "description": "a tool installed with the npm backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_npm_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_pypi_options": {
      "type": "object",
      "properties": {
        "extras": {
          "description": "python package extras to install",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "with": {
          "description": "additional python requirements installed into the tool environment (requires uv)",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "expose": {
          "description": "extra requirements whose executables are exposed (requires uv 0.8.5+)",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "dependency_prereleases": {
          "description": "uv prerelease policy for dependency resolution (requires uv)",
          "type": "string",
          "enum": ["disallow", "allow", "if-necessary", "explicit"]
        },
        "python": {
          "description": "mise-managed CPython version for this tool (minor or exact patch)",
          "type": "string"
        },
        "package_name": {
          "description": "distribution name for git sources, used to attach extras",
          "type": "string"
        },
        "pipx_args": {
          "description": "extra arguments for pipx install (shell-split)",
          "type": "string"
        },
        "uvx": {
          "description": "set to false to install with pipx instead of uv",
          "$ref": "#/$defs/tool_bool"
        },
        "uvx_args": {
          "description": "extra arguments for uv tool install (shell-split)",
          "type": "string"
        },
        "registry_url": {
          "description": "version-listing url containing a {} placeholder for the package name",
          "type": "string"
        }
      }
    },
    "tool_pypi": {
      "description": "a tool installed with the pypi backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_pypi_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_gem_options": {
      "type": "object",
      "properties": {
        "source": {
          "description": "gem registry http(s) url used to resolve and install this gem",
          "type": "string"
        }
      }
    },
    "tool_gem": {
      "description": "a tool installed with the gem backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_gem_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_go_options": {
      "type": "object",
      "properties": {
        "tags": {
          "description": "build tags passed to go install -tags",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        }
      }
    },
    "tool_go": {
      "description": "a tool installed with the go backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_go_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_conda_options": {
      "type": "object",
      "properties": {
        "channel": {
          "description": "conda channel to resolve the package from (default conda-forge)",
          "type": "string"
        }
      }
    },
    "tool_conda": {
      "description": "a tool installed with the conda backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_conda_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_spm_options": {
      "type": "object",
      "properties": {
        "provider": {
          "description": "git host used for release info and assets",
          "type": "string",
          "enum": ["github", "gitlab"]
        },
        "api_url": {
          "description": "provider api url, for self-hosted instances",
          "type": "string"
        },
        "artifactbundle": {
          "description": "true requires an artifactbundle, false forces a source build, unset tries the bundle first",
          "$ref": "#/$defs/tool_bool"
        },
        "artifactbundle_asset": {
          "description": "specific *.artifactbundle.zip release asset to use",
          "type": "string"
        },
        "filter_bins": {
          "description": "executable products to install",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "install_command": {
          "description": "command run in the checkout instead of swift build; incompatible with filter_bins",
          "type": "string"
        }
      }
    },
    "tool_spm_platforms": {
      "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
      "type": "object",
      "propertyNames": {
        "pattern": "^[A-Za-z]+-[A-Za-z0-9_]+$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/$defs/tool_spm_options/properties/provider"
          },
          "api_url": {
            "$ref": "#/$defs/tool_spm_options/properties/api_url"
          },
          "artifactbundle": {
            "$ref": "#/$defs/tool_spm_options/properties/artifactbundle"
          },
          "artifactbundle_asset": {
            "$ref": "#/$defs/tool_spm_options/properties/artifactbundle_asset"
          }
        }
      }
    },
    "tool_spm": {
      "description": "a tool installed with the spm backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_spm_options"
            },
            {
              "properties": {
                "platforms": {
                  "description": "per-platform option overrides",
                  "$ref": "#/$defs/tool_spm_platforms"
                },
                "platform": {
                  "description": "per-platform option overrides (alias of platforms)",
                  "$ref": "#/$defs/tool_spm_platforms"
                }
              }
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_packslip_options": {
      "type": "object",
      "properties": {
        "variant": {
          "description": "publisher-declared alternative build to select, such as fips",
          "type": "string"
        },
        "pubkey": {
          "description": "minisign public key line or path to a .pub file pinning the signer",
          "type": "string"
        },
        "identity": {
          "description": "exact keyless signer certificate identity",
          "type": "string"
        },
        "identity_prefix": {
          "description": "keyless signer certificate identity prefix",
          "type": "string"
        },
        "workflow": {
          "description": "repository workflow file, or a list of them, that signs releases on a tag (or on the ref a name ends with, as in release.yml@refs/heads/main); github.com projects only, not valid with pubkey, identity, identity_prefix, or issuer",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1
            }
          ]
        },
        "list_identity_prefix": {
          "description": "separate identity prefix for the vendor release list; needs an issuer, not valid with pubkey",
          "type": "string"
        },
        "issuer": {
          "description": "oidc issuer for the keyless signer",
          "type": "string"
        },
        "allow_unlogged": {
          "description": "accept key-signed bundles without transparency-log evidence",
          "$ref": "#/$defs/tool_bool"
        },
        "ignore_requirements": {
          "description": "install despite confirmed host requirement failures",
          "$ref": "#/$defs/tool_bool"
        },
        "trust": {
          "description": "vendor exempts this tool from configured packslip stampers",
          "type": "string",
          "enum": ["vendor"]
        }
      }
    },
    "tool_packslip": {
      "description": "a tool installed with the packslip backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_packslip_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_spinel_options": {
      "type": "object",
      "properties": {
        "entrypoint": {
          "description": "ruby file to compile, relative to the repository root (default main.rb)",
          "type": "string"
        },
        "bin": {
          "description": "name of the executable written to bin/ (default: the repository name)",
          "type": "string"
        },
        "tag_prefix": {
          "description": "text before the version in each git tag, such as v",
          "type": "string"
        },
        "source_ref": {
          "description": "full 40-character commit SHA to build instead of the tag",
          "type": "string",
          "pattern": "^[0-9a-fA-F]{40}$"
        },
        "spinel": {
          "description": "spinel compiler to run (default: spinel on PATH)",
          "type": "string"
        }
      }
    },
    "tool_spinel": {
      "description": "a tool installed with the spinel backend",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_spinel_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_core_python_options": {
      "type": "object",
      "properties": {
        "patch_sysconfig": {
          "description": "patch sysconfig paths of precompiled python after install (default true, unix only)",
          "$ref": "#/$defs/tool_bool"
        },
        "virtualenv": {
          "description": "virtualenv path to activate; use env._.python.venv instead",
          "type": "string",
          "deprecated": true
        }
      }
    },
    "tool_core_python": {
      "description": "the core python tool",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_core_python_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_core_java_options": {
      "type": "object",
      "properties": {
        "release_type": {
          "description": "jdk metadata channel: ga (default) or ea for early access builds",
          "type": "string",
          "enum": ["ga", "ea"]
        }
      }
    },
    "tool_core_java": {
      "description": "the core java tool",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_core_java_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_core_rust_options": {
      "type": "object",
      "properties": {
        "profile": {
          "description": "rustup profile to install, such as minimal, default or complete",
          "type": "string"
        },
        "components": {
          "description": "rustup components to install",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "targets": {
          "description": "rustup targets to install, for cross-compilation",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "mr_boxington": {
          "description": "wrap cargo with mr boxington (mbx); needs mr-boxington in tools (default false)",
          "$ref": "#/$defs/tool_bool"
        }
      }
    },
    "tool_core_rust": {
      "description": "the core rust tool",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_core_rust_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "tool_core_dotnet_options": {
      "type": "object",
      "properties": {
        "runtime": {
          "description": "install a shared runtime instead of the sdk; the version is the runtime version",
          "type": "string",
          "enum": ["dotnet", "aspnetcore", "windowsdesktop"]
        }
      }
    },
    "tool_core_dotnet": {
      "description": "the core dotnet tool",
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "allOf": [
            {
              "$ref": "#/$defs/tool"
            },
            {
              "$ref": "#/$defs/tool_core_dotnet_options"
            }
          ],
          "type": "object"
        }
      ]
    },
    "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"]
        },
        "prerelease": {
          "description": "include pre-release versions when listing versions and resolving latest",
          "$ref": "#/$defs/tool_bool"
        },
        "platforms": {
          "description": "per-platform option overrides keyed by <os>-<arch>, such as linux-x64 or macos-arm64",
          "$ref": "#/$defs/tool_platforms"
        },
        "platform": {
          "description": "per-platform option overrides (alias of platforms)",
          "$ref": "#/$defs/tool_platforms"
        }
      },
      "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 optional default value and custom answer labels",
              "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"
                },
                "yes": {
                  "description": "custom label for the affirmative answer",
                  "type": "string"
                },
                "no": {
                  "description": "custom label for the negative answer",
                  "type": "string"
                }
              },
              "required": ["message"],
              "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"
              }
            },
            {
              "$ref": "#/$defs/task_dependency_table"
            }
          ]
        },
        "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"
              }
            },
            {
              "$ref": "#/$defs/task_dependency_table"
            }
          ]
        },
        "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"
            },
            {
              "$ref": "#/$defs/task_dependency_table"
            }
          ]
        },
        "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",
          "patternProperties": {
            "^github:": {
              "$ref": "#/$defs/tool_github"
            },
            "^gitlab:": {
              "$ref": "#/$defs/tool_gitlab"
            },
            "^forgejo:": {
              "$ref": "#/$defs/tool_forgejo"
            },
            "^ubi:": {
              "$ref": "#/$defs/tool_ubi"
            },
            "^http:": {
              "$ref": "#/$defs/tool_http"
            },
            "^s3:": {
              "$ref": "#/$defs/tool_s3"
            },
            "^aqua:": {
              "$ref": "#/$defs/tool_aqua"
            },
            "^cargo:": {
              "$ref": "#/$defs/tool_cargo"
            },
            "^npm:": {
              "$ref": "#/$defs/tool_npm"
            },
            "^(pypi|pipx):": {
              "$ref": "#/$defs/tool_pypi"
            },
            "^gem:": {
              "$ref": "#/$defs/tool_gem"
            },
            "^go:": {
              "$ref": "#/$defs/tool_go"
            },
            "^conda:": {
              "$ref": "#/$defs/tool_conda"
            },
            "^spm:": {
              "$ref": "#/$defs/tool_spm"
            },
            "^packslip:": {
              "$ref": "#/$defs/tool_packslip"
            },
            "^spinel:": {
              "$ref": "#/$defs/tool_spinel"
            },
            "^(core:)?python(\\[.*\\])?$": {
              "$ref": "#/$defs/tool_core_python"
            },
            "^(core:)?java(\\[.*\\])?$": {
              "$ref": "#/$defs/tool_core_java"
            },
            "^(core:)?rust(\\[.*\\])?$": {
              "$ref": "#/$defs/tool_core_rust"
            },
            "^(core:dotnet|dotnet|dotnet-core)(\\[.*\\])?$": {
              "$ref": "#/$defs/tool_core_dotnet"
            }
          }
        },
        "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; `false` is the same as leaving `outputs` unset",
                  "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"
        },
        "skip_if": {
          "description": "shell command checked before the task runs; if it exits 0, the task is skipped and counts as successful",
          "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; not supported yet, so Linux and macOS reject it",
          "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"
        },
        "secrets": {
          "description": "[experimental] Secret keys this task receives when it starts, e.g. [\"DEPLOY_KEY\"]. Dependencies do not inherit them. See `mise secrets ls`.",
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
              }
            }
          ]
        }
      },
      "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,
            "secrets": 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", "auto"],
          "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", "auto"],
              "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"
          }
        }
      ]
    },
    "include": {
      "description": "config files merged into this one, ranking just below it: a local path (relative to this file), git::<url>//<path>.toml?ref=<ref> or oci::<registry>/<repo>[:tag|@sha256:<digest>] (the artifact holds a mise.toml). Paranoid mode requires a commit sha or digest for remote includes and rejects local ones; otherwise a branch or tag is refreshed after fetch_remote_versions_cache",
      "oneOf": [
        {
          "description": "a config fragment",
          "type": "string"
        },
        {
          "description": "config fragments",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "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"
    },
    "experimental_monorepo_root": {
      "description": "deprecated alias of monorepo_root",
      "type": "boolean",
      "deprecated": true
    },
    "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+$"
            }
          }
        }
      ]
    },
    "secrets": {
      "description": "[experimental] Sources for mise secrets: values resolved only when mise starts a task or `mise x` command that was granted them. Project config only.",
      "type": "object",
      "properties": {
        "fnox": {
          "description": "Use fnox (fnox.toml discovered from this config's directory). https://mise.jdx.dev/environments/secrets/fnox.html",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "profile": {
              "type": "string",
              "description": "fnox profile (fnox -P); defaults to FNOX_PROFILE, then \"default\""
            }
          }
        }
      }
    },
    "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"
              },
              "allow_plaintext": {
                "type": "boolean",
                "default": false,
                "description": "allow this directly tracked credential-named file to be saved in plaintext history and any connected origin"
              },
              "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. \"track\" saves the file's history where it is, and \"track-local\" saves it in this machine's local-only history, which is never shared",
                "anyOf": [
                  {
                    "enum": [
                      "symlink",
                      "symlink-each",
                      "copy",
                      "template",
                      "absent",
                      "track",
                      "track-local"
                    ]
                  },
                  {
                    "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"
              },
              "merge": {
                "oneOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "const": "missing"
                  }
                ],
                "description": "edit entry: true sets the keys of source (default: the target's path under dotfiles.root) on a JSON, TOML, or YAML target and leaves the target's other keys to the application that also writes it; \"missing\" sets only the keys the target has no value for; the format comes from the target's extension"
              },
              "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"
                    },
                    "machine": {
                      "type": "boolean",
                      "description": "track mode only: a separate stream on every machine, never applied on another machine; must be the only variant and cannot be combined with encrypt"
                    },
                    "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": [
              {
                "if": {
                  "required": ["merge"],
                  "properties": {
                    "merge": {
                      "enum": [true, "missing"]
                    }
                  }
                },
                "then": {
                  "properties": {
                    "mode": false,
                    "content": false,
                    "permissions": false,
                    "exclude": false,
                    "include": false,
                    "manifest": false,
                    "autosave": false,
                    "encrypt": false,
                    "allow_plaintext": false,
                    "variants": false,
                    "enabled": false,
                    "remove_empty": false,
                    "relative": false,
                    "dot_prefix": false,
                    "group": false,
                    "block": false,
                    "line": false,
                    "position": false,
                    "comment": false
                  }
                }
              },
              {
                "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": {
                        "enum": ["track", "track-local"]
                      }
                    }
                  },
                  {
                    "properties": {
                      "include": false
                    }
                  }
                ]
              },
              {
                "oneOf": [
                  {
                    "required": ["allow_plaintext", "mode"],
                    "properties": {
                      "mode": {
                        "enum": ["track", "track-local"]
                      }
                    }
                  },
                  {
                    "properties": {
                      "allow_plaintext": false
                    }
                  }
                ]
              }
            ],
            "anyOf": [
              {
                "properties": {
                  "encrypt": {
                    "const": false
                  }
                }
              },
              {
                "properties": {
                  "content": false,
                  "block": false,
                  "line": false,
                  "template": false
                }
              }
            ]
          }
        ]
      }
    },
    "dotfile_groups": {
      "type": "object",
      "description": "named directory trees of dotfiles, applied with `mise dotfiles apply` or `mise bootstrap` while [bootstrap] dotfile_groups selects them (or is unset)",
      "propertyNames": {
        "pattern": "^[A-Za-z0-9_.-]+$"
      },
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false,
        "required": ["root"],
        "properties": {
          "root": {
            "type": "string",
            "description": "the directory tree the group deploys; a relative path resolves against dotfiles.root"
          },
          "target": {
            "type": "string",
            "description": "target directory, absolute or starting with ~/",
            "default": "~"
          },
          "mode": {
            "type": "string",
            "description": "how the tree is deployed",
            "enum": ["symlink-each", "copy", "symlink"],
            "default": "symlink-each"
          },
          "exclude": {
            "type": "array",
            "description": "glob patterns of source paths to skip, as for [dotfiles] exclude",
            "items": {
              "type": "string"
            }
          },
          "dot_prefix": {
            "type": "boolean",
            "default": false,
            "description": "deploy each source path component named \"dot-<name>\" as \".<name>\", like GNU Stow's --dotfiles"
          },
          "manifest": {
            "type": "string",
            "description": "source manifest used to select managed files from the tree",
            "enum": ["git"]
          },
          "relative": {
            "type": "boolean",
            "description": "link by a path relative to the link's directory; overrides the dotfiles.relative_symlinks setting (ignored on Windows)"
          },
          "entries": {
            "type": "object",
            "description": "whole-file entries for parts of the tree, keyed by target path inside the group's target and written like [dotfiles] entries; each is cut out of the walk. A missing source is found under the root at the entry's path inside the target, and a relative source starts at the root",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string",
                  "description": "source path, relative to the group root"
                },
                {
                  "type": "object",
                  "description": "whole-file entry, as in [dotfiles]"
                }
              ]
            }
          }
        }
      }
    },
    "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"
              },
              "os": {
                "$ref": "#/$defs/os_filter",
                "description": "OS or OS/arch selectors; entries on other platforms are skipped"
              },
              "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"
              },
              "os": {
                "$ref": "#/$defs/os_filter",
                "description": "OS or OS/arch selectors; entries on other platforms are skipped"
              },
              "notify": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          }
        },
        "dotfile_groups": {
          "type": "array",
          "description": "the dotfile groups this machine applies; when unset, every group applies. Entries without a group always apply, and a more local config's list replaces the others",
          "items": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_.-]+$"
          }
        },
        "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", "tool-update"],
                "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
          }
        },
        "compose": {
          "type": "object",
          "description": "Docker Compose projects managed with `mise bootstrap compose`, keyed by project name. Text fields support Tera templates.",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "project_dir": {
                "type": "string",
                "minLength": 1,
                "description": "absolute directory containing the Compose project"
              },
              "files": {
                "type": "array",
                "description": "Compose file paths relative to project_dir unless absolute",
                "items": {
                  "type": "string"
                }
              },
              "env_files": {
                "type": "array",
                "description": "environment file paths relative to project_dir unless absolute",
                "items": {
                  "type": "string"
                }
              },
              "project_name": {
                "type": "string",
                "description": "optional Compose project name"
              },
              "profiles": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "services": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "oneshot": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "state": {
                "type": "string",
                "enum": ["running", "stopped", "absent"],
                "default": "running"
              },
              "pull": {
                "type": "string",
                "enum": ["always", "missing", "never"],
                "default": "missing"
              },
              "build": {
                "type": "string",
                "enum": ["auto", "always", "never"],
                "default": "auto"
              },
              "recreate": {
                "type": "string",
                "enum": ["auto", "always", "never"],
                "default": "auto"
              },
              "wait": {
                "type": "boolean",
                "default": true
              },
              "wait_timeout": {
                "type": "integer",
                "minimum": 0,
                "description": "wait timeout in seconds"
              },
              "timeout": {
                "type": "integer",
                "minimum": 0,
                "description": "Compose shutdown timeout in seconds"
              },
              "remove_orphans": {
                "type": "boolean",
                "default": true
              },
              "renew_anonymous_volumes": {
                "type": "boolean",
                "default": false
              },
              "down_volumes": {
                "type": "boolean",
                "default": false
              },
              "down_images": {
                "type": "string",
                "enum": ["local", "all"]
              },
              "sudo": {
                "type": "boolean",
                "default": false
              },
              "command": {
                "type": "array",
                "description": "standalone Compose command",
                "items": {
                  "type": "string"
                }
              },
              "engine_command": {
                "type": "array",
                "description": "container engine command",
                "items": {
                  "type": "string"
                }
              },
              "depends_on": {
                "type": "array",
                "description": "bootstrap resource dependencies",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": ["project_dir"],
            "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)"
                  },
                  "appdir": {
                    "type": "string",
                    "minLength": 1,
                    "description": "brew-cask only: application directory for this cask and its cask dependencies; takes precedence over MISE_BREW_CASK_OPT_APPDIR"
                  },
                  "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"
                  },
                  "channel": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9._][A-Za-z0-9._-]*(/[A-Za-z0-9._][A-Za-z0-9._-]*){0,2}$",
                    "description": "snap only: channel to install from and track, e.g. latest/stable or 22/edge"
                  },
                  "classic": {
                    "type": "boolean",
                    "description": "snap only: install with classic confinement"
                  },
                  "state": {
                    "type": "string",
                    "description": "desired package state; pacman, scoop, snap, and zypper support 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"
                      }
                    ]
                  }
                }
              }
            },
            "login_items": {
              "type": "object",
              "description": "applications to open at login (System Settings > General > Login Items & Extensions)",
              "properties": {
                "apps": {
                  "type": "array",
                  "description": "application bundles to open at login: absolute or `~/` paths ending in `.app`",
                  "items": {
                    "type": "string"
                  }
                },
                "exclusive": {
                  "type": "boolean",
                  "description": "also remove login items that are not declared (default: false, so apps that register themselves are left alone)"
                }
              },
              "additionalProperties": false
            },
            "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"
                        }
                      },
                      "state": {
                        "type": "string",
                        "enum": ["present", "absent"],
                        "default": "present",
                        "description": "present writes and manages the unit; absent stops, disables, and removes both dev.mise.<name>.service and dev.mise.<name>.timer"
                      }
                    },
                    "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"]
                            }
                          ]
                        },
                        "properties": {
                          "state": {
                            "const": "present"
                          }
                        }
                      },
                      {
                        "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"]
                            }
                          ]
                        },
                        "properties": {
                          "state": {
                            "const": "present"
                          }
                        }
                      },
                      {
                        "title": "absent systemd unit",
                        "required": ["state"],
                        "properties": {
                          "state": {
                            "const": "absent"
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "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"
            }
          }
        },
        "apt": {
          "type": "object",
          "description": "apt-specific bootstrap package config",
          "properties": {
            "sources": {
              "type": "object",
              "description": "apt repositories added before apt packages are installed, keyed by a name used in the files mise writes",
              "propertyNames": {
                "pattern": "^[A-Za-z0-9_-][A-Za-z0-9_.-]*$"
              },
              "additionalProperties": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "ppa": {
                    "type": "string",
                    "description": "Launchpad PPA as owner/archive, such as git-core/ppa; added on Ubuntu and Ubuntu-based releases only"
                  },
                  "uris": {
                    "type": "string",
                    "description": "repository URL(s), space-separated"
                  },
                  "suites": {
                    "type": "string",
                    "description": "suite(s), space-separated; defaults to the release codename"
                  },
                  "components": {
                    "type": "string",
                    "description": "component(s), space-separated; defaults to main, or none when suites is a path ending in /"
                  },
                  "architectures": {
                    "type": "string",
                    "description": "architecture(s) to fetch, space-separated"
                  },
                  "key": {
                    "type": "string",
                    "description": "http(s) URL of the repository's signing key, armored or binary"
                  },
                  "fingerprint": {
                    "description": "full primary key fingerprint(s) the signing key must have; required with key",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  }
                },
                "oneOf": [
                  {
                    "required": ["ppa"],
                    "properties": {
                      "fingerprint": {
                        "type": "string"
                      }
                    },
                    "not": {
                      "anyOf": [
                        {
                          "required": ["uris"]
                        },
                        {
                          "required": ["suites"]
                        },
                        {
                          "required": ["components"]
                        },
                        {
                          "required": ["architectures"]
                        },
                        {
                          "required": ["key"]
                        }
                      ]
                    }
                  },
                  {
                    "required": ["uris", "key", "fingerprint"],
                    "not": {
                      "required": ["ppa"]
                    }
                  }
                ]
              }
            }
          }
        },
        "dnf": {
          "type": "object",
          "description": "dnf-specific bootstrap package config",
          "properties": {
            "repos": {
              "type": "object",
              "description": "dnf repositories enabled before dnf packages are installed, keyed by a name for the entry",
              "propertyNames": {
                "pattern": "^[A-Za-z0-9_-][A-Za-z0-9_.-]*$"
              },
              "additionalProperties": {
                "type": "object",
                "additionalProperties": false,
                "required": ["copr"],
                "properties": {
                  "copr": {
                    "type": "string",
                    "description": "COPR project as owner/project or @group/project, such as scottames/ghostty; enabled as dnf copr enable would"
                  }
                }
              }
            }
          }
        },
        "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
        },
        "secrets": {
          "type": "object",
          "description": "sensitive bootstrap inputs read from environment variables, keyed by secret name",
          "propertyNames": {
            "pattern": "^[A-Za-z0-9_.-]+$",
            "description": "secret name using ASCII letters, digits, '.', '_' or '-'"
          },
          "additionalProperties": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
                "description": "environment variable that provides this secret's value"
              },
              {
                "type": "object",
                "properties": {
                  "env": {
                    "type": "string",
                    "pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
                    "description": "environment variable that provides this secret's value"
                  },
                  "description": {
                    "type": "string",
                    "description": "human-readable description shown in status output and prompts"
                  },
                  "allow_empty": {
                    "type": "boolean",
                    "default": false,
                    "description": "accept an empty value; empty values are rejected by default"
                  }
                },
                "required": ["env"],
                "additionalProperties": false
              }
            ]
          }
        },
        "groups": {
          "type": "object",
          "description": "[experimental] Linux groups that bootstrap creates or removes, keyed by group name",
          "propertyNames": {
            "pattern": "^[A-Za-z_][A-Za-z0-9_-]*\\$?$",
            "maxLength": 32,
            "description": "at most 32 ASCII letters, digits, '_' or '-', starting with a letter or '_', with an optional trailing '$'"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "state": {
                "enum": ["present", "absent"],
                "default": "present",
                "description": "whether the group should exist"
              },
              "gid": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295,
                "description": "numeric group ID"
              },
              "system": {
                "type": "boolean",
                "default": false,
                "description": "create a system group"
              }
            },
            "additionalProperties": false,
            "if": {
              "required": ["state"],
              "properties": {
                "state": {
                  "const": "absent"
                }
              },
              "additionalProperties": true
            },
            "then": {
              "properties": {
                "gid": false,
                "system": {
                  "const": false
                }
              },
              "additionalProperties": true
            }
          }
        },
        "users": {
          "type": "object",
          "description": "[experimental] Linux users that bootstrap creates or removes, keyed by user name",
          "propertyNames": {
            "pattern": "^[A-Za-z_][A-Za-z0-9_-]*\\$?$",
            "maxLength": 32,
            "description": "at most 32 ASCII letters, digits, '_' or '-', starting with a letter or '_', with an optional trailing '$'"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "state": {
                "enum": ["present", "absent"],
                "default": "present",
                "description": "whether the user should exist"
              },
              "uid": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295,
                "description": "numeric user ID"
              },
              "group": {
                "type": "string",
                "pattern": "^[A-Za-z_][A-Za-z0-9_-]*\\$?$",
                "maxLength": 32,
                "description": "primary group; required for a present user"
              },
              "groups": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[A-Za-z_][A-Za-z0-9_-]*\\$?$",
                  "maxLength": 32
                },
                "description": "supplementary groups"
              },
              "exclusive_groups": {
                "type": "boolean",
                "default": false,
                "description": "remove the user from supplementary groups not listed in groups"
              },
              "home": {
                "type": "string",
                "pattern": "^/[^:\\r\\n]*$",
                "description": "home directory; an absolute path without ':', CR or LF"
              },
              "shell": {
                "type": "string",
                "pattern": "^/[^:\\r\\n]*$",
                "description": "login shell; an absolute path without ':', CR or LF"
              },
              "comment": {
                "type": "string",
                "pattern": "^[^:\\r\\n]*$",
                "description": "comment (GECOS) field, without ':', CR or LF"
              },
              "system": {
                "type": "boolean",
                "default": false,
                "description": "create a system user"
              },
              "create_home": {
                "type": "boolean",
                "description": "create the home directory"
              },
              "move_home": {
                "type": "boolean",
                "default": false,
                "description": "move the existing home directory to home"
              },
              "remove_home": {
                "type": "boolean",
                "default": false,
                "description": "remove the home directory when removing the user"
              }
            },
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "required": ["state"],
                  "properties": {
                    "state": {
                      "const": "absent"
                    }
                  },
                  "additionalProperties": true
                },
                "then": {
                  "properties": {
                    "uid": false,
                    "group": false,
                    "groups": false,
                    "home": false,
                    "shell": false,
                    "comment": false,
                    "create_home": false,
                    "exclusive_groups": {
                      "const": false
                    },
                    "system": {
                      "const": false
                    },
                    "move_home": {
                      "const": false
                    }
                  },
                  "additionalProperties": true
                },
                "else": {
                  "required": ["group"],
                  "properties": {
                    "remove_home": {
                      "const": false
                    }
                  },
                  "additionalProperties": true
                }
              },
              {
                "if": {
                  "required": ["exclusive_groups"],
                  "properties": {
                    "exclusive_groups": {
                      "const": true
                    }
                  },
                  "additionalProperties": true
                },
                "then": {
                  "required": ["groups"],
                  "additionalProperties": true
                }
              },
              {
                "if": {
                  "required": ["move_home"],
                  "properties": {
                    "move_home": {
                      "const": true
                    }
                  },
                  "additionalProperties": true
                },
                "then": {
                  "required": ["home"],
                  "additionalProperties": true
                }
              }
            ]
          }
        }
      }
    },
    "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"
          }
        },
        "git_email": {
          "type": "string",
          "description": "email used for history commit authors and committers; {hostname} expands to this machine's hostname"
        },
        "machine": {
          "type": "string",
          "description": "this machine's name in per-machine streams (variants = [{ machine = true }]) instead of the name generated with the history store",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$"
        },
        "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": {
      "patternProperties": {
        "^github:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_github"
              }
            },
            {
              "$ref": "#/$defs/tool_github"
            }
          ]
        },
        "^gitlab:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_gitlab"
              }
            },
            {
              "$ref": "#/$defs/tool_gitlab"
            }
          ]
        },
        "^forgejo:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_forgejo"
              }
            },
            {
              "$ref": "#/$defs/tool_forgejo"
            }
          ]
        },
        "^ubi:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_ubi"
              }
            },
            {
              "$ref": "#/$defs/tool_ubi"
            }
          ]
        },
        "^http:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_http"
              }
            },
            {
              "$ref": "#/$defs/tool_http"
            }
          ]
        },
        "^s3:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_s3"
              }
            },
            {
              "$ref": "#/$defs/tool_s3"
            }
          ]
        },
        "^aqua:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_aqua"
              }
            },
            {
              "$ref": "#/$defs/tool_aqua"
            }
          ]
        },
        "^cargo:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_cargo"
              }
            },
            {
              "$ref": "#/$defs/tool_cargo"
            }
          ]
        },
        "^npm:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_npm"
              }
            },
            {
              "$ref": "#/$defs/tool_npm"
            }
          ]
        },
        "^(pypi|pipx):": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_pypi"
              }
            },
            {
              "$ref": "#/$defs/tool_pypi"
            }
          ]
        },
        "^gem:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_gem"
              }
            },
            {
              "$ref": "#/$defs/tool_gem"
            }
          ]
        },
        "^go:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_go"
              }
            },
            {
              "$ref": "#/$defs/tool_go"
            }
          ]
        },
        "^conda:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_conda"
              }
            },
            {
              "$ref": "#/$defs/tool_conda"
            }
          ]
        },
        "^spm:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_spm"
              }
            },
            {
              "$ref": "#/$defs/tool_spm"
            }
          ]
        },
        "^packslip:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_packslip"
              }
            },
            {
              "$ref": "#/$defs/tool_packslip"
            }
          ]
        },
        "^spinel:": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_spinel"
              }
            },
            {
              "$ref": "#/$defs/tool_spinel"
            }
          ]
        },
        "^(core:)?python(\\[.*\\])?$": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_core_python"
              }
            },
            {
              "$ref": "#/$defs/tool_core_python"
            }
          ]
        },
        "^(core:)?java(\\[.*\\])?$": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_core_java"
              }
            },
            {
              "$ref": "#/$defs/tool_core_java"
            }
          ]
        },
        "^(core:)?rust(\\[.*\\])?$": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_core_rust"
              }
            },
            {
              "$ref": "#/$defs/tool_core_rust"
            }
          ]
        },
        "^(core:dotnet|dotnet|dotnet-core)(\\[.*\\])?$": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/tool_core_dotnet"
              }
            },
            {
              "$ref": "#/$defs/tool_core_dotnet"
            }
          ]
        }
      },
      "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"
              },
              "proxy_idle_timeout": {
                "$ref": "#/$defs/daemon_proxy_idle_timeout"
              }
            },
            "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"
              },
              "proxy_idle_timeout": {
                "$ref": "#/$defs/daemon_proxy_idle_timeout"
              }
            },
            "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"
              },
              "proxy_idle_timeout": {
                "$ref": "#/$defs/daemon_proxy_idle_timeout"
              }
            },
            "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
          }
        ]
      }
    }
  }
}
