{"record":{"id":"409656429fd33342","repo":"spacedriveapp/spacedrive","slug":"could-not-find-sd-binary-for-platform","errorCode":null,"errorMessage":"Could not find sd binary for platform: {}","messagePattern":"Could not find sd binary for platform: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"apps/cli/src/domains/update/mod.rs","lineNumber":71,"sourceCode":"\t\tstd::io::stdin().read_line(&mut response)?;\n\n\t\tif !response.trim().eq_ignore_ascii_case(\"y\") {\n\t\t\tprintln!(\"Update cancelled.\");\n\t\t\treturn Ok(());\n\t\t}\n\t}\n\n\t// Determine platform\n\tlet platform = get_platform_string();\n\tprintln!();\n\tprintln!(\"Platform: {}\", platform);\n\n\t// Find matching assets\n\tlet sd_asset = latest_release\n\t\t.assets\n\t\t.iter()\n\t\t.find(|a| a.name.contains(&platform) && a.name.contains(\"sd\"))\n\t\t.ok_or_else(|| anyhow::anyhow!(\"Could not find sd binary for platform: {}\", platform))?;\n\n\tlet daemon_asset = latest_release\n\t\t.assets\n\t\t.iter()\n\t\t.find(|a| a.name.contains(&platform) && a.name.contains(\"sd-daemon\"))\n\t\t.ok_or_else(|| {\n\t\t\tanyhow::anyhow!(\"Could not find sd-daemon binary for platform: {}\", platform)\n\t\t})?;\n\n\tprintln!(\"Downloading updates...\");\n\n\t// Download binaries\n\tlet sd_data = download_file(&sd_asset.browser_download_url, sd_asset.size).await?;\n\tlet daemon_data = download_file(&daemon_asset.browser_download_url, daemon_asset.size).await?;\n\n\t// Get current binary paths\n\tlet current_exe = std::env::current_exe()?;\n\tlet bin_dir = current_exe","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/spacedriveapp/spacedrive/blob/6dfeccf2113039e35f2ce735f945e70dc3e4ea45/apps/cli/src/domains/update/mod.rs#L53-L89","documentation":"'sd update' fetches the latest GitHub release and scans release.assets for one whose name contains both the detected platform string (printed as 'Platform:') and 'sd'. This error means no asset matched: the release has no CLI binary for your platform, or the asset naming scheme changed.","triggerScenarios":"Running 'sd update' on a platform without a published artifact (e.g. ARM Linux when only x86_64 assets exist); a release whose CLI asset was renamed so it no longer contains 'sd'; a draft/partial release.","commonSituations":"Nightly builds with an incomplete target matrix; musl-vs-glibc platform strings not matching asset suffixes; running from source where you never installed release binaries.","solutions":["Compare the printed 'Platform:' string against asset names on the GitHub release page","Download the closest matching CLI artifact manually and place it in the same directory as sd-daemon","If you build from source, update via cargo build --release instead of 'sd update'","Fix or report the release workflow so an sd-named asset exists for your platform"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"#!/usr/bin/env bash\n# Verify a matching asset exists before running sd update\nrepo=\"spacedrive/spacedrive\"\nplatform=$(sd update --dry-run 2>/dev/null | grep '^Platform:' | cut -d' ' -f2)\ncurl -s \"https://api.github.com/repos/$repo/releases/latest\" \\\n  | jq -e --arg p \"$platform\" '.assets[]?.name | contains($p) and contains(\"sd\")' >/dev/null \\\n  || { echo \"No sd asset for $platform; update manually\"; exit 2; }","typeGuard":null,"tryCatchPattern":"match latest_release.assets.iter().find(|a| a.name.contains(&platform) && a.name.contains(\"sd\")) {\n    Some(asset) => asset,\n    None => {\n        // fallback: print asset names and let the user pick instead of hard-failing\n        eprintln!(\"No asset matched {}. Available: {:?}\", platform, latest_release.assets.iter().map(|a| &a.name).collect::<Vec<_>>());\n        continue;\n    }\n};","preventionTips":["Pin updates to known-good release tags whose asset matrix you have verified","On non-mainstream platforms, rely on source builds rather than 'sd update'","Log the available asset names in the error to make diagnosis one-step"],"tags":["cli","update","release","distribution"],"backgroundTag":null,"analyzedSha":"6dfeccf2113039e35f2ce735f945e70dc3e4ea45","analyzedAt":"2026-08-16T11:26:17.074Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}