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
- Check what the remote reports through the same channel: `echo %PROCESSOR_ARCHITECTURE%` in cmd on the remote
- Target a 64-bit AMD64 or ARM64 Windows host — Zed publishes no 32-bit server builds
- Ensure the remote session's shell is cmd.exe (Zed's default for this probe) so the variable expands
- 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
- Target AMD64 or ARM64 Windows hosts only for remote development
- Confirm `echo %PROCESSOR_ARCHITECTURE%` in cmd returns a supported value
- Keep an x86_64 Linux remote as the default fallback environment
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
- Prebuilt remote servers are not yet available for {arch:?}.
- Device lost: {err}
- run request is missing a 'benchmark' block
- Failed to find fxc.exe
- Error when registering clipboard format: {}
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/55ba14d06f73e5ce.
Report an issue: GitHub.