End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.
Use this skill for Parallels guest workflows and smoke interpretation. Do not load it for normal repo work.
openclaw gateway status --deep --require-rpc unless the stable version being checked does not support it yet.2026.3.12 pre-upgrade diagnostics may require a plain gateway status --deep fallback.precheck=latest-ref-fail on that stable pre-upgrade lane as baseline, not automatically a regression.--json for machine-readable summaries./tmp/openclaw-parallels-*.main is moving under active multi-agent work, prefer a detached worktree pinned to one commit for long Parallels suites. The smoke scripts now verify the packed tgz commit instead of live git rev-parse HEAD, but a pinned worktree still avoids noisy rebuild/version drift during reruns.prlctl exec, pass the VM name before --current-user (prlctl exec "$VM" --current-user ...), not the other way around.pnpm openclaw ... inside the repo is not enough for handoff parity.NPM_CONFIG_PREFIX="$HOME/.npm-global" npm install -g .~/.local/bin/openclaw exists or ~/.npm-global/bin is on PATHwhich openclaw and openclaw --versionpnpm test:parallels:npm-updateopenai/gpt-5.4 before the agent turn and use a fresh explicit --session-id so old session model state does not leak into the check.parallels-linux-smoke.sh before both fresh and update lanes. On Peter's current host, missing Ubuntu 24.04.3 ARM64 should fall back to Ubuntu 25.10.gateway status / agent; in-place global npm updates can otherwise leave stale hashed dist/* module imports alive in the running service.prlctl exec ... powershell -EncodedCommand ... transport. The guest can finish successfully while the outer prlctl exec still hangs.HOME=/root, pass OPENAI_API_KEY via prlctl exec ... /usr/bin/env, and use openclaw agent --local; the fresh Linux baseline does not rely on persisted gateway credentials.runDir first (macos-fresh.log, windows-fresh.log, linux-fresh.log, macos-update.log, windows-update.log, linux-update.log) instead of assuming the outer wrapper hung./tmp/openclaw-parallels-npm-update.*.-- arg so pnpm test:parallels:* -- --json and similar forwarded invocations work without needing to call bash scripts/e2e/... directly.pnpm test:parallels:macosmacOS 26.3.1 latest.fresh-latest-march-2026 can hang in prlctl snapshot-switch; if restore times out there, rerun with --snapshot-hint 'macOS 26.3.1 latest' before blaming auth or the harness.openclaw dashboard --no-open, verify the served HTML contains the Control UI title/root shell, then open Safari and require an established localhost TCP connection from Safari to the gateway port.500 on /, /healthz, or __openclaw/control-ui-config.json after fresh.install-main or upgrade.install-main, suspect bundled plugin runtime deps resolving from the package root node_modules rather than dist/extensions/*/node_modules. Repro quickly with a real npm pack/global install lane before blaming dashboard auth or Safari.prlctl exec is fine for deterministic repo commands, but use the guest Terminal or prlctl enter when installer parity or shell-sensitive behavior matters.openclaw agent --message ... checks should go through a guest shell wrapper (guest_current_user_sh / guest_current_user_cli or /bin/sh -lc ...), not raw prlctl exec ... node openclaw.mjs ..., or the message can be split into extra argv tokens and Commander reports too many arguments for 'agent'.OPENAI_API_KEY as an env secret ref, the post-onboard agent verification should also export OPENAI_API_KEY for the guest command. The gateway can still reject with pairing-required and fall back to embedded execution, and that fallback needs the env-backed credential available in the shell.brew exists but node may be missing from PATH in noninteractive exec. Use /opt/homebrew/bin/node when needed.HOME=/var/root, then run onboarding as the desktop user via prlctl exec --current-user.extensions/*; do not treat that as an onboarding or gateway failure unless plugin loading is the task.pnpm test:parallels:windowspre-openclaw-native-e2e-2026-03-12.prlctl exec --current-user; plain prlctl exec lands in NT AUTHORITY\\SYSTEM.npm.cmd and openclaw.cmd.-ExecutionPolicy Bypass, then call the .cmd shims from inside it.openclaw agent --message ... checks should call & $openclaw ... inside PowerShell, not Start-Process ... -ArgumentList against openclaw.cmd, or Commander can see split argv and throw too many arguments for 'agent'.npm install -g phases can stay quiet for a minute or more even when healthy; inspect the phase log before calling it hung, and only treat it as a regression once the retry wrapper or timeout trips.prlctl exec calls, and retry-on-poll-failure behavior for transient transport flakes.OPENAI_API_KEY in the PowerShell environment before invoking openclaw.cmd agent, for the same pairing-required fallback reason as macOS.upgrade.install-main and before upgrade.onboard-ref. Restarting before onboard can leave the old process alive on the pre-onboard token while onboard rewrites ~/.openclaw/openclaw.json, which then fails gateway-health with unauthorized: gateway token mismatch.pnpm test:parallels:npm-update passes, trust the mismatch as a standalone ref-onboard ordering bug first; the npm-update helper does not re-run ref-mode onboard on the same guest.rc=255 plus an empty fresh.install-main.log or upgrade.install-main.log, treat it as a likely prlctl exec transport drop after guest start-up, not immediate proof of an npm/package failure.pnpm test:parallels:linuxUbuntu 24.04.3 ARM64.Ubuntu 25.10.prlctl exec; --current-user is not the right transport on this snapshot.curl, and apt-get update can fail on clock skew. Bootstrap with apt-get -o Acquire::Check-Date=false update and install curl ca-certificates.main tgz smoke still needs the latest-release installer first because the snapshot has no Node or npm before bootstrap.systemd --user session; managed daemon install is unsupported.setsid openclaw gateway run --bind loopback --port 18789 --force launch with HOME=/root and the provider secret exported, then verifies gateway status --deep --require-rpc when available./tmp/openclaw-parallels-linux-gateway.log in the guest phase logs first; the common failure mode is a missing provider secret in the launched gateway environment.--discord-token-env--discord-guild-id--discord-channel-idopenclaw message send/read, not node openclaw.mjs message ....channels.discord.guilds as one JSON object, not dotted config paths with snowflakes.prlctl enter or expect-driven Discord config scripts; prefer prlctl exec --current-user /bin/sh -lc ... with short commands.parallels-discord-roundtrip skill is the deep-dive companion.