Warum ein stabiler Remote-Mac für OpenClaw im 7x24-Betrieb zählt
Ein 7x24-Gateway braucht stabile APFS-Pfade, konsistente darwin_arm64-Binaries und dieselbe launchd-Konvention wie Ihre Referenz. Ein dedizierter Remote-Mac verringert das Risiko abgebrochener Handshakes spürbar. OPENCLAW_HOME pro Job isolieren, damit zusammengeführte Gate-Logs auditierbar bleiben.
Voraussetzungen: Node 22.14+ oder 24 sowie Verzeichnis-Isolation
Setzen Sie Node 22.14 LTS oder Node 24 als Floor; loggen Sie node -v und npm config get prefix pro Gate.
Kein gemeinsames Datenverzeichnis zwischen Jobs: OPENCLAW_HOME="$RUNNER_TEMP/openclaw/$CI_JOB_ID", OPENCLAW_CONFIG_HOME="$OPENCLAW_HOME/config", mkdir -p mit 700, Git-Checkout getrennt. Standard-Listener oft 127.0.0.1:18789.
Typische Engpässe: interaktive Installer; Secret-Drift zwischen CI und launchd; doppelter Listener auf 18789.
| Risiko | Signal im Log | Massnahme |
|---|---|---|
| Konkurrierende Homes | invalid-key / gemischte Skills |
Ein Unterverzeichnis pro CI_JOB_ID |
| CLI-Drift | which openclaw wechselt |
npm install -g "openclaw@^…" pinnen |
| Platte | ENOSPC bei doctor |
≥20 GiB frei auf Shared Hosts |
- Secret-Namen Staging/Produktion identisch.
openclaw-gate.log-Retention wie andere Gates.- Image mit
/opt/homebrew, falls Installer Brew erwartet.
Offizieller Pfad: OpenClaw Installer unter macOS (npm)
Der OpenClaw Installer (Hummer-Marke im Terminal) erkennt macos, plant npm (oft latest — in CI semver pinnen) und zeigt Phasen wie [1/3] Preparing environment. Der Banner-Hinweis zu fehlenden API-Keys ist kein Scherz: injizieren Sie Provider-Keys und OPENCLAW_GATEWAY_TOKEN nur aus dem Secret-Store, niemals in Klartextlogs oder Screenshots.
Fehlt Brew, schlägt die Nachinstallation fehl (Installing Homebrew failed — re-run with --verbose): Trace einmal erfassen, Brew ins Golden Image legen.
node -v
# Erwartung: v22.14.x+ oder v24.x — sonst Job abbrechen
node -e 'const p=process.versions.node.split(".").map(Number);process.exit(p[0]>=24||(p[0]===22&&p[1]>=14)?0:1)' && echo "node ok"
npm install -g "openclaw@^2026.3.0"
command -v openclaw
openclaw --version
Nicht-interaktives Onboarding: Parametertabelle
Vor YAML-Freeze openclaw onboard --help auf dem Image prüfen. Tabelle = Absicht → echte Flags.
| Ziel | Typische Variable / Flag-Richtung | CI-Hinweis |
|---|---|---|
| Prompts unterdrücken | CI=true plus Ja-/Non-Interactive-Flags aus --help |
Keine Passwörter per stdin in Logs pipen |
launchd-Daemon |
onboard mit install-daemon-Semantik |
Nur auf persistenten Gateways, nicht auf Wegwerf-PR-Jobs |
| Provider-API-Keys | OPENAI_API_KEY usw. laut openclaw.json |
Namen in Plist-EnvironmentVariables spiegeln |
| Webhook-Inbound | OPENCLAW_GATEWAY_TOKEN |
Dateirechte 600, Rotation mit Dual-Write |
| Instanzwurzeln | OPENCLAW_HOME, OPENCLAW_CONFIG_HOME |
Unterverzeichnis pro Job auf geteilten Macs |
CI-Job-Kette: stdout und stderr in einer Gate-Datei zusammenführen
doctor → stderr, config validate → stdout; mit tee eine Logdatei. Skript nach Tool-Installation, vor Merge auf main oder als Required Check bei Änderungen an openclaw.json. Artefakt-Upload analog Config-Validate CI-Gate.
#!/usr/bin/env bash
set -euo pipefail
export OPENCLAW_HOME="${OPENCLAW_HOME:-$RUNNER_TEMP/openclaw/$CI_JOB_ID}"
export OPENCLAW_CONFIG_HOME="${OPENCLAW_CONFIG_HOME:-$OPENCLAW_HOME/config}"
mkdir -p "$OPENCLAW_CONFIG_HOME"
LOG="${OPENCLAW_GATE_LOG:-openclaw-gate.log}"
rm -f "$LOG"
{
echo "=== node ==="
node -v
echo "=== which openclaw ==="
command -v openclaw
echo "=== doctor ==="
openclaw doctor
echo "=== config validate ==="
openclaw config validate --config "$OPENCLAW_CONFIG_HOME/openclaw.json"
} 2>&1 | tee "$LOG"
if grep -E 'EADDRINUSE|invalid-key|unauthorized|401' "$LOG"; then
echo "Gate: blockierende Signaturen in $LOG" >&2
exit 1
fi
Checkliste vor dem Merge (in PR-Vorlage einfügen)
- Node-Zeile zeigt 22.14+ oder 24.x; OpenClaw-CLI ist gepinnt.
OPENCLAW_HOMEist job-eindeutig und im Log sichtbar.openclaw-gate.logenthält doctor- und validate-Abschnitte mit Exitcode 0.- Tarball-Checksum dokumentiert, falls sich Produktions-Plists geändert haben.
- Portscan für 18789 sauber zum vorgesehenen Bind.
openclaw doctor parsen und Rollback-Checkpoints
doctor: FAIL/WARN/Provider per grep den Variablen zuordnen. Vor Risiko tar czf openclaw-checkpoint.tgz -C "$OPENCLAW_HOME" . plus sha256sum ins Artefakt.
Rollback: unload, Tarball restore, load, kurz warten, Gate erneut — Vokabular wie Skills / Rollback / doctor.
- 18789 Standard-Loopback — in Runbooks und Security-Reviews festhalten.
- Node
22.14+oder 24.x laut Installer-Release. - openclaw-gate.log mit gleicher Retention wie andere Quality-Gates archivieren.
- Tarball-Checkpoint vor Plist- oder Routing-Experimenten auf Shared Runnern.
FAQ: Port 18789, PATH und Tokens
lsof -nP -iTCP:18789, Prozess/Label stoppen oder CI-Port in JSON.
PATH
Absolute ProgramArguments oder PATH wie im CI-Log.
Plist-EnvironmentVariables mit CI diffen, atomar deployen, restart.
Fazit
Reproduzierbar: Node 22.14+ oder 24, Installer npm, Brew-Vorbedingung, OPENCLAW_HOME pro Job, Secrets aus dem Vault, non-interactive onboard, tee-Merge von doctor und validate. Für 7x24 auf Apple Silicon: Preise, Kaufen, Hilfe, Konsole (Gratis-Blick), Blog — ohne Login-Pflicht.
Remote-Mac für OpenClaw-CI-Gates mieten
Dedizierte Apple-Silicon-Knoten, schnelles NVMe und planbare Netzwerke für zusammengeführte Gate-Logs und Dauer-Gateways. Checkout- und Hilfeseiten sind öffentlich — ohne Paywall.