jdx/mise · error

daemon presets are not supported on Windows yet

Error message

daemon presets are not supported on Windows yet

What it means

Daemon presets (postgres/redis-style managed daemons) are not implemented on Windows. validate_tools checks every daemon entry with a tool pin and, when compiled for/running on Windows, unconditionally bails with this message rather than attempting an unsupported workflow. There is no configuration that enables it on this platform yet.

Solutions

  1. Run daemon-dependent workflows on WSL or another Unix environment instead of native Windows.
  2. Guard the daemons config so Windows machines don't load it (e.g. platform-specific config files).
  3. Wait for/track upstream Windows support for daemon presets; do not attempt workarounds via cfg flags.
  4. On Windows CI, skip tasks that require daemon presets.
Defensive patterns

Strategy: fallback

Validate before calling

# Skip daemon-preset workflows on Windows
if [[ "$(uname -s)" == MINGW* || "$OS" == "Windows_NT" ]]; then echo "daemon presets unsupported; use WSL"; fi

Type guard

const isWindows = process.platform === "win32";
if (isWindows) console.warn("mise daemon presets are not supported on Windows; use WSL.");

Try / catch

try {
  await mise.daemons.start();
} catch (e) {
  if (String(e).includes("not supported on Windows")) {
    console.error("Run under WSL or a Unix environment instead.");
  }
}

Prevention

When it happens

Trigger: Using any mise.toml [daemons] preset entry on a Windows machine — validate_tools hits `if cfg!(windows)` and bails before any version validation.

Common situations: Running `mise daemons start` (or any command that prepares/validates daemon sets) on Windows, or sharing a mise.toml with daemon presets between Unix teammates and a Windows machine.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/2a8841d1b70fe052. Report an issue: GitHub.

Appendix: source

Thrown at src/daemons/runtime.rs:394

                toml::Value::String(crate::env::MISE_BIN.to_string_lossy().into_owned()),
            )])),
        )])),
    );
    doc.insert("daemons".into(), toml::Value::Table(daemons));
    Ok(header + &toml::to_string_pretty(&doc)?)
}

pub(crate) async fn validate_tools(
    set: &DaemonSet,
    config: &Arc<Config>,
    ts: &Toolset,
) -> Result<()> {
    for daemon in set.daemons.values() {
        let Some((tool, version)) = &daemon.tool else {
            continue;
        };
        if cfg!(windows) {
            bail!("daemon presets are not supported on Windows yet");
        }
        let ba: crate::cli::args::BackendArg = tool.as_str().into();
        let Some(versions) = ts.versions.get(&ba) else {
            bail!("daemon {} requires {tool}@{version}", daemon.name);
        };
        let actual = versions
            .versions
            .first()
            .ok_or_else(|| eyre::eyre!("missing {tool}"))?;
        let compatible = ba
            .backend()?
            .list_installed_versions_matching(version)
            .contains(&actual.version);
        if compatible {
            continue;
        }
        let requested = ToolRequest::new(
            ba.into(),

View on GitHub (pinned to 533346cc37)