jdx/mise · error

unsupported env: / (supported: )

Error message

unsupported env: {}/{} (supported: {:?})

What it means

Aqua registry entries constrain the platforms a package supports via `supported_envs` (e.g. only linux/amd64, darwin/arm64). `validate()` checks the current OS/arch against these constraints and rejects installation when the running platform is not listed, so mise won't attempt to download an asset that doesn't exist for your platform.

Solutions

  1. Install the tool via another backend that builds from source (e.g. `mise use cargo:name`, `mise use go:pkg/path`, github backend)
  2. Choose a different version of the tool that added support for your platform
  3. If the tool does support your platform but the registry entry is stale, update mise or fix/PR the aqua registry entry's supported_envs
  4. Run under platform emulation only if the entry explicitly lists that env

Example fix

// before (mise.toml, on darwin/arm64)
[tools]
"aqua:linux-only-tool" = "latest"  // supported_envs: [linux/amd64]

// after
[tools]
linux-only-tool = { version = "latest", backend = "cargo:linux_only_tool" }
Defensive patterns

Strategy: fallback

Validate before calling

// check platform support before installing
const env = `${process.platform}/${process.arch}`; // map to aqua env names
const supported = entry.supported_envs ?? [];
if (supported.length && !supported.some(s => s === env || s === env.split('/')[0])) {
  console.warn(`${tool} does not support ${env}; use a source-building backend`);
}

Try / catch

catch (e) {
  if (String(e).includes('unsupported env')) {
    console.error(`No binary for ${os}/${arch}; install via cargo/go backend or build from source.`);
  }
}

Prevention

When it happens

Trigger: Installing an aqua package on an OS/arch the registry entry doesn't list — e.g. a darwin/arm64 machine when the registry only declares linux/amd64, or windows when the tool has no Windows build; also with non-default os/arch overrides (e.g. Rosetta, cross installs).

Common situations: New Apple Silicon machines where tools only published Intel builds; BSD or Windows targets with Linux-only tools; running mise under an unusual architecture (armv6, i386).

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/f32b9f3c2fffa027. Report an issue: GitHub.

Appendix: source

Thrown at src/backend/aqua.rs:5131

    let releases = github::list_releases_including_prereleases(&repo).await?;
    Ok(releases
        .into_iter()
        .map(|r| {
            let released_at = r.released_at().to_string();
            (r.tag_name, Some(released_at), Some(r.prerelease))
        })
        .collect())
}

fn validate(pkg: &AquaPackage, version: &str) -> Result<()> {
    if pkg.no_asset.unwrap_or(false) {
        bail!("no asset released");
    }
    if let Some(message) = &pkg.error_message {
        bail!("{}", message);
    }
    if !is_platform_supported(&pkg.supported_envs, os(), arch()) {
        bail!(
            "unsupported env: {}/{} (supported: {:?})",
            os(),
            arch(),
            pkg.supported_envs
        );
    }
    match pkg.package_type() {
        AquaPackageType::Cargo => {
            bail!(
                "package type `cargo` is not supported in the aqua backend. Use the cargo backend instead{}.",
                pkg.crate_name
                    .as_deref()
                    .filter(|name| !name.is_empty())
                    .or_else(|| {
                        pkg.name
                            .as_deref()
                            .and_then(|s| s.strip_prefix("crates.io/"))
                    })

View on GitHub (pinned to 533346cc37)