chroma-core/chroma · critical
Unsupported platform: ${process.platform}
Error message
Unsupported platform: ${process.platform} What it means
Thrown at module load time by the chromadb package's bindings loader when process.platform is not darwin, linux, or win32. No prebuilt native binding exists for any other operating system, so the import of the native-bindings flavor of chromadb fails immediately on unsupported platforms.
Source
Thrown at clients/js/packages/chromadb/src/bindings.ts:31
}
} else if (process.platform === "linux") {
if (process.arch === "arm64") {
binding = require("chromadb-js-bindings-linux-arm64-gnu");
} else if (process.arch === "x64") {
binding = require("chromadb-js-bindings-linux-x64-gnu");
} else {
throw new Error(`Unsupported architecture on Linux: ${process.arch}`);
}
} else if (process.platform === "win32") {
if (process.arch === "arm64") {
binding = require("chromadb-js-bindings-win32-arm64-msvc");
} else {
throw new Error(
`Unsupported Windows architecture: ${process.arch}. Only ARM64 is supported.`,
);
}
} else {
throw new Error(`Unsupported platform: ${process.platform}`);
}
export default binding;
View on GitHub (pinned to aecdd12c8a)
Solutions
- Switch to the pure-JS client packages (chromadb-core / chromadb-cloud) that talk HTTP to a Chroma server and need no native binding.
- Run the workload inside a Linux container/VM on the target host.
Defensive patterns
Strategy: fallback
Validate before calling
const knownPlatforms = new Set(["darwin", "linux", "win32"]);
if (!knownPlatforms.has(process.platform)) {
// route to the pure-JS HTTP client instead of the native package
const { ChromaClient } = await import("chromadb-core");
} Prevention
- Gate the native import behind an allowlist of process.platform values.
- Run unusual-OS workloads in Linux containers.
- Smoke-test imports on every target OS in CI before shipping.
When it happens
Trigger: import "chromadb" on freebsd, openbsd, sunos, aix, or android Node builds; unusual runtimes that report non-standard process.platform values.
Common situations: Deploying to BSD-based servers or NAS devices; edge runtimes that emulate Node partially; very rare in typical web app deployments.
Related errors
- Unsupported architecture on macOS: ${process.arch}
- Unsupported architecture on Linux: ${process.arch}
- Unsupported Windows architecture: ${process.arch}. Only ARM6
- Unsupported platform: ${platform}
AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16).
Data as JSON: /api/errors/beb2ba5b57564642.
Report an issue: GitHub.