Install¶
Canonical agent/operator install reference also lives at the repository root:
INSTALL.md.
This page is the documentation-site copy of the same happy path.
Prerequisites (must be on PATH before running install):
- Node.js 20+. No .NET SDK on the install machine.
- Cosign (install guide) — required for signature verification since v1.0.0-rc.3 (
signaturePolicy=required-cosign-v1)
Published release: 1.3.0
Public install default (unset OCCAM_VERSION): 1.3.0.
Supported release channel¶
The supported release channel is a GitHub Release tarball plus the bootstrap
scripts. The bootstrap downloads ff-occam-<ver>-<rid>.tar.gz, verifies its
manifest and SHA-256 (and Cosign when signaturePolicy=required-cosign-v1),
runs doctor, and connects your MCP host.
| Channel | Supported? | Notes |
|---|---|---|
get-ff-occam.sh / get-ff-occam.ps1 bootstrap |
Yes | Recommended release path |
| Manual tarball + manifest from GitHub Releases | No | Integrity inspection only; bypasses guarded install and onboarding |
git clone + doctor (contributors) |
Build path | Requires .NET 10 SDK |
npx @ff-occam/mcp |
No | Not a supported release channel |
Cosign .bundle on Releases |
Policy-gated | Always SHA-256 vs manifest. When the manifest declares signaturePolicy=required-cosign-v1 (published v1.0.0-rc.3+), the installer verifies the Cosign bundle fail-closed and requires the cosign CLI. Undeclared / sha256-only (published v1.0.0-rc.2) stays SHA-256-only. Authenticity ≠ page-content truth. |
Public binaries are published for exactly win-x64, linux-x64, and
osx-arm64. Intel macOS, Linux ARM64, Windows ARM64, and other architectures are
not release-install targets. The bootstrap rejects them before any network
request. OCCAM_RID accepts only those three published values; it is not an
emulation or cross-platform compatibility switch.
One command¶
Bootstrap scripts are tag-pinned to v1.3.0 (not mutable main). Tip-of-tree installer text: replace v1.3.0 with main.
What the installer does¶
The bootstrap selects install behavior from the release manifest contract, not from a hard-coded RC number:
| Manifest | Install contract |
|---|---|
no runtimeLayout (published v1.0.0-rc.2) |
Legacy Level B: SHA-256; operator CLI may refresh from the repository overlay |
runtimeLayout=self-contained-v1 (published v1.0.0-rc.3+) |
Self-contained: SHA-256 + archive preflight + complete runtime closure; no executable helper overlay; Cosign when signaturePolicy=required-cosign-v1 |
unknown runtimeLayout / unknown signaturePolicy |
Fail closed |
Public default (no OCCAM_VERSION): 1.3.0. Set OCCAM_VERSION=1.2.0, 1.1.1, 1.1.0, 1.0.0, 1.0.0-rc.5, 1.0.0-rc.4, 1.0.0-rc.3, or 1.0.0-rc.2 only for an older channel.
- Downloads
ff-occam-<ver>-<rid>.tar.gz+ff-occam-<ver>-<rid>-manifest.jsonfrom GitHub Releases - Requires the manifest version and RID to match the request, then verifies the archive SHA-256. When
signaturePolicy=required-cosign-v1is declared, also verifies the Cosign bundle fail-closed (legacy undeclared/sha256-onlystays SHA-256-only). For self-contained manifests, archive-member preflight runs before extract - Extracts to staging. Self-contained installs validate the platform host,
VERSION, inner manifest, and bundled runtime helpers before replacingOCCAM_INSTALL_DIR. An existing target must itself be a consistent Occam release for the current RID (innerlayout: level-bmarkers); source checkouts, links/reparse points, and unknown directories are refused before processes stop or files move - Self-contained: uses only helpers inside that verified archive (no mutable post-install executable helper overlay). Legacy Level B: may refresh operator CLI helpers from the repository overlay. Canonical bootstrap URLs are tag-pinned (
v1.3.0); tip-of-treemainraw URL remains optional for operators who want the newest installer text - Runs doctor (
--skip-build) — npm workers, Playwright Chromium, host binary check (quiet by default) - Verifies the Occam host by required tool identity — default
readerexposes 11 core tools;fullexposes 18 - Writes onboard defaults →
~/.occam/onboard.json(known install path; no re-prompt) - Installs the user launcher transactionally. It replaces only exact Occam-generated current or previous-release launchers and refuses unrelated
occam,occam.cmd, oroccam.ps1files - Runs
occam connectfor live-validated AI/MCP hosts (one host auto; multiple confirm first) - Reports Ready only after host verification (or Installed / Almost ready / Action required)
- Keeps the previous release tree through all post-install checks; failure stops processes from the new tree and restores the previous tree (or removes a failed fresh tree)
OCCAM_VERBOSE=1 shows doctor/smoke internals. Human walkthrough: Quick Start · Hosts: MCP hosts
What install mutates¶
| Location | What gets written |
|---|---|
OCCAM_INSTALL_DIR / OCCAM_HOME |
Release tree: scripts/, workers/, AOT host binary |
~/.occam/onboard.json |
Operator defaults merged into every launcher invocation |
~/.occam/keys/signing-key.pem |
Minted on first host start (even when OCCAM_RECEIPTS=off) |
| Host MCP config files | occam connect registrations + *.occam-bak backups |
| Playwright browser cache | Chromium downloaded by doctor when needed |
Uninstall honesty: removing the install directory alone does not remove ~/.occam/, host MCP configs, skill directories, or Playwright cache. Use occam uninstall --dry-run before the scoped removal flow below. See Trust: installation safety.
Doctor¶
Doctor installs worker dependencies and verifies the host can start:
export OCCAM_HOME="${OCCAM_INSTALL_DIR:-$HOME/.local/share/ff-occam}"
export PATH="$OCCAM_HOME/scripts:$PATH"
occam doctor
# or: bash "$OCCAM_HOME/scripts/occam-doctor.sh" --skip-build
Re-run doctor after upgrades or when you see workers_unavailable.
If workers crash with ERR_MODULE_NOT_FOUND (empty/corrupt node_modules), repair npm deps without a full doctor:
occam install-workers # npm ci/install until HTTP markers resolve
occam install-workers --force # re-run even when markers look healthy
occam install-workers --with-browser # also install Playwright Chromium
Release tarballs intentionally omit workers/node_modules; doctor / install-workers populate them after extract.
Connect¶
- Live validated hosts are configured automatically when detected.
- Config validated hosts need an explicit name, e.g.
occam connect --only vscode. - Connect backs up before write, writes atomically, and does not overwrite unmanaged
ff-occamentries unless you pass--force. - Connect makes no network calls for registration — it only touches local files and may start the local Occam server to verify it responds.
Disconnect or uninstall¶
Start with a read-only preview:
occam disconnect removes only host registrations recognized as Occam-managed.
occam uninstall disconnects those hosts, removes the generated launcher, and
then removes a recognized release install tree. The preview also inventories the
opt-in response cache and shared Playwright cache. Unmanaged entries, source
checkouts, backups, skills, both caches, and ~/.occam/ state are preserved by
default.
Use occam uninstall --remove-cache to delete the narrow Occam response cache
(OCCAM_CACHE_DIR, default {TEMP}/occam-cache). The shared Playwright browser
cache is never removed automatically.
Use occam uninstall --remove-state only when you also intend to delete signing
keys, session profiles, and operator settings. See
Installation and connect safety.
Verify¶
export OCCAM_HOME="${OCCAM_INSTALL_DIR:-$HOME/.local/share/ff-occam}"
export PATH="$OCCAM_HOME/scripts:$PATH"
occam smoke
occam connect
Expect exit 0. Tool count follows OCCAM_PROFILE (default reader = 11; full = 18).
Optional environment¶
| Variable | Default | Purpose |
|---|---|---|
OCCAM_SETUP |
auto |
auto | manual | ask |
OCCAM_CONNECT_ALL |
unset | 1 — connect every detected Tier-A host without a prompt |
OCCAM_CONNECT_ONLY |
unset | id or id,id — connect those Tier-A hosts only (ignored if OCCAM_CONNECT_ALL=1) |
OCCAM_HOST |
(none) | Legacy fallback snippet preference (hermes | cursor) — does not replace connect; use OCCAM_CONNECT_ONLY to pre-select |
OCCAM_INSTALL_DIR |
~/.local/share/ff-occam |
Install root |
OCCAM_VERSION |
1.3.0 (public default) |
Release version; set an older tag only for a legacy channel |
OCCAM_RID |
detected | Published RID override: win-x64 | linux-x64 | osx-arm64 only |
Do not¶
| Wrong | Why |
|---|---|
npx @ff-occam/mcp |
Not a supported release channel |
Trust Cosign without reading signaturePolicy |
Always verify SHA-256. Cosign is required only when the manifest declares required-cosign-v1; it proves release authenticity/signer identity, not page-content truth |
| Bare clone without .NET 10 | Source only — no AOT binary without doctor build |
Contributor clone + build: see root INSTALL.md.