jdx/mise · error
local mise is {local_os}/{local_arch}, while the remote targ
Error message
local mise is {local_os}/{local_arch}, while the remote target is {} What it means
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.
Source
Thrown at src/system/remote.rs:987
session.status_async(&["sh", "-lc", &script], true).await?;
let candidates = session.output_async(&["cat", &candidates_file]).await?;
let candidates = parse_remote_mise_candidates(&candidates)?;
let after_identities = remote_mise_candidate_identities(session, &candidates).await;
let mise =
select_bootstrapped_mise(&before, &before_identities, &candidates, &after_identities)?;
session.status_async(&[&mise, "version"], false).await?;
return Ok(mise);
}
let binary = if let Some(binary) = &session.host.mise_bin {
binary.clone()
} else {
let platform = detect_remote_platform(session).await?;
let local_os = normalize_os(std::env::consts::OS);
let local_arch = normalize_arch(std::env::consts::ARCH);
let local = std::env::current_exe()?;
let local_incompatibility = if platform.os != local_os || platform.arch != local_arch {
Some(format!(
"local mise is {local_os}/{local_arch}, while the remote target is {}",
platform.description()
))
} else {
validate_default_binary_compatibility(session, &local, &platform.os)
.await
.err()
.map(|error| format!("{error:#}"))
};
if local_incompatibility.is_none() {
local
} else {
artifacts
.resolve(&platform, &local)
.await
.wrap_err_with(|| {
format!(
"local mise could not run on remote host '{}' ({}) because {}; official mise {} artifact fallback also failed",
session.host.name,View on GitHub (pinned to afd2eddd3a)
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.
Example fix
// before mise run --remote host deploy.sh # local arm64 mac, remote x86_64 linux → incompatible binary // after ssh host 'curl https://mise.run | sh' # install mise on the remote, then run there
Defensive patterns
Strategy: validation
Validate before calling
ssh host 'uname -sm' # compare remote OS/arch with the local `uname -sm` before remote runs
Prevention
- 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`.
When it happens
Trigger: 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.
Common situations: 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.
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
- GitHub relay requires a POSIX target: {}
- GitHub relay requires Linux or macOS
- per-host network filtering (--allow-net=<host>) is not suppo
- remote host '{}' port must be greater than zero
- remote host '{}' identity file does not exist: {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/99381b836d955547.
Report an issue: GitHub.