2026: OpenClaw Dev, Staging und Prod auf einem gemieteten Mac mini isolieren (LaunchAgents, Ports, Secrets)
Teams liefern OpenClaw-Automatisierung auf gemieteten Mac mini M4-Hosts in Hongkong, Japan, Korea, Singapur und den USA, weil macOS zu ihren Laptops passt—doch nichts frisst Vertrauen schneller als ein Staging-Prompt, das produktive MCP-Skills verändert. Dieser Leitfaden erklärt (1) warum selbst ein Mini drei harte Grenzen braucht, (2) eine Blast-Radius-Matrix, die Seiteneffekte quantifiziert, (3) einen Ordner- und Portnamensvertrag, den Menschen greppen können, (4) ein wiederholbares LaunchAgent-Muster unter launchd, (5) wie Secrets und JSONL-Logs ohne GPU-Duplikate getrennt werden, und (6) eine Preflight-Liste vor Automation-Merges. Verknüpfungen: parallele Agenten, Secrets und Schlüsselbund, JSONL-Diagnostik.
Warum drei Umgebungen auf einem Apple-Silicon-Mini „ein Ordner YOLO“ schlägt
Finance sieht Umgebungen als Rechnungen; Plattformteams als Fehlerdomänen. Ein einzelner LaunchAgent mit Zugriff auf Slack-Webhooks und Terraform-State in Prod ist einen Merge von der Katastrophe entfernt. Dev / Staging / Prod auf einer Kiste zu splitten ist günstig, weil M4-CPU-Reserve groß ist—teuer wird schlampiges Filesharing. Isolation bringt unabhängige Rollbacks, realistische Soak-Tests ohne Kunden-Webhooks und Audit-Pfade, die „Sarah testet Skills“ von „Billing-Bot feuert“ trennen.
Wächst das Team, hängen Sie RACI neben die Matrix—niemand soll Permissions aus Ordnernamen raten. Bei Verletzungen deployen einfrieren und mit dem Upgrade-/Rollback-Playbook zurückrollen, bevor Code debuggt wird.
- Zahlen-Leitplanke: mindestens 20 GB freier APFS-Raum pro Umgebungswurzel, damit JSONL-Spitzen bei Lasttests andere Agenten nicht stoppen.
- Mensch-Leitplanke: niemals denselben Slack-Kanal für Staging-Alarme und Produktions-Vorfälle—Lärm trainiert On-Call zum Ignorieren.
- Automatisierungs-Leitplanke: Staging-
maxConcurrentTasksauf die Hälfte von Prod deckeln, bis API-Kontingente eine Woche stabil sind.
Blast-Radius-Matrix: was jede Umgebung berühren darf
| Umgebung | Erlaubte Seiteneffekte | Ohne Ticket verboten | Typischer API-Key-Umfang |
|---|---|---|---|
| Dev | Lokale Git-Branches, Sandbox-SaaS | Kunden-PII-Exporte | Read-only-Spiegel oder kurzlebige PATs |
| Staging | Vollständiger Skill-Graph auf Klondaten | Produktions-DNS-Änderungen | Separates Stripe-Testmodus + Nonprod-AWS-Rolle |
| Prod | Kunden-Workflows, Billing-Webhooks | Experimentelle Compiler | Least-Privilege-Rollen mit Quartalsrotation |
Publizieren Sie die Matrix neben dem Architekturdiagramm—Neulinge sollen nicht aus Ordnernamen auf IAM schließen.
Ordner- und Portvertrag aus Muskelgedächtnis
Legen Sie drei Geschwisterordner wie ~/openclaw-dev, ~/openclaw-staging, ~/openclaw-prod an—Staging niemals unter Prod nesten. Spiegeln Sie darin dieselben Unterordner (config, skills, logs, tmp), damit Support-Skripte identisch bleiben. Binden Sie Gateways an 127.0.0.1 mit Abstandsports: z. B. Dev 18789, Staging 18799, Prod 18809; die Lücken schlucken spontane Port-Forwards beim Pair-Debugging.
Dokumentieren Sie intern mit fünf Spalten: Umgebungsname, absoluter Pfad, TCP-Port, LaunchAgent-Label, Unix-Besitzer. „Welches plist klemmt?“ soll ein einziges grep sein.
LaunchAgent-Muster: ein plist pro Umgebung, kein Mega-plist
Drei Dateien wie com.yourorg.openclaw.dev.plist, ...staging.plist, ...prod.plist. Jedes plist setzt WorkingDirectory, EnvironmentVariables für abweichendes PATH, StandardOutPath/StandardErrorPath im jeweiligen logs-Baum. Frühzeitig ThrottleInterval 10 Sekunden, damit Crash-Schleifen Provider nicht hämmern.
Beispielgerüst (Installpfade kürzen):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.example.openclaw.staging</string>
<key>WorkingDirectory</key><string>/Users/automation/openclaw-staging</string>
<key>ProgramArguments</key><array>
<string>/opt/homebrew/bin/openclaw</string>
<string>gateway</string>
<string>--port</string><string>18799</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
</dict></plist>
127.0.0.1 binden und Fernzugriff per SSH-Portweiterleitung oder geprüftem Edge-Proxy—niemals Roh-Gateway-Ports ins öffentliche Internet.
Secrets, Logs und Rotation ohne Kreuzkontamination
API-Schlüssel in separaten Keychain-Einträgen oder .env-Dateien mit 0400, eine pro Umgebung. Wenn Prod-Keys rotieren, darf Staging nicht denselben Pfad „kurzzeitig“ lesen—dieser Shortcut wird permanent. Prefix für jedes JSONL-Ereignis wie env=staging und getrennte Dateinamen, damit Rotationsjobs keine Prod-Historie kappen, während Dev rauscht.
Health-Checks pro Umgebung auf http://127.0.0.1:<port>/healthz gemäß Probe-Mustern. Schwellen differenzieren: Dev darf bei Experimenten ~5 % flappen, Prod pagert nach zwei aufeinanderfolgenden Fehlschlägen.
Preflight-Checkliste vor Skill-Promotion in Prod
- Configs diffen: Staging-
openclaw.jsonentspricht Prod bis auf explizit gelistete Schlüssel. - Dry-Run-Replay: die letzten 50 prod-ähnlichen Events mit anonymisierten Payloads durch Staging schicken.
- Ports prüfen:
lsof -nP -iTCP -sTCP:LISTENzeigt nur beabsichtigte Loopback-Listener. - Disk:
df -hmeldet mindestens 20 GB frei auf dem APFS-Volume mit Prod-Logs. - MCP-Server: jedes Tool-Manifest zeigt auf getrennte Arbeitsverzeichnisse.
- Rollback-Probe:
launchctl unload/load für Prod-plist im Wartungsfenster üben. - Sign-off: Reviewer-Initialen im Change-Ticket—Automation verdient denselben Ernst wie App-Deploys.
FAQ
Soll Prod als root laufen? Nein—dedizierte Servicekonten mit Datei-ACLs schlagen root; root erschwert TCC und Audit.
Eine Node-Runtime teilen? Versionen können gleichen, aber NODE_OPTIONS und globale npm-Prefixe bleiben pro Umgebung—sonst PATH-Probleme wie im Homebrew-Artikel.
GitOps? Branches (main, staging, dev) spiegeln und wo möglich read-only klonen—siehe Konfig-Versionierung.
Warum ProxyMacs Mac mini zu isoliertem Multi-Env-OpenClaw passt
Nach sauberer Isolation liefert ein einzelnes Mac mini M4 weiterhin unified memory für parallele Gateways, natives macOS wie auf Entwickler-Laptops und vorhersagbare Abrechnung über HK / JP / KR / SG / US ohne CapEx-Sprünge. Das zählt, wenn Staging Swift-Pakete baut während Prod-Webhooks beantwortet werden. Stufen auf der Preisseite vergleichen, Hilfe-Center für Fernzugriffsmuster lesen und VNC bereithalten, wenn launchctl sich im Textlog nicht erklärt.
Agenten isolieren, dann Parallelität skalieren
OpenClaw auf Apple Silicon M4 · HK / JP / KR / SG / US