jdx/mise · error · eyre::Report
mise {} has no official precompiled artifact for {os}/{arch}
Error message
mise {} has no official precompiled artifact for {os}/{arch}; set mise_bin, remote_mise, or bootstrap_command What it means
Thrown by release_asset_name when the CPU architecture is not one of x86_64, aarch64, or armv7 (after normalization, so armv6l/armv6, riscv64, ppc64le, s390x, loongarch64, i686 all land here). mise only publishes precompiled release artifacts for x64, arm64, and armv7, so it cannot construct an asset name for other architectures. Reachable for either the remote platform (RemotePlatform::release_asset_name in resolve) or the local platform (official_release_assets -> release_asset_name in ensure_official_local).
Source
Thrown at src/system/remote.rs:1084
})?;
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 6f52dcdf99)
Solutions
- Set bootstrap_command to install mise on the remote by whatever means supports that arch (e.g. build from source: 'curl ... && cargo install mise')
- Set remote_mise to an already-installed mise path/command on the remote
- Set mise_bin to upload a binary you cross-compiled yourself for that arch
Example fix
# before (mise.toml) [bootstrap.remote.hosts.pi] host = "pi@zero" # after [bootstrap.remote.hosts.pi] host = "pi@zero" bootstrap_command = "curl -fsSL https://mise.run | sh" # or point remote_mise at a from-source build
Defensive patterns
Strategy: fallback
Validate before calling
# Probe the remote arch before relying on automatic provisioning: ARCH=$(ssh pi@zero 'uname -m') case "$ARCH" in x86_64|aarch64|armv7l|armv7) echo "official artifact available" ;; *) echo "no prebuilt artifact for $ARCH: set bootstrap_command/remote_mise/mise_bin" ;; esac
Type guard
fn has_official_artifact(os: &str, arch: &str) -> bool {
let os = normalize_os(os);
let arch = normalize_arch(arch);
matches!(arch.as_str(), "x86_64" | "aarch64" | "armv7")
&& match os.as_str() {
"linux" => true,
"macos" => matches!(arch.as_str(), "x86_64" | "aarch64"),
"windows" => matches!(arch.as_str(), "x86_64" | "aarch64"),
_ => false,
}
} Try / catch
match platform.release_asset_name() {
Err(e) if e.to_string().contains("no official precompiled artifact") => {
// fall back to explicit provisioning instead of failing the whole run
ensure_remote_mise_via_bootstrap(session, host).await?;
}
other => other?,
} Prevention
- Know the supported matrix before adding hosts: linux/mac/windows on x64/arm64 plus linux armv7
- For SBC fleets (armv6, riscv boards), preinstall mise and set remote_mise
- Add a CI check that fails fast on unsupported-arch hosts before deployment
When it happens
Trigger: Remote host reports uname -m of armv6l (Raspberry Pi Zero/1), riscv64, ppc64le, s390x, i686, etc.; or the local machine runs such an arch (e.g. local armv6 Linux) and automatic provisioning needs official_release_assets for the local side.
Common situations: Hobby boards (Raspberry Pi older than 4 running 32-bit armv6), mainframes/specialty arches, 32-bit x86 remotes, cross-developing from an armv6 local machine.
Related errors
- automatic cross-platform provisioning is unavailable from a
- automatic cross-platform provisioning refuses to replace a c
- macOS release targets cannot declare a libc family
- Linux release targets require a detected libc family
- remote Linux libc family could not be identified
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/83863c780fcc0b37.
Report an issue: GitHub.