zed-industries/zed · error
Running on unsupported architecture: {other}
Error message
Running on unsupported architecture: {other} What it means
Companion to the OS check: install_if_needed maps std::env::consts::ARCH onto Node dist names (x86_64→x64, aarch64→arm64). Any other architecture — 32-bit arm, riscv64, loongarch64, x86 (i686) — hits the `other` arm and bails before any download.
Source
Thrown at crates/node_runtime/src/node_runtime.rs:632
#[cfg(not(windows))]
const NPM_PATH: &str = "bin/npm";
#[cfg(windows)]
const NPM_PATH: &str = "node_modules/npm/bin/npm-cli.js";
async fn install_if_needed(http: &Arc<dyn HttpClient>) -> Result<Self> {
log::info!("Node runtime install_if_needed");
let os = match consts::OS {
"macos" => "darwin",
"linux" => "linux",
"windows" => "win",
other => bail!("Running on unsupported os: {other}"),
};
let arch = match consts::ARCH {
"x86_64" => "x64",
"aarch64" => "arm64",
other => bail!("Running on unsupported architecture: {other}"),
};
let version = Self::VERSION;
let folder_name = format!("node-{version}-{os}-{arch}");
let node_containing_dir = paths::data_dir().join("node");
let node_dir = node_containing_dir.join(folder_name);
let node_binary = node_dir.join(Self::NODE_PATH);
let npm_file = node_dir.join(Self::NPM_PATH);
let node_ca_certs = env::var(NODE_CA_CERTS_ENV_VAR).unwrap_or_else(|_| String::new());
let valid = if fs::metadata(&node_binary).await.is_ok() {
let result = util::command::new_command(&node_binary)
.env(NODE_CA_CERTS_ENV_VAR, node_ca_certs)
.arg(npm_file)
.arg("--version")
.args(["--cache".into(), node_dir.join("cache")])
.args(["--userconfig".into(), node_dir.join("blank_user_npmrc")])
.args(["--globalconfig".into(), node_dir.join("blank_global_npmrc")])View on GitHub (pinned to 9d272b0363)
Solutions
- Run on an x86_64 or aarch64 host
- When porting, add the architecture mapping plus the matching Node dist archive name
- Use a system-provided Node runtime path instead of the bundled installer
Defensive patterns
Strategy: validation
Validate before calling
fn arch_supported() -> bool {
matches!(std::env::consts::ARCH, "x86_64" | "aarch64")
} Type guard
#[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))]
compile_error!("bundled node runtime requires x86_64 or aarch64"); Try / catch
if !arch_supported() {
return SystemNodeRuntime::discover().await; // skip bundled installer
}
NodeRuntime::install_if_needed(&http).await?; Prevention
- Check consts::ARCH before entering the download path
- Build-gate unsupported architectures in port projects
- Document platform support next to runtime configuration
When it happens
Trigger: Running Zed's node_runtime installer on a CPU other than 64-bit x86 or 64-bit ARM: armv7l/arm (32-bit), riscv64gc, i686, powerpc64.
Common situations: Attempting builds on SBCs (32-bit ARM), emerging architectures, or Docker images with non-standard qemu emulated arches.
Related errors
- Running on unsupported os: {other}
- unsupported Copilot language server architecture: {architect
- unsupported architecture {unsupported}
- Prebuilt remote servers are not yet available for {arch:?}.
- unsupported architecture
AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20).
Data as JSON: /api/errors/bff5f171342370fa.
Report an issue: GitHub.