{"record":{"id":"be4a4de4e89d8587","repo":"jdx/mise","slug":"error-remote","errorCode":null,"errorMessage":"{error:#}","messagePattern":"\\{error:#\\}","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/remote.rs","lineNumber":995,"sourceCode":"        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,\n                        platform.description(),\n                        local_incompatibility.expect(\"incompatibility was identified\"),\n                        env!(\"CARGO_PKG_VERSION\"),\n                    )\n                })?\n        }","sourceCodeStart":977,"sourceCodeEnd":1013,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/system/remote.rs#L977-L1013","documentation":"In src/system/remote.rs, validate_default_binary_compatibility is run against the local mise binary for the remote target platform; any error is converted with format!(\"{error:#}\") into a local_incompatibility string. When present, the code falls back to fetching remote artifacts instead of using the local binary. The surfaced message indicates the local default binary is not compatible with the remote target platform.","triggerScenarios":"Setting up a remote execution target whose OS/arch differs from the local machine and the local default binary fails platform compatibility validation (e.g. wrong architecture binary for the remote target, unsupported OS combination).","commonSituations":"Driving remote hosts of a different architecture (x86_64 local, arm64 remote) or a different OS family; or a locally installed mise binary that doesn't match the platform defaults expected for the target.","solutions":["Install/declare the correct mise binary variant for the remote target platform so validation passes.","Rely on the automatic fallback to remote artifacts if the operation already continues gracefully.","Check the local platform/arch (`mise doctor`) versus the remote target's and fix the mismatch in your tool/bootstrap configuration."],"exampleFix":"// before: assuming local binary works for any remote target\nlet bin = local.default_binary();\n// after: validate and fall back\nif let Err(error) = validate_default_binary_compatibility(session, &local, &platform.os).await {\n    tracing::warn!(\"local binary incompatible: {error:#}; using remote artifacts\");\n}","handlingStrategy":"fallback","validationCode":"// verify local binary matches the remote target before using it\nlet desc = format!(\"{}/{}\", local.platform.os, local.platform.arch);\nif desc != target_platform.description() {\n    eprintln!(\"local {desc} != remote {}; using remote artifacts\", target_platform.description());\n}","typeGuard":null,"tryCatchPattern":"if let Some(incompat) = local_incompatibility {\n    tracing::warn!(\"local binary incompatible ({incompat}); falling back to remote artifacts\");\n    fetch_remote_artifacts(session, &platform).await?;\n}","preventionTips":["Match local mise binary architecture to the remote targets you administer.","Install platform-specific mise builds where you drive mixed-arch fleets.","Log the local vs remote platform description during setup to spot mismatches early."],"tags":["remote","platform-compatibility","binary","architecture"],"backgroundTag":"unsupported-platform","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}