Vier „Same-Pool“-Fehlmodi und Verantwortungsgrenzen auf einem dedizierten M4
Ein gemieteter Mac mini M4 ist dediziert, aber nicht magisch getrennt: iOS-CI, OpenClaw Gateway, menschliches SSH und nächtliche Cron-Sonden teileneinheitlichen Speicher, eine SSD, einen launchd-Namespace und oft einen Login-Schlüsselbund. Die häufigsten 2026-Pannen sind keine „GitHub kaputt“-Stories, sondern überlappende Eigentümer ohne Ticketfelder. ErstensSpeicherdruck: paralleles xcodebuild plus Simulator-Fußabdruck plus Gateway-Spitzen drücken den Page Cache; der Agent wirkt träge, während CI „flakes“ meldet. ZweitensDisk-I/O und DerivedData: CI-Jobs löschen oder füllen Pfade, die ein laufender Agent oder ein Kanal-Webhook indirekt berührt, wenn Workspace-Skills große Repos spiegeln. DrittensPort 18789 und Listener-Wahrheit: ein zweites gateway start, ein vergessener SSH-Tunnel oder ein Runner-Healthcheck, der den falschen Socket trifft, erzeugt split-brain-Dashboards. Viertenslaunchd-Umgebungsdrift: plist WorkingDirectory, OPENCLAW_* und Runner-RUNNER_TOOL_CACHE zeigen nach einem halben Upgrade auf verschiedene Roots.
Verantwortung sollte in Änderungsdatensätzen explizit sein: Plattform besitzt Runner-Labels und Concurrency; Agent-Besitzer besitzt Gateway-Version und Workspace-Pfad; Security besitzt Keychain- und Geheimnisrotation. Wenn Logs oder Workspace-Inhalte personenbezogene oder vertrauliche Daten enthalten können, gehört im selben Datensatz eine knappeDSGVO-orientierte Linie zu Aufbewahrung, Zugriff und Löschfristen (getrennte Log-Senken, keine Team-Sync-Ordner für ~/.openclaw, Export nur über verschlüsselte Kanäle) – nicht erst beim Incident. Richten Sie die Gateway-Baseline an Persistenz-Grundlinie und offiziellem install-daemon aus, bevor Sie CI-Labels auf denselben Host legen.
Speicher: nightly Matrix + 24/7-Agent auf 16 GB ohne Fenster → Swap-Storms; in Tickets memory pressure mitschreiben.
SSD: DerivedData und Agent-skills/ auf derselben Platte ohne Quota → Build bricht, MEMORY-Schreibvorgänge stocken.
Port 18789: doppelter Daemon oder Tunnel kollidiert mit Health-Probes → falscher „grün“-Status.
launchd: Runner-Job und Gateway-Plist mit unterschiedlichem PATH → „works in SSH, fails at night“.
Wer denselben Host mit Auftragnehmern teilt, erweitert SSH-Governance um Runner-Tags: Triage darf nicht hören, der Agent sei schuld, während CI gleichzeitig den Schlüsselbund rotiert hat. Nach Migration von Agent-Speicher lesen Sie Workspace-Migration, bevor Sie CI wieder auf denselben Pfad legen.
Kontentionsmatrix: xcodebuild, Simulator, Gateway und Channels auf einem Silicon-Pool
Die Matrix unten ist keine Benchmark-Tabelle, sondernSchwellen für Akzeptanzwochen auf KVMNODE-SKUs: M4 16 GB/256, 24 GB/512 und M4 Pro mit hohem einheitlichen Speicher. Werte sind typische Team-Schmerzgrenzen; Ihre App-Größe und Pod-Graphen verschieben sie. Ziel ist, vor dem Kauf zu sehen, ob „Same Pool“ ein Label-Problem oder ein Hardware-Problem ist.
| Last | 16 GB M4 | 24 GB/512 | M4 Pro | Same-Pool-Signal |
|---|---|---|---|---|
| 1× xcodebuild archive | OK isoliert | OK mit Agent idle | Komfortabel | Agent-Tools timeout bei Speicher > 70 % während Link |
| 2× parallele iOS-Jobs | Risiko | Medium | Bevorzugt | DerivedData-IOPS > 80 % SSD busy |
| Simulator + Gateway | Nicht empfohlen | Fenster nötig | OK mit Tags | Channels-Probe P95 > 5 s |
| 24/7 Gateway + nightly CI | Split empfohlen | Tags + Cron | Same pool möglich | Wiederholter Port-/launchd-Konflikt |
Praktische Telemetrie für die Akzeptanzwoche: stündlich df -h auf DerivedData-Root und Workspace, vm_stat oder Activity-Monitor-Export bei CI-Start, Gateway-Probe-Latenz als JSON-Zeile, und ein Feld „wer hat Schlüsselbund entsperrt“ im Incident-Template. Ohne diese vier Zeilen diskutieren Teams wochenlang Modellqualität, oben auf einem thermischen oder I/O-Engpass. Wenn Simulator-Tests Pflicht sind, planen Sie sie in Fenstern ohne Archive-Link-Phase – nicht in derselben Stunde wie schwere xcodebuild -exportArchive-Läufe und offene Channels-Webhooks.
Wenn die Matrix rot wird, zuerstZeit trennen (CI nur 02:00–06:00 UTC, Agent tagsüber), dannPfad trennen (eigene DerivedData-Roots pro Label), dannHost trennen. Speicher- und SSD-Upgrades folgen der Evidenz aus Speicher- und Xcode-CI-Stufen. Bei Gateway-Ausreißern zuerst Diagnoseleiter L1/L2, nicht sofort mehr Runner.
Same Pool heißt: ein Silicon, zwei Eigentümer – die Matrix entscheidet, ob Labels reichen.
Minimale Isolation: Runner-Tags, Build-Fenster, Cron-Sonden und Keychain-Namen
Technisch können CI und OpenClaw denselben Host teilen, wennNamespaces nicht synonym werden. Verankern Sie Labels wie region-sg, workload-ios-archive, workload-openclaw-probe und pool-shared-m4 – keine generischen macos-ci-Tags. Concurrency-Gruppen pro Branch-Typ verhindern, dass Merge-Queues und Agent-lastige Hooks dieselbe Warteschlange sprengen. Build-Fenster sind kein Hack: sie sind der billigste Isolationshebel auf 24 GB, wenn der Agent 24/7 bleiben muss.
concurrency:
group: ios-${{ github.ref }}
cancel-in-progress: true
jobs:
archive:
runs-on: [self-hosted, macOS, region-sg, workload-ios-archive, pool-shared-m4]
Cron-Sonden (Gateway-Health, Channels, freier Speicher) sollten indenselben launchd-Label-Familien wie in Channels-Probe laufen, aber mit Log-Pfaden getrennt von Runner-_diag. Keychain-Regel: menschliche Entwickler-login.keychain versus CI-ci-signing.keychain versus Agent-Webhook-Credentials – drei Namen, drei Rotationstickets. Kopieren Sie die Actions-Baseline aus Runner-Leitfaden; ergänzen Sie ein Feld „OpenClaw listener“ im Change-Template.
Tipp: Ein Probe-Job mit workload-openclaw-probe alle 15 Minuten schreibt nur JSON-Zeilen – kein xcodebuild – und verhindert, dass Nacht-CI den Gateway-Port als „Runner offline“ maskiert.
Sechs Regionen: Git/Artefakte, Modell-API-Ausgang und Same-Pool-Platzierung
Region wählt nicht nur Ping, sondernwo DerivedData, Container-Registry und Modell-API-Ausgang zusammenpassen. KVMNODE bietet Singapur, Tokio, Seoul, Hongkong, US-Ost und US-West auf derselben Beschaffungssprache – nutzen Sie Multi-Region-Leitfaden für RTT, dann diesen Kurzbaum:
Primäres Git + LFS in APAC: SG oder HK Runner-Label; US-Builds nur für Release-Spur.
Modell-API nur US-erlaubt: Agent-Gateway in US-West, iOS-CI in APAC → Split-Pool oder Proxy-Policy im Ticket.
Spike-Woche: parallel zu Daily-Spike-Baseline – Same Pool nur wenn Baseline-Slots reserviert sind.
„Tarball ankam schnell“ ist keine Colocation: wenn npm, SPM und Modell-Calls drei Kontinente streifen, verbrennt Wandzeit unabhängig von M4-Kernen. Dokumentieren Sie in jedem ÄnderungssatzRegion, SKU, Label-Set und egress policy für Prüfer und DSGVO-Fragebögen (wo Logs und Artefakte physisch liegen).
Split-Pool-Entscheidungsbaum: M4 24 GB/512 → M4 Pro oder zweiter dedizierter Knoten
Bleiben Sie auf Same Pool, wenn: ein Agent, leichte Channels, CI ≤ 1 paralleler Archive-Job, Speicherdruck < 1× pro Woche, Port 18789 stabil in Probes. Wechseln Sie aufM4 Pro im selben Region-Pool, wenn: 2+ parallele iOS-Jobs, Simulator regelmäßig, großes memory/ im Workspace, oder Akzeptanzwoche zeigt wiederholte IOPS-Spitzen bei laufendem Gateway. Bestellen Sie einenzweiten dedizierten M4, wenn: unterschiedliche Apple-Developer-Identitäten, strikte Blast-Radius-Trennung, oder GitLab/Jenkins plus Actions bereits nach GitLab/Jenkins-Matrix zweite Executor-Familie brauchen.
| Profil | Same Pool M4 24 GB | M4 Pro | Zweiter Knoten |
|---|---|---|---|
| Agent 24/7 + wöchentliches iOS-Archive | OK mit Fenster | Komfort | Overkill |
| Nightly Matrix + Agent + SSH-Dev | Risiko | Bevorzugt | Bei Compliance Pflicht |
| Zwei Orchestratoren + Gateway | Nein | Medium | Bevorzugt |
Notiz: Ein zweiter Knoten ohne Label-Disziplin dupliziert nur Chaos – Tags und Keychains zuerst, Hardware danach.
Rollout in sechs Graustufen-Schritten: (1) Gateway allein bis Probes grün, (2) ein Rauch-CI-Job mit neuen Labels, (3) Concurrency scharf schalten, (4) nightly Matrix nur nach einer grünen Woche, (5) Channels unter Last testen, (6) Entscheidung Same Pool vs. Split im Architektur-Log. Überspringen Sie Schritt 1 – der häufigste Grund, warum „CI hat den Agent kaputt gemacht“, obwohl nur launchd-Reihenfolge falsch war.
Für Teams, die iOS-CI und OpenClaw auditierbar auf Apple Silicon in sechs Regionen betreiben wollen, istKVMNODE Mac mini Miete die vertragliche Basis: dediziert, tagesaktuelle Laufzeiten, klare SKU-Stufen. Bestellen über Bestellseite, Runbooks im Hilfezentrum, Preise auf Mietpreise.