チームが同一台のシンガポール・東京・ソウル・香港・米国東部・米国西部のベアメタル remote Mac mini M4上で、日中はXcode / セルフホスト Runner / Archive、夜間はOpenClaw などの AI Agentを回したい場合、最初に破綻するのは「二種類のソフトが入るか」ではなく、シミュレータのポート争奪、ビルドキューが Agent で伸びる、署名と Keychain の干渉です。本稿ではGo/No-Go 容量貸出マトリクス、三類の時間窓テンプレート、Runner ラベル絞り込みと七段階ロールバック、およびM4 / M4 Pro / 拡張 / 同区並列と日次→週次→月次の昇格経路を示します。価格と在庫は NOVAKVM 料金ページを正とし、発注は 注文ページ、リモートセッション方針は ヘルプセンターに揃えてください。GitHub Actions リモート Runner の記事やOpenClaw マルチワークスペースの記事と併読すると、ラベルと Workspace 分離の設計が一本化されます。
読了後には次が判断できるようになります。① どの信号で Agent への貸出を禁止するか。② 平日ピーク・夜間バッチ・リリース凍結週でラベルをどう切るか。③ 貸出前後にキュー深度とベースライン指標でどうロールバックするか。④ 単台が足りないとき、無理に混在せずM4 Proや同区並列に進むタイミング。GitHub Actions セルフホスト Runner と OpenClaw Gateway の挙動は公式ドキュメントを正とし、リリース後にリンクを再確認してください。
[ SECTION_01 ] // PAIN_POINTS リモート Mac 上で CI と AI Agent を同機混在:最初に踏む五類の落とし穴
第一類はオーナーシップ不明です。CI 担当と Agent 運用がそれぞれラベルを変え、「貸出ウィンドウ」に誰も署名せず、PR ピーク時も Agent がシミュレータとビルドキャッシュを占有します。第二類はキュー誤判です。ビルド遅延を「ジョブ増」だけで説明し、実際はリソース争奪——飽和したマシンにさらに Runner ラベルを足すと、待ち時間が 12 分から 35 分以上に伸びることがあります。第三類は環境干渉です。同一 macOS ユーザーと Keychain を共有し、Archive 署名と Bot Token が混在し、貸出終了後も半端な設定が残ります。第四類はシミュレータとポート枯渇です。夜間 Agent が多インスタンスや常駐 WebDriver を立ち上げ、翌日の XCTest マトリクスで「デバイスビジー」とポート占有が出ます。第五類はレンタル期間のミスマッチです。「混在できるか」だけの検証で月次高配をロックし、ピーク週後も二重負荷分を払い続けます。
- ラベルドリフト:貸出後に
macos-ci系ラベルを戻さず、日中ジョブが Agent 占有帯にスケジュールされる。 - 待機容量ゼロ:同区に第二 Runner がなく、貸出=単一障害点。
- Agent に時間上限なし:複数日再実行・チェックポイントなしで、ログとディスクがシステムボリュームを圧迫する。
- 資格情報未分離:モデル Key・チャンネル Token と CI 証明書が同ディレクトリで、ロールバックが困難。
- リリース週も書き込み:凍結期に Agent が署名付きパイプラインを走らせ、リスクが制御不能になる。
「同機混在の第一原理は時間窓+ラベル+資格情報分離であり、『夜に CI を止めればよい』ではありません。」
[ SECTION_02 ] // LENDING_MATRIX Go/No-Go 貸出マトリクスと三類の時間窓テンプレートの選び方
マシンを「CI モード」から「Agent 貸出モード」へ切り替える前に、下表をハードゲートとして使います。いずれかの「ブロック」行に当たれば、貸出を止めるか、先に待機ノードを増設してください。
| 信号 | 貸出可 | ブロック / 一時停止 |
|---|---|---|
| 同区待機 Runner | ≥1 台がスモークと緊急修正を引き受け可能 | バックアップゼロ、貸出=単一障害点 |
| キュー深度 | ≤ 履歴中央値 × 1.2 | > 1.5× が 2 時間継続 |
| Agent 時間予算 | ≤ 90 分かつチェックポイントあり | 上限なしまたは複数日占有 |
| 資格情報分離 | ユーザー分離または Keychain 区分 | 署名と API ファイル共有 |
| リリース凍結 | 読み取り専用 Agent(書き込み・署名なし) | 凍結週に書き込み操作 |
三類の時間窓テンプレート(タイムゾーンはチームの主タイムゾーンに換算し、下表は UTC+8 平日の例です):
| テンプレート | 時間帯 | CI ラベル | Agent |
|---|---|---|---|
| 平日ピーク遮蔽 | 10:00–19:00 | 全開、貸出禁止 | 停止または読み取りのみ死活監視 |
| 夜間バッチスライス | 23:30–06:00 | macos-ci 等のインバウンドラベルを除去 |
貸出可、上限 90 分 |
| リリース凍結週 | リリース日前後 7 日 | Archive/公証を独占 | 読み取りのみ、チャンネル書き戻し禁止 |
[ SECTION_03 ] // RUNBOOK Runner ラベル絞り込み、ジョブドレイン、七段階ロールバック
貸出は「サービス停止」の一言ではなく、監査可能な変更です。次の手順でラベル・キュー・指標・ロールバックを束ね、Agent 終了後も CI が汚染環境にスケジュールされないようにします。
- 変更チケット:ホスト名、貸出ウィンドウ、CI と Agent の双方責任者を記録し、凍結週は二重署名。
- 待機検証:同区第二 Runner でスモークを一回走らせ、PR 緊急タスクを引き受けられることを確認。
- インバウンドラベル絞り:リポジトリまたは組織の Runner 設定から
macos-ci等を外し、新規ジョブの入隊を防ぐ。 - 実行中ジョブのドレイン:SLA に沿って現行ビルドの完了を待ち、Archive/公証タスクの強制終了は禁止。
- ベースライン取得:キュー深度、実行中ジョブ数、CPU、システムボリューム空き容量の割合を記録。
- 貸出実行:Agent(OpenClaw Gateway 等)を起動し、ディスク傾きとシミュレータ占有を監視。
- 逆方向ロールバック:Agent 停止、ラベル復元、スモーク再実行。キュー深度がベースラインの 1.3× を超えたら次回貸出を停止。
#!/bin/bash
RUNNER_NAME="${1:-novakvm-m4-sg}"
gh api "repos/${GITHUB_REPOSITORY}/actions/runners" --jq \
".runners[] | select(.name==\"$RUNNER_NAME\") | .labels[].name"
test -z "$(gh api ... | grep -c macos-ci)" && echo "CI_LABELS_OFF"
GitHub セルフホスト Runner のラベルとキュー意味は公式ドキュメントを正とします。発版後に次のページを開いて確認してください。
OpenClaw Gateway の常駐と再起動は公式リポジトリの説明を正とします。
https://github.com/openclaw/openclaw
[ SECTION_04 ] // CONFIG_REGION M4 配置梯度・六地域ノード・レンタル昇格:いつ分割するか
平日 CI ピークと夜間 Agentの双方で SLA を守る場合、単台はしばしばメモリとシミュレータプールで先に頭打ちになります。経験上の境界は次のとおりです。M4 16GB/256GB は単一メイン CI+読み取りのみの Agent 偶発向け。M4 24GB/512GB は中程度キュー+短時間 Agent向け。M4 Pro 64GB/2TB は並列ビルド+複数 Workspace Agent向け。平日・夜間とも満負荷が必要なら、借出窓を終日に延ばすより同区並列または役割分担の分割を優先してください。
| 梯度 | CI ピーク | 夜間 Agent | 提案 |
|---|---|---|---|
| M4 16GB / 256GB | 1~2 系統の軽量ビルド | 読み取りのみまたは <30 分 | 夜間フル機能 Agent の長期運用は非推奨 |
| M4 24GB / 512GB | 3~4 系統の中程度キュー | 90 分以内にチェックポイント | シミュレータプールと DerivedData を分離必須 |
| M4 Pro 64GB / 2TB | Archive+複数テスト | 複数 Workspace / チャンネルピーク | リリース週は分割または並列を推奨 |
| 同区並列 | CI 専用機 | Agent 専用機 | 貸出切替リスクを排除 |
六地域の同区優先:Runner と成果物レジストリ、モデル API 往復、結合試験ターゲットを同一リージョン意味に置きます。シンガポールは東南アジア納品向け、東京/ソウルは東アジアの当番向け、香港は華南の対話障害切り分け向け、米国東部/西部はそれぞれ東海岸とシリコンバレーの協業習慣に合わせます。日次/週次レンタルは「貸出窓+ロールバック」が安定するかの検証に足ります。傾きとキューが安定してから月次へ移行し、ピーク週は一時的に並列を重ねてください。
[ SECTION_05 ] // DATA_FAQ 引用可能な技術情報・FAQ・導入提案
以下の数値はエンジニアリングレビューでよく使う区間であり、ベンダー公称値ではありません。
- キュー増幅係数:リソース争奪時、追加 Runner ラベルで P50 待ちが約12 分から35 分以上へ(同機飽和時)。
- 貸出時間上限:チェックポイントのない Agent は単回≤90 分を推奨し、ログとシミュレータ残留が翌日 CI を圧迫しないようにする。
- 変更の事前告知:貸出と凍結切替は少なくとも24~48 時間前に公告し、ロールバック窓を残す。
- 待機冗長:同区にスモークを引き受け可能な Runner を少なくとも 1 台、なければ貸出は冗長ゼロ。
FAQ:
- Q:日中 CI、夜 OpenClaw は可能ですか?A:可能ですが、Go/No-Go マトリクスを満たし、ラベル絞りと七段階ロールバックが必須です。
- Q:キューが既に長いのに貸出できますか?A:できません。先に並列度を下げるか待機ノードを増やしてください。
- Q:リリース週は?A:凍結週の Agent は読み取りのみ。Archive/公証はマシン独占、書き込みと署名の混在は禁止です。
- Q:日次レンタルで検証足りますか?A:貸出→ロールバックの一巡には足ります。安定混在は週次→月次を推奨します。
代替案を並べると、共有仮想化 Mac クラウドは隣接ノイズとメンテナンス窓の不可控で「貸出窓」が形骸化しやすく、ノート PC 兼任はスリープとローカルシミュレータ残留でロールバックが監査不能です。日中 iOS/macOS CI と夜間 AI Agentを予測可能なベアメタル上で回し、六地域ノードとレンタル階段が必要なチームには、NOVAKVM の Mac mini クラウドレンタルが通常はより適した選択です。Apple Silicon 独占、ラベル化 Runner、同区並列の組み合わせは、「一夜 Agent を試す」から「リリース週ゼロ干渉」までの道筋に向きます。次の変更の前に、Go/No-Go 表と七段階ロールバックを同じ変更チケットに貼ってください。「夜に CI を止めるか」より、事故率と請求のドリフトを抑えやすくなります。