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

  1. Run on an x86_64 or aarch64 host
  2. When porting, add the architecture mapping plus the matching Node dist archive name
  3. 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

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


AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20). Data as JSON: /api/errors/bff5f171342370fa. Report an issue: GitHub.