What:
- rewrite the README runtime plugin section around upstream install commands and Nix inputs
- make the shrinkwrap or bundled node_modules packageability rule explicit
- keep lower-level OpenClaw plugin load paths and nix-openclaw tool plugins documented below the main path
Why:
- make the feature readable for end users comparing regular OpenClaw plugin installs to nix-openclaw config
- avoid implying that old supported plugin paths were removed
- align the docs with the locked npm/ClawHub source API and fake-hash flow
Tests:
- git diff --check: passed
- read-only subagent docs review: no blocker; polish integrated
- read-only subagent implementation/docs consistency review: factual findings integrated
GitHub macOS runners also hit Node's default heap limit in the declaration entrypoint writer after tsc completed. Run that declaration postprocess with the same NODE_OPTIONS used for the TypeScript declaration build.
Tests:
- bash -n nix/scripts/gateway-build.sh nix/scripts/source-checks-build.sh
- git diff --check
- nix build .#openclaw-gateway --accept-flake-config --print-build-logs
- result/bin/openclaw --version
The previous Darwin repair moved plugin SDK declaration generation from tsgo to tsc, but GitHub's macOS runner hit Node's default heap limit at that step. Give the TypeScript declaration build an explicit 4GB heap while preserving any existing NODE_OPTIONS.
Tests:
- bash -n nix/scripts/gateway-build.sh nix/scripts/source-checks-build.sh
- git diff --check
- nix build .#openclaw-gateway --accept-flake-config --print-build-logs
- result/bin/openclaw --version
- nix build .#checks.aarch64-darwin.ci --accept-flake-config --print-build-logs
What:
- keep the agent workspace template assertion on the stable package contents check
- let the dogfood contents check keep covering its older patched gateway surface without requiring the newer src/agents template path
Why:
- current main CI was red because the dogfood gateway intentionally tracks an older OpenClaw commit that predates src/agents/templates
- the stable OpenClaw package still verifies HEARTBEAT.md is packaged at the runtime bootstrap path
Tests:
- GITHUB_ACTIONS=true scripts/update-pins.sh select
- scripts/check-flake-lock-owners.sh
- node scripts/select-openclaw-release.test.mjs
- bash -n scripts/update-pins.sh
- ruby workflow YAML parse
- nix flake show --accept-flake-config
- nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link
- nix build --accept-flake-config .#checks.aarch64-darwin.package-contents-dogfood --no-link
- nix build --accept-flake-config .#checks.aarch64-darwin.ci --no-link
- scripts/hm-activation-macos.sh
Copy src/agents/templates into the gateway package so runtime workspace bootstrap can load HEARTBEAT.md from packageRoot/src/agents/templates.
Add a package-contents assertion for the template path to catch regressions.
Test: nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link
Use OpenClaw's run-tsgo wrapper for plugin SDK declaration generation on Darwin, where direct tsc OOMs in CI.
Keep Linux on direct tsc because the pinned Linux offline install does not provide node_modules/.bin/tsgo.
Tests: nix build .#checks.aarch64-darwin.ci --no-link
Tests: nix build .#checks.x86_64-linux.source-checks --no-link
Lower the Darwin tsdown heap default to 1024 MB while preserving the Linux 8192 MB default. The 2048 MB cap still aborted in hosted macOS while packaging OpenClaw v2026.5.27; the 1024 MB gateway build and Darwin CI aggregator pass locally.
Use explicit --option max-jobs 1 in hosted macOS CI and yolo validation so the Darwin aggregator asks Nix for serial local builds without changing the checked package contract.
Tests: scripts/check-flake-lock-owners.sh; node --test scripts/select-openclaw-release.test.mjs; bash -n scripts/update-pins.sh; bash -n nix/scripts/gateway-build.sh; bash -n nix/scripts/source-checks-build.sh; workflow YAML parse; git diff --check; GITHUB_ACTIONS=true scripts/update-pins.sh select; nix flake show --accept-flake-config; nix build .#openclaw-gateway --accept-flake-config; nix build --accept-flake-config --option max-jobs 1 .#checks.aarch64-darwin.ci; scripts/hm-activation-macos.sh; nix build .#checks.x86_64-linux.ci --accept-flake-config
Run the aarch64-darwin CI aggregator with --max-jobs 1 on GitHub-hosted macOS runners. The gate still builds the same checks, but no longer runs concurrent gateway derivations inside the runner memory envelope.
Apply the same command in the yolo macOS validation job and its generated commit evidence.
Tests: scripts/check-flake-lock-owners.sh; node --test scripts/select-openclaw-release.test.mjs; bash -n scripts/update-pins.sh; bash -n nix/scripts/gateway-build.sh; bash -n nix/scripts/source-checks-build.sh; workflow YAML parse; git diff --check; GITHUB_ACTIONS=true scripts/update-pins.sh select; nix flake show --accept-flake-config; nix build .#checks.aarch64-darwin.ci --accept-flake-config --max-jobs 1; scripts/hm-activation-macos.sh; nix build .#checks.x86_64-linux.ci --accept-flake-config
Cap the Darwin tsdown heap at 2048 MB while preserving the Linux default, so hosted macOS runners have room for the gateway build process itself.
Keep the release-owned DTS build skipped in the Nix tsdown phase; the package scripts still generate the plugin SDK declarations explicitly afterward.
Tests: scripts/check-flake-lock-owners.sh; node --test scripts/select-openclaw-release.test.mjs; bash -n scripts/update-pins.sh; bash -n nix/scripts/gateway-build.sh; bash -n nix/scripts/source-checks-build.sh; workflow YAML parse; GITHUB_ACTIONS=true scripts/update-pins.sh select; nix flake show --accept-flake-config; nix build .#openclaw-gateway --accept-flake-config; nix build .#checks.aarch64-darwin.ci --accept-flake-config; scripts/hm-activation-macos.sh; nix build .#checks.x86_64-linux.ci --accept-flake-config
What:
- add a source-artifact RFC for pinned git, path, archive, and npm-pack-adjacent runtime plugin sources
- add a compatible bundle and marketplace RFC to keep Claude/Codex/Cursor bundle imports separate from native runtimePlugins
Why:
- cover the remaining OpenClaw plugin install source classes without turning arbitrary npm support into a catch-all
- preserve clear Nix boundaries around pinned artifacts, mutable marketplace state, live local links, and compatible bundle capability mapping
Tests:
- git diff --check: pass
- nix flake check --all-systems --no-build --show-trace: pass
Add the next runtime-plugin source RFC for OpenClaw catalog-pinned external npm plugins. Keep the current pin report-only because WeCom, Yuanbao, and Weixin have runtime dependencies without package-owned locks or bundled node_modules.
Validation: git diff --check; nix flake check --no-build.
Add the next-slice RFC for official runtime plugins whose published tarballs are shrinkwrapped but not self-contained. Clarify that memory-lancedb can be the first materialized candidate, codex remains skipped behind lifecycle/runtime proof, and ACPX stays on the bundled dist-runtime path.
Also tighten the prior runtime plugin RFCs so ACPX is no longer treated as a materialization candidate and cold discovery uses plugins list --json.
Validation: git diff --cached --check; git diff --check; nix flake check --no-build; adversarial review agents passed with no blocking findings.
What:
- distinguish OpenClaw runtime plugins from nix-openclaw plugins near the front of the README
- remove public npm runtime plugin install guidance
- mark the npm runtime bridge as implementation-only until structural plugin support is fixed
Why:
- prevent users from treating nix-openclaw plugin docs as support for ClawHub/npm/channel plugins
- keep the current supported plugin surface explicit
Tests:
- git diff --check: passed
- nix build --accept-flake-config .#checks.aarch64-darwin.ci --no-link: passed
What:
- update nix-openclaw to the latest stable OpenClaw source release
- refresh generated config options from that source
- keep the macOS app pin on the newest public app artifact
Why:
- keep source-built OpenClaw current without blocking on public macOS app asset lag
Tests:
- nix build .#checks.x86_64-linux.ci --accept-flake-config
- nix build .#checks.aarch64-darwin.ci --accept-flake-config
- scripts/hm-activation-macos.sh