OpenClaw Parallels Smoke
Use this skill for Parallels guest workflows and smoke interpretation. Do not load it for normal repo work.
Global rules
- Use the snapshot most closely matching the requested fresh baseline.
- Gateway verification in smoke runs should use
openclaw gateway status --deep --require-rpcunless the stable version being checked does not support it yet. - Stable
2026.3.12pre-upgrade diagnostics may require a plaingateway status --deepfallback. - Treat
precheck=latest-ref-failon that stable pre-upgrade lane as baseline, not automatically a regression. - Pass
--jsonfor machine-readable summaries. - Per-phase logs land under
/tmp/openclaw-parallels-*. - Do not run local and gateway agent turns in parallel on the same fresh workspace or session.
macOS flow
- Preferred entrypoint:
pnpm test:parallels:macos - Default to the snapshot closest to
macOS 26.3.1 latest. - On Peter's Tahoe VM,
fresh-latest-march-2026can hang inprlctl snapshot-switch; if restore times out there, rerun with--snapshot-hint 'macOS 26.3.1 latest'before blaming auth or the harness. prlctl execis fine for deterministic repo commands, but use the guest Terminal orprlctl enterwhen installer parity or shell-sensitive behavior matters.- On the fresh Tahoe snapshot,
brewexists butnodemay be missing from PATH in noninteractive exec. Use/opt/homebrew/bin/nodewhen needed. - Fresh host-served tgz installs should install as guest root with
HOME=/var/root, then run onboarding as the desktop user viaprlctl exec --current-user. - Root-installed tgz smoke can log plugin blocks for world-writable
extensions/*; do not treat that as an onboarding or gateway failure unless plugin loading is the task.
Windows flow
- Preferred entrypoint:
pnpm test:parallels:windows - Use the snapshot closest to
pre-openclaw-native-e2e-2026-03-12. - Always use
prlctl exec --current-user; plainprlctl execlands inNT AUTHORITY\\SYSTEM. - Prefer explicit
npm.cmdandopenclaw.cmd. - Use PowerShell only as the transport with
-ExecutionPolicy Bypass, then call the.cmdshims from inside it. - Keep onboarding and status output ASCII-clean in logs; fancy punctuation becomes mojibake in current capture paths.
Linux flow
- Preferred entrypoint:
pnpm test:parallels:linux - Use the snapshot closest to fresh
Ubuntu 24.04.3 ARM64. - If that exact VM is missing on the host, fall back to the closest Ubuntu guest with a fresh poweroff snapshot. On Peter's host today, that is
Ubuntu 25.10. - Use plain
prlctl exec;--current-useris not the right transport on this snapshot. - Fresh snapshots may be missing
curl, andapt-get updatecan fail on clock skew. Bootstrap withapt-get -o Acquire::Check-Date=false updateand installcurl ca-certificates. - Fresh
maintgz smoke still needs the latest-release installer first because the snapshot has no Node or npm before bootstrap. - This snapshot does not have a usable
systemd --usersession; managed daemon install is unsupported. prlctl execreaps detached Linux child processes on this snapshot, so detached background gateway runs are not trustworthy smoke signals.- Treat
gateway=skipped-no-detached-linux-gatewayplusdaemon=systemd-user-unavailableas baseline on that Linux lane, not a regression.
Discord roundtrip
- Discord roundtrip is optional and should be enabled with:
--discord-token-env--discord-guild-id--discord-channel-id
- Keep the Discord token only in a host env var.
- Use installed
openclaw message send/read, notnode openclaw.mjs message .... - Set
channels.discord.guildsas one JSON object, not dotted config paths with snowflakes. - Avoid long
prlctl enteror expect-driven Discord config scripts; preferprlctl exec --current-user /bin/sh -lc ...with short commands. - For a narrower macOS-only Discord proof run, the existing
parallels-discord-roundtripskill is the deep-dive companion.