{"record":{"id":"99381b836d955547","repo":"jdx/mise","slug":"local-mise-is-local-os-local-arch-while-the-r","errorCode":null,"errorMessage":"local mise is {local_os}/{local_arch}, while the remote target is {}","messagePattern":"local mise is (.+?)/(.+?), while the remote target is (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/remote.rs","lineNumber":987,"sourceCode":"        session.status_async(&[\"sh\", \"-lc\", &script], true).await?;\n        let candidates = session.output_async(&[\"cat\", &candidates_file]).await?;\n        let candidates = parse_remote_mise_candidates(&candidates)?;\n        let after_identities = remote_mise_candidate_identities(session, &candidates).await;\n        let mise =\n            select_bootstrapped_mise(&before, &before_identities, &candidates, &after_identities)?;\n        session.status_async(&[&mise, \"version\"], false).await?;\n        return Ok(mise);\n    }\n    let binary = if let Some(binary) = &session.host.mise_bin {\n        binary.clone()\n    } else {\n        let platform = detect_remote_platform(session).await?;\n        let local_os = normalize_os(std::env::consts::OS);\n        let local_arch = normalize_arch(std::env::consts::ARCH);\n        let local = std::env::current_exe()?;\n        let local_incompatibility = if platform.os != local_os || platform.arch != local_arch {\n            Some(format!(\n                \"local mise is {local_os}/{local_arch}, while the remote target is {}\",\n                platform.description()\n            ))\n        } else {\n            validate_default_binary_compatibility(session, &local, &platform.os)\n                .await\n                .err()\n                .map(|error| format!(\"{error:#}\"))\n        };\n        if local_incompatibility.is_none() {\n            local\n        } else {\n            artifacts\n                .resolve(&platform, &local)\n                .await\n                .wrap_err_with(|| {\n                    format!(\n                        \"local mise could not run on remote host '{}' ({}) because {}; official mise {} artifact fallback also failed\",\n                        session.host.name,","sourceCodeStart":969,"sourceCodeEnd":1005,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/remote.rs#L969-L1005","documentation":"When preparing remote execution, mise compares the remote target platform (detected via the SSH session) with the local binary's OS/arch and records \"local mise is {os}/{arch}, while the remote target is {desc}\" if they differ. This string is used to warn/fail about attempting to run a local mise binary that cannot execute on the remote host.","triggerScenarios":"Using remote-execution features (running tasks on a remote host over SSH) where `detect_remote_platform` returns an os/arch that differs from `std::env::consts::OS/ARCH` of the running local binary — e.g. x86_64 machine driving an aarch64 Linux remote.","commonSituations":"SSHing from Apple Silicon to an Intel server (or vice versa); macOS-to-Linux remotes; musl vs glibc incompatibility surfaced by `validate_default_binary_compatibility` even when os/arch match.","solutions":["Install mise natively on the remote host so the local binary is not shipped over.","Ensure a matching mise binary for the remote platform is available.","If os/arch match but the error persists, address the glibc/musl compatibility issue reported by validate_default_binary_compatibility.","Use a statically-linked (musl) mise build for cross-platform remotes."],"exampleFix":"// before\nmise run --remote host deploy.sh   # local arm64 mac, remote x86_64 linux → incompatible binary\n// after\nssh host 'curl https://mise.run | sh'   # install mise on the remote, then run there","handlingStrategy":"validation","validationCode":"ssh host 'uname -sm'  # compare remote OS/arch with the local `uname -sm` before remote runs","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Install mise natively on remote hosts instead of shipping the local binary.","Match remote architectures or provide a musl static build.","Verify remote platform compatibility before scripting remote `mise run`."],"tags":["rust","ssh","remote","platform"],"backgroundTag":"unsupported-platform","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}