{
  "$id": "https://mise.jdx.dev/schema/mise.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "mise",
  "type": "object",
  "$defs": {
    "env": {
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "enum": [false],
            "type": "boolean"
          }
        ]
      },
      "description": "environment variables",
      "properties": {
        "_": {
          "description": "environment modules",
          "properties": {
            "file": {
              "oneOf": [
                {
                  "description": "dotenv file to load",
                  "type": "string"
                },
                {
                  "description": "dotenv files to load",
                  "items": {
                    "description": "dotenv file to load",
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            },
            "path": {
              "oneOf": [
                {
                  "description": "PATH entry to add",
                  "type": "string"
                },
                {
                  "description": "PATH entries to add",
                  "items": {
                    "description": "PATH entry to add",
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            },
            "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"
                        }
                      },
                      "required": ["path"],
                      "type": "object"
                    }
                  ]
                }
              },
              "type": "object"
            },
            "source": {
              "oneOf": [
                {
                  "description": "bash script to load",
                  "type": "string"
                },
                {
                  "description": "bash scripts to load",
                  "items": {
                    "description": "bash script to load",
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "settings": {
      "properties": {
        "activate_aggressive": {
          "description": "Pushes tools' bin-paths to the front of PATH instead of allowing modifications of PATH after activation to take precedence.",
          "type": "boolean"
        },
        "all_compile": {
          "description": "do not use precompiled binaries for any tool",
          "type": "boolean"
        },
        "always_keep_download": {
          "description": "should mise keep downloaded files after installation",
          "type": "boolean"
        },
        "always_keep_install": {
          "description": "should mise keep install files after installation even if the installation fails",
          "type": "boolean"
        },
        "asdf": {
          "default": true,
          "description": "use asdf as a default plugin backend",
          "type": "boolean"
        },
        "asdf_compat": {
          "description": "set to true to ensure .tool-versions will be compatible with asdf",
          "type": "boolean"
        },
        "cache_prune_age": {
          "default": "30d",
          "description": "Delete files in cache that have not been accessed in this duration",
          "type": "string"
        },
        "cargo_binstall": {
          "default": true,
          "description": "Use cargo-binstall instead of cargo install if available",
          "type": "boolean"
        },
        "cd": {
          "description": "Path to change to after launching mise",
          "type": "string"
        },
        "ci": {
          "description": "Set to true if running in a CI environment",
          "type": "boolean"
        },
        "color": {
          "default": true,
          "description": "Use color in mise terminal output",
          "type": "boolean"
        },
        "debug": {
          "description": "Sets log level to debug",
          "type": "boolean"
        },
        "disable_default_shorthands": {
          "description": "Disables built-in shorthands to asdf/vfox plugins",
          "type": "boolean"
        },
        "disable_hints": {
          "default": [],
          "description": "Turns off helpful hints when using different mise features",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "disable_tools": {
          "default": [],
          "description": "Tools defined in mise.toml that should be ignored",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "env_file": {
          "description": "Path to a file containing environment variables.",
          "type": "string"
        },
        "experimental": {
          "description": "Enable experimental mise features which are incomplete or unstable—breakings changes may occur",
          "type": "boolean"
        },
        "go_default_packages_file": {
          "default": "~/.default-go-packages",
          "description": "Path to a file containing default go packages to install when installing go",
          "type": "string"
        },
        "go_download_mirror": {
          "default": "https://dl.google.com/go",
          "description": "Mirror to download go sdk tarballs from.",
          "type": "string"
        },
        "go_repo": {
          "default": "https://github.com/golang/go",
          "description": "URL to fetch go from.",
          "type": "string"
        },
        "go_set_gobin": {
          "description": "Changes where `go install` installs binaries to.",
          "type": "boolean"
        },
        "go_set_gopath": {
          "description": "[deprecated] Set to true to set GOPATH=~/.local/share/mise/installs/go/.../packages.",
          "deprecated": "Use env._go.set_goroot instead.",
          "type": "boolean"
        },
        "go_set_goroot": {
          "default": true,
          "description": "Sets GOROOT=~/.local/share/mise/installs/go/.../.",
          "type": "boolean"
        },
        "go_skip_checksum": {
          "description": "Set to true to skip checksum verification when downloading go sdk tarballs.",
          "type": "boolean"
        },
        "http_timeout": {
          "default": 30,
          "description": "Timeout in seconds for all HTTP requests in mise.",
          "type": "number"
        },
        "jobs": {
          "default": 4,
          "description": "How many jobs to run concurrently such as tool installs.",
          "type": "number"
        },
        "legacy_version_file": {
          "default": true,
          "description": "Set to false to disable the idiomatic version files such as .node-version, .ruby-version, etc.",
          "type": "boolean"
        },
        "legacy_version_file_disable_tools": {
          "default": [],
          "description": "Specific tools to disable idiomatic version files for.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "libgit2": {
          "default": true,
          "description": "Use libgit2 for git operations, set to false to shell out to git.",
          "type": "boolean"
        },
        "log_level": {
          "default": "info",
          "description": "Show more/less output.",
          "type": "string",
          "enum": ["trace", "debug", "info", "warn", "error"]
        },
        "node": {
          "additionalProperties": false,
          "properties": {
            "compile": {
              "description": "Compile node from source.",
              "type": "boolean"
            },
            "flavor": {
              "description": "Install a specific node flavor like glibc-217 or musl. Use with unofficial node build repo.",
              "type": "string"
            },
            "mirror_url": {
              "description": "Mirror to download node tarballs from.",
              "type": "string"
            }
          }
        },
        "not_found_auto_install": {
          "default": true,
          "description": "Set to false to disable the \"command not found\" handler to autoinstall missing tool versions.",
          "type": "boolean"
        },
        "paranoid": {
          "description": "Enables extra-secure behavior.",
          "type": "boolean"
        },
        "pin": {
          "description": "Default to pinning versions when running `mise use` in mise.toml files.",
          "type": "boolean"
        },
        "pipx_uvx": {
          "description": "Use uvx instead of pipx if uv is installed and on PATH.",
          "type": "boolean"
        },
        "plugin_autoupdate_last_check_duration": {
          "default": "7d",
          "description": "How long to wait before updating plugins automatically (note this isn't currently implemented).",
          "type": "string"
        },
        "python": {
          "additionalProperties": false,
          "properties": {
            "compile": {
              "description": "If true, compile python from source. If false, use precompiled binaries. If not set, use precompiled binaries if available.",
              "type": "boolean"
            },
            "default_packages_file": {
              "description": "Path to a file containing default python packages to install when installing a python version.",
              "type": "string"
            },
            "patch_url": {
              "description": "URL to fetch python patches from to pass to python-build.",
              "type": "string"
            },
            "patches_directory": {
              "description": "Directory to fetch python patches from.",
              "type": "string"
            },
            "precompiled_arch": {
              "description": "Specify the architecture to use for precompiled binaries.",
              "type": "string"
            },
            "precompiled_os": {
              "description": "Specify the OS to use for precompiled binaries.",
              "type": "string"
            },
            "pyenv_repo": {
              "default": "https://github.com/pyenv/pyenv.git",
              "description": "URL to fetch pyenv from for compiling python with python-build.",
              "type": "string"
            },
            "venv_auto_create": {
              "description": "Automatically create virtualenvs for python tools.",
              "deprecated": "Use env._python.venv instead.",
              "type": "boolean"
            },
            "venv_stdlib": {
              "description": "Prefer to use venv from Python's standard library.",
              "type": "boolean"
            }
          }
        },
        "python_compile": {
          "description": "If true, compile python from source. If false, use precompiled binaries. If not set, use precompiled binaries if available.",
          "deprecated": "Use python.compile instead.",
          "type": "boolean"
        },
        "python_default_packages_file": {
          "description": "Path to a file containing default python packages to install when installing python.",
          "deprecated": "Use python.default_packages_file instead.",
          "type": "string"
        },
        "python_patch_url": {
          "description": "URL to fetch python patches from.",
          "deprecated": "Use python.patch_url instead.",
          "type": "string"
        },
        "python_patches_directory": {
          "description": "Directory to fetch python patches from.",
          "deprecated": "Use python.patch_url instead.",
          "type": "string"
        },
        "python_precompiled_arch": {
          "description": "Specify the architecture to use for precompiled binaries.",
          "deprecated": "Use python.precompiled_arch instead.",
          "type": "string"
        },
        "python_precompiled_os": {
          "description": "Specify the OS to use for precompiled binaries.",
          "deprecated": "Use python.precompiled_os instead.",
          "type": "string"
        },
        "python_pyenv_repo": {
          "description": "URL to fetch pyenv from for compiling python.",
          "deprecated": "Use python.pyenv_repo instead.",
          "type": "string"
        },
        "python_venv_auto_create": {
          "description": "Automatically create virtualenvs for python tools.",
          "deprecated": "Use env._python.venv instead.",
          "type": "boolean"
        },
        "python_venv_stdlib": {
          "description": "Prefer to use venv from Python's standard library.",
          "type": "boolean"
        },
        "quiet": {
          "description": "Suppress all output except errors.",
          "type": "boolean"
        },
        "raw": {
          "description": "Connect stdin/stdout/stderr to child processes.",
          "type": "boolean"
        },
        "ruby": {
          "additionalProperties": false,
          "properties": {
            "apply_patches": {
              "description": "A list of patch files or URLs to apply to ruby source.",
              "type": "string"
            },
            "default_packages_file": {
              "default": "~/.default-gems",
              "description": "Path to a file containing default ruby gems to install when installing ruby.",
              "type": "string"
            },
            "ruby_build_opts": {
              "description": "Options to pass to ruby-build.",
              "type": "string"
            },
            "ruby_build_repo": {
              "default": "https://github.com/rbenv/ruby-build.git",
              "description": "URL to fetch ruby-build from.",
              "type": "string"
            },
            "ruby_install": {
              "description": "Use ruby-install instead of ruby-build.",
              "type": "boolean"
            },
            "ruby_install_opts": {
              "description": "Options to pass to ruby-install.",
              "type": "string"
            },
            "ruby_install_repo": {
              "default": "https://github.com/postmodern/ruby-install.git",
              "description": "URL to fetch ruby-install from.",
              "type": "string"
            },
            "verbose_install": {
              "description": "Set to true to enable verbose output during ruby installation.",
              "type": "boolean"
            }
          }
        },
        "shorthands_file": {
          "description": "Path to a file containing custom tool shorthands.",
          "type": "string"
        },
        "status": {
          "additionalProperties": false,
          "properties": {
            "missing_tools": {
              "default": "if_other_versions_installed",
              "description": "Show a warning if tools are not installed when entering a directory with a mise.toml file.",
              "type": "string"
            },
            "show_env": {
              "description": "Show configured env vars when entering a directory with a mise.toml file.",
              "type": "boolean"
            },
            "show_tools": {
              "description": "Show configured env vars when entering a directory with a mise.toml file.",
              "type": "boolean"
            }
          }
        },
        "task_output": {
          "description": "Change output style when executing tasks.",
          "type": "string",
          "enum": ["prefix", "interleave"]
        },
        "trace": {
          "description": "Sets log level to trace",
          "type": "boolean"
        },
        "trusted_config_paths": {
          "default": [],
          "description": "This is a list of config paths that mise will automatically mark as trusted.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "use_versions_host": {
          "default": true,
          "description": "Set to false to disable using the mise-versions API as a quick way for mise to query for new versions.",
          "type": "boolean"
        },
        "verbose": {
          "description": "Shows more verbose output such as installation logs when installing tools.",
          "type": "boolean"
        },
        "vfox": {
          "description": "Use vfox as a default plugin backend instead of asdf.",
          "type": "boolean"
        },
        "yes": {
          "description": "This will automatically answer yes or no to prompts. This is useful for scripting.",
          "type": "boolean"
        }
      }
    },
    "task": {
      "oneOf": [
        {
          "description": "script to run",
          "type": "string"
        },
        {
          "description": "script to run",
          "items": {
            "description": "script to run",
            "type": "string"
          },
          "type": "array"
        },
        {
          "additionalProperties": false,
          "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"
                }
              ]
            },
            "depends": {
              "description": "other tasks to run before this task",
              "items": {
                "description": "task to run before this task",
                "type": "string"
              },
              "type": "array"
            },
            "description": {
              "description": "description of task",
              "type": "string"
            },
            "dir": {
              "description": "directory to run script in, default is current working directory",
              "type": "string"
            },
            "env": {
              "additionalProperties": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "enum": [false],
                    "type": "boolean"
                  }
                ]
              },
              "description": "environment variables",
              "type": "object"
            },
            "hide": {
              "description": "do not display this task",
              "type": "boolean"
            },
            "outputs": {
              "description": "files created by this task",
              "items": {
                "description": "glob pattern or path to files created by this task",
                "type": "string"
              },
              "type": "array"
            },
            "quiet": {
              "description": "do not display mise information for this task",
              "type": "boolean"
            },
            "raw": {
              "description": "directly connect task to stdin/stdout/stderr",
              "type": "boolean"
            },
            "run": {
              "oneOf": [
                {
                  "description": "script to run",
                  "type": "string"
                },
                {
                  "description": "script to run",
                  "items": {
                    "description": "script to run",
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            },
            "sources": {
              "description": "files that this task depends on",
              "items": {
                "description": "glob pattern or path to files that this task depends on",
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      ]
    },
    "task_config": {
      "description": "configration for task execution/management",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "includes": {
          "description": "files/directories to include searching for tasks",
          "items": {
            "description": "file/directory root to include in task execution",
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "tool": {
      "oneOf": [
        {
          "description": "version of the tool to install",
          "type": "string"
        },
        {
          "properties": {
            "version": {
              "description": "version of the tool to install",
              "type": "string"
            }
          },
          "required": ["version"],
          "type": "object"
        }
      ]
    }
  },
  "additionalProperties": false,
  "description": "config file for mise version manager (.mise.toml)",
  "properties": {
    "alias": {
      "additionalProperties": {
        "additionalProperties": {
          "description": "version alias points to",
          "type": "string"
        },
        "description": "plugin to set aliases for",
        "type": "object"
      },
      "description": "custom shorthands for versions",
      "type": "object"
    },
    "env": {
      "$ref": "#/$defs/env"
    },
    "min_version": {
      "description": "minimum version of mise required to use this config",
      "pattern": "^\\d+\\.\\d+\\.\\d+$",
      "type": "string"
    },
    "plugins": {
      "additionalProperties": {
        "description": "url to plugin repository",
        "type": "string"
      },
      "description": "plugins to use",
      "type": "object"
    },
    "settings": {
      "$ref": "#/$defs/settings",
      "additionalProperties": false,
      "description": "mise settings",
      "type": "object"
    },
    "tasks": {
      "additionalProperties": {
        "$ref": "#/$defs/task"
      },
      "description": "task runner tasks",
      "type": "object"
    },
    "tools": {
      "additionalProperties": {
        "oneOf": [
          {
            "items": {
              "$ref": "#/$defs/tool"
            },
            "type": "array"
          },
          {
            "$ref": "#/$defs/tool"
          }
        ]
      },
      "description": "dev tools to use",
      "type": "object"
    }
  }
}
