<!-- 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.

Related