jdx/mise · error
unsupported env: {}/{} (supported: {:?})
Error message
unsupported env: {}/{} (supported: {:?}) What it means
Each aqua registry package can restrict which OS/arch combinations it supports via `supported_envs`. validate() checks the current runtime environment (os(), arch()) against that list and bails with 'unsupported env: <os>/<arch> (supported: [...])' when the current platform is not in it.
Source
Thrown at src/backend/aqua.rs:5006
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 afd2eddd3a)
Solutions
- Install via emulation/compat layer (e.g. Rosetta on Apple Silicon) and configure mise's arch override if applicable
- Use a different backend that can build the tool from source for your platform
- Check the printed supported list and switch to a tool version or fork with assets for your platform
- Update mise — newer registry entries may have broadened supported_envs
Example fix
# before — unsupported on linux/arm64 [tools] aqua:owner/repo = "latest" # after — build from source for the platform [tools] cargo:owner-repo-cli = "latest"
Defensive patterns
Strategy: validation
Validate before calling
// check platform support before installing on this machine
const pkg = await fetchAquaRegistryEntry(pkgName);
const env = `${process.platform === "darwin" ? "darwin" : "linux"}/${process.arch === "arm64" ? "arm64" : "amd64"}`;
if (pkg.supported_envs?.length && !pkg.supported_envs.some(e => e === env || e === env.split("/")[0] + "/*")) {
console.warn(`${pkgName} does not support ${env}; supported: ${pkg.supported_envs}`);
} Try / catch
try {
await $`mise install aqua:owner/repo`;
} catch (e) {
if (String(e).includes("unsupported env:")) {
// switch to a source build for this platform
await $`mise use cargo:${crateName}`;
} else throw e;
} Prevention
- Check supported_envs in the aqua registry entry when developing on ARM Linux, Apple Silicon, or Windows
- Provide per-platform tool selections in mise.toml ([tools] with platform-specific files or env overrides)
- Test tool installs on all target platforms in CI before standardizing on an aqua: pin
When it happens
Trigger: Installing an aqua package on a platform the registry entry excludes (src/backend/aqua.rs:5006), e.g. linux-arm64 for a tool that only ships x86_64 binaries, or windows when the entry lists only unix targets.
Common situations: Running mise on ARM Linux/macOS for tools with x86_64-only releases; Windows where the project publishes no Windows binaries; musl vs glibc-style restrictions encoded in supported_envs; FreeBSD/other niche platforms.
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
- only available on unix
- unexpected character: {}
- expected closing parenthesis
- conflicting aqua var `{key}`: use only one spelling
- No lockfile URL found for {} on platform {} (--locked mode r
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/f32b9f3c2fffa027.
Report an issue: GitHub.