zed-industries/zed · error

Prebuilt remote servers are not yet available for windows-{a

Error message

Prebuilt remote servers are not yet available for windows-{arch}. See https://zed.dev/docs/remote-development

What it means

For Windows remotes, Zed detects CPU architecture by echoing %PROCESSOR_ARCHITECTURE% through cmd; AMD64 and ARM64 map to published remote server builds, and any other value bails because Zed ships no prebuilt remote server for that Windows architecture.

Source

Thrown at crates/remote/src/transport/ssh.rs:1505

    async fn platform_windows(&self, shell: ShellKind) -> Result<RemotePlatform> {
        let output = self
            .run_command(
                shell,
                "cmd.exe",
                &["/c", "echo", "%PROCESSOR_ARCHITECTURE%"],
                false,
            )
            .await
            .context(
                "Failed to run 'echo %PROCESSOR_ARCHITECTURE%' to determine Windows architecture",
            )?;

        Ok(RemotePlatform {
            os: RemoteOs::Windows,
            arch: match output.trim() {
                "AMD64" => RemoteArch::X86_64,
                "ARM64" => RemoteArch::Aarch64,
                arch => anyhow::bail!(
                    "Prebuilt remote servers are not yet available for windows-{arch}. See https://zed.dev/docs/remote-development"
                ),
            },
        })
    }

    /// Probes whether the remote host is running Windows.
    ///
    /// This is done by attempting to run a simple Windows-specific command.
    /// If it succeeds and returns Windows-like output, we assume it's Windows.
    async fn probe_is_windows(&self) -> bool {
        match self
            .run_command(ShellKind::Cmd, "cmd.exe", &["/c", "ver"], false)
            .await
        {
            // Windows 'ver' command outputs something like "Microsoft Windows [Version 10.0.19045.5011]"
            Ok(output) => output.trim().contains("indows"),
            Err(_) => false,

View on GitHub (pinned to f4178619ac)

Solutions

  1. Check what the remote reports through the same channel: `echo %PROCESSOR_ARCHITECTURE%` in cmd on the remote
  2. Target a 64-bit AMD64 or ARM64 Windows host — Zed publishes no 32-bit server builds
  3. Ensure the remote session's shell is cmd.exe (Zed's default for this probe) so the variable expands
  4. Track Zed's remote-development docs for newly supported architectures

Example fix

# before: 32-bit host
C:\> echo %PROCESSOR_ARCHITECTURE%
x86

# after: use a 64-bit Windows remote
C:\> echo %PROCESSOR_ARCHITECTURE%
AMD64
Defensive patterns

Strategy: fallback

Validate before calling

fn supported_windows_arch(arch: &str) -> bool {
    matches!(arch.trim(), "AMD64" | "ARM64")
}
// probe with: echo %PROCESSOR_ARCHITECTURE% (cmd) on the remote before relying on it

Try / catch

if let Err(e) = detect_remote_platform().await {
    if e.to_string().contains("Prebuilt remote servers are not yet available") {
        // fallback: connect to a 64-bit Windows/Linux remote instead
    }
    return Err(e);
}

Prevention

When it happens

Trigger: remote_platform windows detection returns something other than exactly 'AMD64' or 'ARM64': 32-bit x86 Windows, an unrecognized architecture string, or a shell that fails to expand the variable so a literal/garbled value comes back.

Common situations: Connecting to 32-bit Windows servers or VMs; remotes whose default shell is PowerShell (where %VAR% is not expanded, though Zed targets cmd); Windows containers or unusual Windows editions reporting nonstandard arch strings.

Related errors


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