2026 年 iOS CI と OpenClaw 同プール混在:四類型の障害と変更票に書ける責任境界
クラウド Mac mini M4 の魅力は、専用 Apple Silicon、シンガポール・日本・韓国・香港・米国東部・米国西部の六リージョン、日次スパイクから月次ベースラインまで切り替え可能な契約にあります。同一ホストで xcodebuild archive とシミュレータ行列を回しながら OpenClaw Gateway を 127.0.0.1:18789 に常駐させると、失敗は単一コンポーネントではなく四次元に現れます。ユニファイドメモリが並列コンパイルとシミュレータのページキャッシュで満杯になる、SSD 上で DerivedData・シミュレータイメージ・~/.openclaw/workspace の memory ログが IOPS を奪い合う、ポート 18789 が旧 LaunchAgent やアプリ付着で占有される、launchd と対話 shell の PATH・HOME・キーチェーン視点が不一致で Runner と Gateway プローブが別世界を見る、といったパターンです。
第一類型はメモリプレッシャーの連鎖です。CI が memory pressure を起こすと macOS が圧縮とスワップを始め、Gateway の RPC 遅延が上がり、channels プローブのタイムアウトがトークン失効と誤認されます。第二類型はディスクと inodeです。Runner 単位で DerivedData を分離しないと、Agent の skill 取得と CI キャッシュが同一パーティションを上書きします。第三類型は18789 と二系統インストールで、先に Node 22 と 18789 を照合してからモデルを疑ってください。第四類型は環境分裂で、plist の WorkingDirectory が Runner ホームを指し、別ユーザーでの openclaw doctor だけが成功するケースです。変更票には「時間帯・ラベル・パス・SKU のどれを動かすか」を明記し、診断ラダー の L1 項目と揃えます。
ユニファイドメモリ頭打ち:並列 archive とシミュレータで Gateway P95 が悪化(モデル品質ではない)。
SSD/DerivedData 混在:CI キャッシュと workspace memory ログの同居。
18789 占有または二重心拍:CLI と launchd がそれぞれ Gateway を起動。
launchd と Runner 環境不一致:キーチェーン、PATH、HOME の分裂。
時間帯なしの永久混在:CI ピークと昼間 Agent にガードレールがない。
共有ノードガバナンス を読んだチームでも、「同プール」は単一テナント内の複数ワークロードであり、複数人 SSH 共有ではありません。受け入れ週の単一真実源は、並列 job 上限、DerivedData ルート、Gateway health JSON 一行、memory pressure イベント回数の四行にまとめるのがよいです。
争奪マトリクス:xcodebuild、シミュレータ、Gateway、channels プローブの典型しきい値
下表はレビュー用の計画アンカーであり公開ベンチマークではありません。実測は貴社の P95 ビルド時間と openclaw gateway status --deep を正とします。M4 16GB/256GB で iOS CI と Agent を同週に載せると、ルートパーティションとスワップが先に限界になります。24GB/512GB は「昼 Agent+夜単一 archive」向け、M4 Pro 大容量ユニファイドメモリ はシミュレータ行列と複数 Runner ラベルの並列向けです。DerivedData が数十 GB になることは珍しくなく、OpenClaw の memory/*.md と skill 資産を足すと、tarball 展開後の 1.5 倍以上の空きを見込んでください。
| ワークロード組合せ | メモリリスク | ディスク/IOPS | 18789/プローブ |
|---|---|---|---|
| 単一 xcodebuild+単一 Gateway | 中(16GB は並列制限) | 中 | 低 |
| シミュレータ行列+channels プローブ | 高 | 高 | 中 |
| 夜間複数 job+昼間対話ピーク | 非常に高 | 非常に高 | 高 |
| Gateway のみ常駐、CI は別ノード | 低 | 低 | 低 |
同プールとは「二つのソフトが入る」ことではなく、「ピーク時に誰が譲るか」が文書化されていることです。
channels プローブ と並走する場合、プローブ cron と CI cron は少なくとも一ビルド窓ずらしてください。Git と成果物が遠いリージョンにあると、ディスクに空きがあっても clone が遅く、CPU を上げる前にノード選定を見直す必要があります。Runner ごとに ~/ci-cache/<runner-name> を切り、vm_stat で圧縮が続くときは Gateway 再起動ではなく非クリティカル job の停止を優先します。
実務では Runner 単位で DerivedData のシンボリックリンク先を分け、OpenClaw の memory/ ログの保持日数と圧縮閾値を変更票に書き、週次のディスク曲線で Agent の遅延とビルドの遅延を混同しないようにします。受け入れ週には四行指標に加え swap 推移を添付すると、M4 Pro 昇格の議論がデータでつながります。
コマンドブロック:Runner ラベル、ビルド窓、Gateway ヘルスチェックの骨子
最小分離は第二台を即用意しなくても、命名・ラベル・ディレクトリを監査可能にすることから始まります。GitHub Actions では ios-ci-only と openclaw-reserved のような専用ラベルを付け、workflow の runs-on で分流します。暫定同機の場合は cron または手動承認で Agent の重いツールを CI ピークから外します。以下は変更票添付用で、Runner ガイド の PATH 検証と同じ口径です。
export DERIVED_DATA_ROOT="$HOME/ci-derived/${GITHUB_RUN_ID:-local}"
export OPENCLAW_STATE="$HOME/.openclaw"
mkdir -p "$DERIVED_DATA_ROOT"
lsof -nP -iTCP:18789 -sTCP:LISTEN || true
openclaw gateway status --deep 2>/dev/null | head -20
/usr/bin/log show --predicate 'eventMessage CONTAINS "memory pressure"' --last 1h | tail -5
df -h / | awk 'NR==1 || NR==2'
ヒント:CI スクリプトでは DERIVED_DATA_PATH または -derivedDataPath を明示し、デフォルト共有を避けてください。18789 は ssh -L または Tailscale 経由に留め、workflow で 0.0.0.0 にバインドしないでください。
チェックリスト:① Runner ラベルと workflow 対照表、② 混在を許可する UTC 時間帯、③ 人間用と Agent 用キーチェーンの命名分離、④ 日次 openclaw doctor とディスク使用率スナップショット、⑤ channels プローブと CI の cron ずらし表。GitLab/Jenkins を使う場合は 六リージョン Agent 仕様 とラベル意味を揃え、ピーク時のシミュレータロック競合を避けます。
六段階:混在評価からロールバック可能なガードレール(六リージョンと成果物コロケーション)
ピーク重なりの棚卸し:7 日間の CI トリガーと Agent 対話高峰を重ねてマークします。
ディレクトリとラベルの凍結:DerivedData ルート、~/.openclaw、Runner ラベルを変更票に記載します。
六リージョンのデータ面合わせ:Git、レジストリ、キャッシュをノードと同リージョンに;モデル API は別途測定します。
18789 真源の検証:旧ジョブ停止後に install-daemon;gateway status --deep を保存します。
ピーク演習:意図的に archive とプローブを並列し、memory pressure 回数を記録します。
プール分割または SKU 昇格:下表と 日次スパイク で契約を選びます。
短い決定木:clone/pull が遅いなら Git と同洲のノードへ、夜間並列で赤が増えるなら並列制限または第二ノード、Agent RPC タイムアウトなら 18789 とメモリを先に、モデルリージョンは後です。シンガポールは東南アジア成果物向け、日韓は現地コンプライアンスと低遅延、香港は繁体字チームの運用帯、米東米西は GitHub/App Store Connect の北米経路向けです。受け入れ週は四行指標をチケットに貼り、常駐安定性 ベースラインと比較してください。
いつプールを分けるか:M4 24GB/512 から M4 Pro または第二ノードへの分岐
KVMNODE における「プール分割」は、通常第二の専用 Mac mini または M4 Pro への昇格を指し、同一 OS 内の疑似分割ではありません。並列 job ≥2 でシミュレータ行列が常時オン、かつ昼間の Gateway 対話が多い週が続くなら、16GB は移行用に留め、24GB/512 は「ずらし混在」、DerivedData 週次 30GB 超または memory pressure が日 3 回超なら調達資料へ進みます。TestFlight パイプラインと複数 channel を同週に載せるチームは M4 Pro を優先してください。
ずらしのみ・単一 CI 経路:M4 24GB/512+厳格な時間帯。
ピーク重なりが週 3 回超:Runner ノード追加または日次スパイク第二プール。
行列+Agent 常時:M4 Pro 優先、診断ラダー 週報を継続。
| チーム像 | M4 16GB/256 | 24GB/512 | M4 Pro 大メモリ |
|---|---|---|---|
| 昼 Agent・夜単一 archive | リスク高 | 可 | より安定 |
| シミュレータ行列+複数ラベル | 非推奨 | 中 | 優先 |
| 六リージョン遠隔 Git・ローカル重キャッシュ | 先にリージョン | 優先 | 並列次第 |
注意:ノート PC を唯一の CI と Agent ホストにすると、スリープと NAT で「同プール分離」を契約化できません。クラウド専用ノードならスケジュールとラベルを調達・運用言語に落とせます。
SLA には尖峰時の CI 最長待ち時間、Gateway ヘルス許容失敗回数、ディスク上限を書いてください。昼は Agent、夜はリリースという要求を 16GB で受けるなら、リスク受容か予算追加を議事録に残します。第二ノードは必ずしも同一 SKU ではなく、CI スパイク用 M4 と常駐 Gateway 用 M4 Pro の組み合わせがよくあります。iOS CI と OpenClaw を監査可能な専用 Apple Silicon に載せるなら、KVMNODE Mac mini クラウドレンタルが実務上の定番です。注文は 注文入口、手順は ヘルプセンター、SKU は 価格ページ をご覧ください。