tinyhumansai/openhuman · error
no prebuilt Node.js distribution for host {os}/{arch} — set
Error message
no prebuilt Node.js distribution for host {os}/{arch} — set node.enabled=false or install node manually What it means
The Node.js distribution downloader has no prebuilt archive mapping for the host's OS/architecture combination (`host_archive_suffix` matched no arm in its table). This fires on platforms nodejs.org does not ship tarballs for — e.g. musl-based or BSD hosts — so managed Node provisioning is impossible on this machine. The message offers the two supported escapes: disable managed Node, or bring your own Node install.
Source
Thrown at src/openhuman/runtime/node/downloader.rs:99
} else {
format!("v{trimmed}")
}
}
/// Return `(archive_suffix, is_zip)` for the current host. The suffix omits
/// the `node-vX.Y.Z-` prefix because callers always interpolate the version.
fn host_archive_suffix() -> Result<(&'static str, bool)> {
let os = std::env::consts::OS;
let arch = std::env::consts::ARCH;
match (os, arch) {
("macos", "aarch64") => Ok(("darwin-arm64.tar.xz", false)),
("macos", "x86_64") => Ok(("darwin-x64.tar.xz", false)),
("linux", "aarch64") => Ok(("linux-arm64.tar.xz", false)),
("linux", "x86_64") => Ok(("linux-x64.tar.xz", false)),
("linux", "arm") | ("linux", "armv7") => Ok(("linux-armv7l.tar.xz", false)),
("windows", "aarch64") => Ok(("win-arm64.zip", true)),
("windows", "x86_64") => Ok(("win-x64.zip", true)),
_ => Err(anyhow!(
"no prebuilt Node.js distribution for host {os}/{arch} — set node.enabled=false or install node manually"
)),
}
}
/// Fetch `SHASUMS256.txt` for the release and return a
/// `archive_name -> sha256_hex` map. The hex digest is lowercase.
pub async fn fetch_shasums(client: &Client, version: &str) -> Result<HashMap<String, String>> {
let version = normalize_version(version);
let url = format!("{NODEJS_DIST_BASE}/{version}/SHASUMS256.txt");
tracing::debug!(url = %url, "[node_runtime::downloader] fetching SHASUMS256.txt");
let body = client
.get(&url)
.send()
.await
.with_context(|| format!("GET {url}"))?
.error_for_status()View on GitHub (pinned to 7491200858)
Solutions
- Install Node.js manually (nvm/system package) — the runtime detects and reuses an existing install
- Disable managed provisioning in config: set `node.enabled = false`
- Do not wait for a fix: the mapping table only covers platforms with upstream prebuilt tarballs
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at src/openhuman/runtime/node/downloader.rs:99 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/82fbf6a85aa7050c.
Report an issue: GitHub.