jdx/mise · error

mise has no official precompiled artifact for / ; set…

Error message

mise {} has no official precompiled artifact for {os}/{arch}; set mise_bin, remote_mise, or bootstrap_command

What it means

When building the official release asset filename for a target platform, release_asset_name maps known architectures (x86_64, aarch64, armv7) to mise release names; any other architecture has no official precompiled mise artifact, so the function fails and reports the os/arch pair plus guidance to supply a binary another way.

Solutions

  1. Set remote_mise or mise_bin to a mise binary path on the target host (e.g. one built from source there)
  2. Provide a bootstrap_command that builds/installs mise on the unsupported architecture
  3. Only auto-provision on officially supported platforms (linux/macos on x64/arm64/armv7)
  4. Skip remote auto-provisioning for that host entirely

Example fix

// before
remote_config.bootstrap_command(...) // relies on official artifacts for riscv64
// after
remote_config.mise_bin("/opt/mise/bin/mise") // binary built on the riscv64 host
Defensive patterns

Strategy: validation

Validate before calling

case "$(uname -m)" in x86_64|aarch64|armv7*) echo supported;; *) echo unsupported;; esac

Type guard

fn is_supported_arch(arch: &str) -> bool { matches!(arch, "x86_64" | "aarch64" | "armv7") }

Try / catch

match res { Err(e) if e.message.contains("no official precompiled artifact") => build_mise_on_target(), other => other? }

Prevention

When it happens

Trigger: Attempting automatic cross-platform provisioning or release asset lookup for a remote platform whose architecture is not one of x86_64/aarch64/armv7 (e.g. riscv64, s390x, ppc64le, i686) — normalized by normalize_arch and passed to release_asset_name.

Common situations: SSH-ing into exotic hardware (RISC-V boards, s390x mainframes, older 32-bit x86 hosts); emulated/QEMU targets; niche CI runners; alpine/musl on unsupported arch.

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

Appendix: source

Thrown at src/system/remote.rs:1604

            })?;
            self.manifest = Some(ReleaseManifest::verified(&contents, &signature)?);
        }
        Ok(self.manifest.as_ref().expect("release manifest was loaded"))
    }
}

fn release_url(filename: &str) -> String {
    let version = env!("CARGO_PKG_VERSION");
    format!("{RELEASE_BASE_URL}/v{version}/{filename}")
}

fn release_asset_name(os: &str, arch: &str, libc: Option<LibcFlavor>) -> Result<String> {
    let release_arch = match arch {
        "x86_64" => "x64",
        "aarch64" => "arm64",
        "armv7" => "armv7",
        _ => {
            bail!(
                "mise {} has no official precompiled artifact for {os}/{arch}; set mise_bin, remote_mise, or bootstrap_command",
                env!("CARGO_PKG_VERSION")
            )
        }
    };
    let suffix = match os {
        "macos" if matches!(arch, "x86_64" | "aarch64") => {
            if libc.is_some() {
                bail!("macOS release targets cannot declare a libc family");
            }
            format!("macos-{release_arch}")
        }
        "linux" if matches!(arch, "x86_64" | "aarch64" | "armv7") => match libc {
            Some(LibcFlavor::Glibc) => format!("linux-{release_arch}"),
            Some(LibcFlavor::Musl) => format!("linux-{release_arch}-musl"),
            None => bail!("Linux release targets require a detected libc family"),
        },
        _ => {

View on GitHub (pinned to 533346cc37)