2026 OpenClaw Gateway の launchd クラッシュループ:スロットル、KeepAlive、MacLogin Apple Silicon 向けウォッチドッグ復旧
OpenClaw Gateway がプラグイン読み込みやモデル交渉で落ちると、launchd は忠実に再起動する—時には LLM ベンダーが再び HTTP 200 を返すより速く。 2026年4月の MacLogin ホスト Apple Silicon(香港・東京・ソウル・シンガポール・米国)への答えは、再起動間隔を制御面として扱い、明示的スロットルを入れ、SuccessfulExit の意味を文書化し、単一 curl ではなく重ねたプローブで復旧を証明することだ。 本稿はクラッシュ信号を金額に写像し、ノブ表を配り、plist 構造を解剖し、9 段階ロールアウトを列挙し、再起動嵐と API 割当を数値シナリオで見積もり、可観測性信号を列挙し、既存カットオーバー記事へポインタを渡し、FAQ で締め、常時エージェントに Mac mini M4 の密度が効く理由で締める。
横読み:本番カットオーバーのヘルスチェック、launchd kickstart リロード、localhost バインド強化。購入判断は 料金、運用ドキュメントは ヘルプ、画面経路は VNC。
クラッシュ信号、爆発半径、単純再起動が害する理由
2026年4月のインシデントチャネルで支配的な三症状:(1) メンテタスク後にコード 0 で終了—plist が任意終了を失敗扱いするため launchd は再起動する。(2) インポート時の未捕捉プラグイン例外で CPU が数十秒 100% に張り付き、ウォッチドッグキルがハード障害に見える。(3) リモートモデルが HTTP 429 を返す一方で launchd が即再起動し、スロットルを API の財布 denial に増幅する。
env=sandbox タグのホストで行え。launchd ノブ表(意図・トレードオフ・初期値)
| キー | 意図 | トレードオフ | 初期値 |
|---|---|---|---|
| ThrottleInterval | 再起動嵐を上限 | 実クラッシュ後の復旧が遅い | 本番 30 秒 / ラボ 10 秒 |
| KeepAlive/Crashed | 異常終了で再起動 | 根バグを隠す可能性 | true、リトライ上限付き |
| SuccessfulExit | ゼロ終了を健全とみなす | 正直な終了コードが必要 | ゲートウェイが意味論を守るまで false |
| ProcessType | 対話かバックグラウンドか | スケジューリング優先度に影響 | ヘッドレスは Background |
| SoftResourceLimits | ファイル記述子上限 | スキルが飢餓する可能性 | 重いウォッチャーで 4096 まで引き上げ |
plist の形:ProgramArguments、WorkingDirectory、EnvironmentVariables
多くの失敗は「OpenClaw 故障」ではなくパスドリフト:plist が /usr/local/bin を指す一方、Apple Silicon の Homebrew は /opt/homebrew/bin へ移った。node とゲートウェイエントリのフルパスを書く。LaunchAgent は空の home を継ぐので HOME を明示。WorkingDirectory は ~/.openclaw があるワークスペースに合わせ、HK と US クローンで相対スキルパスが一貫するようにする。
9 段階ロールアウト(SSH 優先・ヘッドレス安全)
- ベースライン取得:
launchctl print gui/$(id -u)/com.openclaw.gateway(ラベルは置換)とopenclaw doctorの JSON をアーカイブ。 - 設定凍結: 20 分間 npm アップグレード禁止、第二ターミナルからの plist 編集禁止。
- ThrottleInterval 先行適用: 一度 reload し、
log show --predicate 'eventMessage CONTAINS "com.openclaw"' --last 15mで再起動間隔が設定秒以上に広がったか確認。 - SuccessfulExit 切替: 実障で非ゼロを返すことを検証してから。東京本番を汚さずシンガポールのステージングで試す。
- ヘルス curl 五連: 各再起動後
127.0.0.1:18789に 200 ms 間隔で五回。モデル許可リスト修正 の記述と揃える。 - 単一 PID 検証: リスナーを 120 秒所有する PID が一つか。二つなら重複 LaunchAgent を疑う。
- メトリクス: 再起動カウンタ、最終終了コード、上流レイテンシヒストグラムを TSDB へ—60 秒ごとの JSON スクレイプでも盲目ページよりマシ。
- ロールバック文書化: git に plist とチケット参照、復元用に旧 plist のチェックサムを添付。
- 連絡: チャット運用へ、安定化ウィンドウ中は webhook が レート制限バックオフ に従うよう伝える。
再起動嵐と上流 API 予算(数値シナリオ)
コールドスタート毎に LLM を叩き、1 回 $0.004 と仮定。スロットルなしで分 6 回再起動ならホスト当たり約 $0.864/時—ソウルの契約者 22 台まで掛け算すると無視できない。ThrottleInterval を 30 秒に上げるとコールドスタートは時間当たり最大 120 に抑え、レート制限挙動を除いてもホスト当たり約 $0.52/時節約の目安になる。
| パターン | 10 分あたり再起動 | LLM HTTP 混成 | 推定診断 |
|---|---|---|---|
| 白ナックルフラップ | > 40 | 401/403 スパイク | plist 未 reload の資格ローテ |
| サンダリングハード | 18–24 | 429 優勢 | ThrottleInterval 過小+共有 API キー |
| クリーンバウンス | 1–2 | 200 安定 | 計画メンテか設定 reload |
| ゾンビリスナ | 再起動 0 だがクライアント停滞 | n/a | 古いソケット、重複エージェント |
「緑がフラップ」ゲートウェイを捕まえる可観測性
- UNIX エポック差:ゲートウェイ ready から初回成功モデル呼び出しまで > 8 秒ならプラグイン停滞の疑い。
- ファイル記述子数:再起動を跨いで上昇ならクラッシュループに見せかけた記述子漏れ。
- launchd スロットルメッセージ:統合ログに出れば制御面が働いている。欠落なら plist にキーが載っていない。
カットオーバー連結(ウォッチドッグ調整だけでは足りないとき)
ヘルスは通るのに webhook が死ぬなら TLS 信頼、重複排除ストア、ゲートウェイ HTTP は独立した表面。webhook 重複排除 と JSONL ログローテーション を同じメンテ窓で揃え、plist 調整とフォレンジックデータを両立させる。
よくある質問
MacLogin が plist をパッチしますか? いいえ。LaunchAgent は顧客所有。Mac とネットワーク経路は ヘルプ に記載。
ゲートウェイを root で動かすべきか? 避ける。最小権限の LaunchAgent がスキル暴走時の爆発半径を縮める。
どこで安全に試すか? 東京本番を触る前に 料金 から隔離 mini を立てる。
ウォッチドッグ調整後も常時 OpenClaw に Mac mini M4 が合う理由
M4 の効率は、Node・ffmpeg ヘルパー・Xcode インデックスが衝突したときに旧 Intel mini が電源レールを食い潰した様子を再現しにくい。統合メモリによりモデルキャッシュとログバッファが共存し PCIe SSD スラッシュを起こしにくく、30 秒スロットル窓はディスクではなくネットワーク遅延が支配する。都市ごとにレンタルすれば US カナリアに攻撃的スロットルを載せ、APAC 本番は保守的なまま、72 時間メトリクスが平坦化してから差分だけクローンできる。
ゲートウェイがラボから収益クリティカルへ進むとき、1 枚の熱エンベロープにエージェント七つを積むより MacLogin リージョンで容量を足す。24/7 自動化に Mac Pro タワーを共同設置へ引きずるよりワット当たり経済性は Apple Silicon がまだ勝つ。
専用 Apple Silicon で OpenClaw に安全に失敗余地を与える
HK・JP・KR・SG・US で SSH 優先ワークフローと文書化されたロールバックをデプロイする。