{"record":{"id":"83863c780fcc0b37","repo":"jdx/mise","slug":"mise-has-no-official-precompiled-artifact-for","errorCode":null,"errorMessage":"mise {} has no official precompiled artifact for {os}/{arch}; set mise_bin, remote_mise, or bootstrap_command","messagePattern":"mise (.+?) has no official precompiled artifact for (.+?)/(.+?); set mise_bin, remote_mise, or bootstrap_command","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/system/remote.rs","lineNumber":1084,"sourceCode":"            })?;\n            self.manifest = Some(ReleaseManifest::verified(&contents, &signature)?);\n        }\n        Ok(self.manifest.as_ref().expect(\"release manifest was loaded\"))\n    }\n}\n\nfn release_url(filename: &str) -> String {\n    let version = env!(\"CARGO_PKG_VERSION\");\n    format!(\"{RELEASE_BASE_URL}/v{version}/{filename}\")\n}\n\nfn release_asset_name(os: &str, arch: &str, libc: Option<LibcFlavor>) -> Result<String> {\n    let release_arch = match arch {\n        \"x86_64\" => \"x64\",\n        \"aarch64\" => \"arm64\",\n        \"armv7\" => \"armv7\",\n        _ => {\n            bail!(\n                \"mise {} has no official precompiled artifact for {os}/{arch}; set mise_bin, remote_mise, or bootstrap_command\",\n                env!(\"CARGO_PKG_VERSION\")\n            )\n        }\n    };\n    let suffix = match os {\n        \"macos\" if matches!(arch, \"x86_64\" | \"aarch64\") => {\n            if libc.is_some() {\n                bail!(\"macOS release targets cannot declare a libc family\");\n            }\n            format!(\"macos-{release_arch}\")\n        }\n        \"linux\" if matches!(arch, \"x86_64\" | \"aarch64\" | \"armv7\") => match libc {\n            Some(LibcFlavor::Glibc) => format!(\"linux-{release_arch}\"),\n            Some(LibcFlavor::Musl) => format!(\"linux-{release_arch}-musl\"),\n            None => bail!(\"Linux release targets require a detected libc family\"),\n        },\n        _ => {","sourceCodeStart":1066,"sourceCodeEnd":1102,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/system/remote.rs#L1066-L1102","documentation":"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).","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before (mise.toml)\n[bootstrap.remote.hosts.pi]\nhost = \"pi@zero\"\n\n# after\n[bootstrap.remote.hosts.pi]\nhost = \"pi@zero\"\nbootstrap_command = \"curl -fsSL https://mise.run | sh\"  # or point remote_mise at a from-source build","handlingStrategy":"fallback","validationCode":"# Probe the remote arch before relying on automatic provisioning:\nARCH=$(ssh pi@zero 'uname -m')\ncase \"$ARCH\" in\n  x86_64|aarch64|armv7l|armv7) echo \"official artifact available\" ;;\n  *) echo \"no prebuilt artifact for $ARCH: set bootstrap_command/remote_mise/mise_bin\" ;;\nesac","typeGuard":"fn has_official_artifact(os: &str, arch: &str) -> bool {\n    let os = normalize_os(os);\n    let arch = normalize_arch(arch);\n    matches!(arch.as_str(), \"x86_64\" | \"aarch64\" | \"armv7\")\n        && match os.as_str() {\n            \"linux\" => true,\n            \"macos\" => matches!(arch.as_str(), \"x86_64\" | \"aarch64\"),\n            \"windows\" => matches!(arch.as_str(), \"x86_64\" | \"aarch64\"),\n            _ => false,\n        }\n}","tryCatchPattern":"match platform.release_asset_name() {\n    Err(e) if e.to_string().contains(\"no official precompiled artifact\") => {\n        // fall back to explicit provisioning instead of failing the whole run\n        ensure_remote_mise_via_bootstrap(session, host).await?;\n    }\n    other => other?,\n}","preventionTips":["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"],"tags":["mise","remote-bootstrap","unsupported-arch","release-artifact","provisioning"],"backgroundTag":"no-prebuilt-binary-for-platform","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}