<!-- Generated by scripts/build-supported-platforms-doc.mjs — do not edit by hand.
Run pnpm docs:platform-support. CI enforces sync via pnpm docs:platform-support:check. -->
Supported platforms
The npm package declares engines.node: ">=24", which is an install/runtime
floor — not a support claim. Qualified support is narrower than "any host that
can run Node 24": it names an exact host tuple with measured evidence. This
page is generated from the platform-support policy registry
(packages/core/src/lib/platform-support.ts) and is the authoritative
matrix. The same registry drives the CLI/MCP agent catalogs and the release
acceptance harness, so human and machine claims cannot drift.
Platform-support contract version: 1. See the
platform-support compatibility class for the
versioning, deprecation, and change-gate rules.
Support status vocabulary
Every host resolves to exactly one of four statuses. unqualified never means
"cannot run" — it means "not measured by this contract, so no promise".
| Status | Meaning |
|---|---|
| supported | Measured tuple past burn-in; every release is gated by verified evidence. Never implied by package engine compatibility. |
| preview | Published tuple with useful evidence but documented gaps; not yet burn-in-complete. |
| unqualified | Not measured by this contract. May work; no promise. Anything not listed below is unqualified. |
| unsupported | Intentionally excluded — absent evidence or a known limitation. |
Matrix
| Row | Status | OS | Arch | Node | npm | Filesystem |
|---|---|---|---|---|---|---|
| macos-26-arm64-node24-npm11-v1 | preview | macOS 26.x | arm64 | 24.x (ABI 137) | 11.x | apfs (case-insensitive) |
| macos-26-intel-unsupported | unsupported | macOS 26.x | x64 | 24.x (ABI 137) | 11.x | apfs (case-insensitive) |
| ubuntu-2404-x64-node24-npm11-v1 | preview | Ubuntu 24.x | x64 | 24.x (ABI 137) | 11.x | ext4 (case-sensitive) |
Host details
macOS 26.x on arm64 — preview
Row id: macos-26-arm64-node24-npm11-v1
| Dimension | Requirement |
|---|---|
| Operating system | macOS 26.x (process.platform = darwin) |
| Kernel | Darwin 25.x |
| Architecture | arm64 (process.arch) |
| Node.js | 24.x (module ABI 137) |
| npm | 11.x |
| Filesystem | apfs (case-insensitive) |
| Install channels | npm-exact-version, install-sh |
Apple Silicon macOS 26 on Node 24 (ABI 137) / npm 11 over APFS. Active qualification uses schema-v2 profiles (common-v2 + macos-v2); v1 artifacts remain historical verifier inputs only. Preview until 14-day burn-in and a staged release pass promote it to supported.
Acceptance profile macos-26-arm64-node24-npm11-v2 (version 2), stored at .config/platform-acceptance/macos-26-arm64-node24-npm11-v2.json. Release evidence artifact: opensip-cli-macos-qualification.v2.json. Published evidence link: not yet available — the row is in burn-in and the link is attached on promotion to supported.
macOS 26.x on x64 — unsupported
Row id: macos-26-intel-unsupported
| Dimension | Requirement |
|---|---|
| Operating system | macOS 26.x (process.platform = darwin) |
| Kernel | Darwin 25.x |
| Architecture | x64 (process.arch) |
| Node.js | 24.x (module ABI 137) |
| npm | 11.x |
| Filesystem | apfs (case-insensitive) |
| Install channels | npm-exact-version, install-sh |
This exact Intel/x64 macOS 26 / Node 24 tuple is intentionally excluded: no Intel GA evidence. Other Intel tuples remain unqualified until measured.
No qualification evidence is collected for this tuple; it is intentionally excluded.
Ubuntu 24.x on x64 — preview
Row id: ubuntu-2404-x64-node24-npm11-v1
| Dimension | Requirement |
|---|---|
| Operating system | Ubuntu 24.x (process.platform = linux) |
| Kernel | Linux 6.x |
| Architecture | x64 (process.arch) |
| Node.js | 24.x (module ABI 137) |
| npm | 11.x |
| Filesystem | ext4 (case-sensitive) |
| Install channels | npm-exact-version |
Ubuntu 24.04 LTS on x86_64 with Node 24 (ABI 137) / npm 11 over ext4 (case-sensitive). Qualified via the linux-qualification acceptance lane against published bytes. Preview until a 14-day scheduled-lane burn-in and a staged release pass promote it to supported.
Acceptance profile ubuntu-2404-x64-node24-npm11-v2 (version 2), stored at .config/platform-acceptance/ubuntu-2404-x64-node24-npm11-v2.json. Release evidence artifact: opensip-cli-linux-qualification.v2.json. Published evidence link: not yet available — the row is in burn-in and the link is attached on promotion to supported.
Unqualified hosts and unqualified dimensions
Any host tuple not listed above is unqualified: other macOS versions, Linux,
Windows, other architectures, other Node or npm majors, other filesystems, and
case-sensitive volumes. Unqualified hosts may work perfectly well — the CLI
does not block them and never claims they "cannot run" — but they carry no
evidence-backed promise. Individual dimensions are also unqualified when they
cannot be observed at classification time (see the agent projection below):
npm version, filesystem type, case behavior, install channel, the OS product
version, and kernel name/version are frequently unobserved during an ordinary
command.
Install channels
A qualified tuple is only qualified through its listed install channels — the
exact npm version and the canonical install.sh installer. Other install paths
(a Homebrew formula, a distro package, a from-source build) are not part of the
qualified claim and are treated as unqualified until they carry their own
evidence plan.
Agents and MCP
AI agents read the same registry through the machine catalog. `opensip
agent-catalog --json (and the MCP get_agent_catalog` tool) carry a
hostSupport projection built only from process-observable facts
(process.platform, process.arch, process.version,
process.versions.modules). Because npm, filesystem, case behavior, install
channel, OS product version, and kernel name/version are unobserved at runtime,
the local
match is never exact — it is partial on a clean match and none on a
contradiction. Agents must distinguish the registry row's published status
(e.g. preview) from the local match:
{
"hostSupport": {
"supportContractVersion": 1,
"status": "preview",
"match": "partial",
"rowId": "macos-26-arm64-node24-npm11-v1",
"rowStatus": "preview",
"matrixUrl": "https://opensip.ai/docs/opensip-cli/70-reference/17-supported-platforms",
"reasonCodes": [],
"observed": ["os-platform", "arch", "node-major", "node-abi"],
"unobserved": ["os-version", "kernel-name", "kernel-version", "npm-major", "filesystem-type", "case-sensitivity", "install-channel"]
}
}
A host whose (platform, arch) has no registry row projects
status: "unqualified", match: "none", and reasonCodes: ["unqualified-host"].
A host that matches a row's (platform, arch) projects that row's published
status at match: "partial" (process-only facts leave the other dimensions
unobserved) — e.g. a Linux x64 host projects the preview ubuntu row. The exact
Intel/x64 tuple projects status: "unqualified" with
reasonCodes: ["insufficient-host-facts"] until a fuller assessment observes
every dimension; only that complete tuple is unsupported, with
reasonCodes: ["unsupported-tuple"]. The CLI and MCP surfaces map the same core
projection through one shared helper, so they emit a byte-identical hostSupport
for identical process facts.
engines is not a support claim
The package engines.node range only gates installation on a too-old Node. It
says nothing about OS, kernel, architecture, Node ABI, npm major, filesystem, or
case behavior — the dimensions this matrix qualifies. Passing the engine check
is necessary, not sufficient, for a supported host.
Release evidence
A supported row is promoted only after burn-in: an exact staged version whose
required release journeys all pass, with the acceptance evidence artifact
attached to the corresponding GitHub Release. A required journey that is
skipped fails the gate — a skipped required check is treated as missing
evidence, not as a pass. Until promotion, a row stays preview and its
evidence link is absent.
Reporting a host
To request qualification of a host tuple, or to report behavior on an
unqualified one, open a GitHub issue with your opensip agent-catalog --json
hostSupport block, the output of node --version, npm --version,
sw_vers -productVersion, uname -r, and — if you ran the acceptance harness —
the evidence artifact digest. That tuple + evidence digest is what a new support
row is built from.