2026 OpenClaw レンタル Mac Mini 実戦:GitHub repository_dispatch API で夜間イベント連鎖・サイレンス窓・退避アラートを最小再現

repository_dispatch・API オーケストレーション
約6分

自動化エンジニア向けにレンタル Mac MiniOpenClawで夜間を回すとき、Git 側は「単一 YAML 名」ではなくイベント型POST …/dispatchesrepository_dispatch)へ寄せる選択があります。event_typeclient_payloadでワークフローを起こすバスです。workflow_dispatch 夜間稿と分担し、OpenClaw が初段トリガー失敗要約導入cron/退避七時二十四分行列

PAT 最小権限

外向きはGITHUB_TOKEN不可。Fine-grained PAT単一リポに閉じ、Metadata: ReadContents: Read and write…/dispatchesを満たし、workflow_dispatch用のActions 書込みトークンと分離します。GitHub App・キーチェーン/plist・chmod 600gateway 門限と同日ローテ推奨。

ペイロード規約(client_payload)

client_payloadはバージョン付きの契約として扱い、先頭ステップで jq か極小スキーマで必須キーを検証します。巨大 JSON は載せず参照だけ渡します。

キー役割
batch_idMac 側チェックポイントの冪等キー
segmentログと OpenClaw ダイジェスト用ラベル
correlation_idMac・Actions・Webhook を束ねる UUID
issueropenclaw_gateway / launchd / manual
artifact_refオブジェクトストレージ等へのポインタ(本文は瘦せる)
on:
  repository_dispatch:
    types: [openclaw_night_a, openclaw_night_b]

チェーンタスクの状態機械

QUEUEDSEGMENT_Aopenclaw_night_a)→SEGMENT_BCOMPLETEDFAILED/var/db 等に batch_id と最終セグメントを JSON 保存し再起動リプレイを防ぐ。進行役は curl/gh/Checks ポールのいずれか一つに固定。多シナリオ稿参照。

  1. 検証失敗なら連鎖を止め、FAILED でアラート経路は一度だけ。
  2. 成功時のみ同じ correlation_idopenclaw_night_b を POST。

サイレンス窓(静穏帯)

例:01:00–05:00 のみ launchd が実行し、帯外は exit 0 で GitHub 非呼出。昼の手動 dispatch はペイロード TZ でワークフロー先頭ガード。スキップは JSONL に溜め、ヘルス Webhook 稿同様 OpenClaw が窓明けに抑制件数を要約。心拍回復と併用。

失敗アラート(上限付き退避)

四二九Retry-After 優先、五系は指数バックオフ(基準二秒・上限六十秒・五回・二割ジッタ)上限後にエスカレーション。batch_id・最終 HTTP・短い断片のみ、PAT 禁止。OpenClaw で一バッチ一通知。水位 FAQと併せ APFS 黄赤で dispatch ゲート。

再現用 curl/gh 例

ローカルで一度成功を確認してから、同じコマンドをレンタル Mac の root 所有 launchd ラッパへ移します。GH_TOKEN に Fine-grained PAT を載せれば gh からも同じエンドポイントへ送れます。

curl -sS -X POST \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer ${GITHUB_TOKEN}" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/dispatches \
  -d '{"event_type":"openclaw_night_a","client_payload":{"batch_id":"20260424","segment":"a","correlation_id":"'"$(uuidgen)"'","issuer":"launchd"}}'
gh api -X POST repos/OWNER/REPO/dispatches --input - <<'JSON'
{
  "event_type": "openclaw_night_b",
  "client_payload": {
    "batch_id": "20260424",
    "segment": "b",
    "correlation_id": "REPLACE_WITH_UUID",
    "issuer": "openclaw_gateway"
  }
}
JSON

HowTo(そのまま手順化できる順序)

  1. リポに repository_dispatch.types を登録した YAML をマージする。
  2. Mac で窓内のみ走るシェルから上記 curlopenclaw_night_a を送る。
  3. Actions の Run URL を client_payload か成果物メタに残し、OpenClaw が一覧化できるようにする。
  4. セグメント A の最終ステップで PAT または GITHUB_TOKEN(リポ内ジョブ)から B を POST。
  5. 退避上限超過時のみ署名付き Webhook を飛ばし、OpenClaw でチケット化する。

FAQ

二〇四なのに Actions に出ない
event_type が YAML の types と一致しているか、default branch にワークフローがあるかを確認。Runs の queued も併見。
feature branch で試したい
repository_dispatch は基本 default branch 上のワークフロー定義に束縛されるため、検証用リポを分けるか、マージ戦略を決める。
OpenClaw は GitHub を所有しないが何をするか
エッジのオーケストレータとして初段 dispatch・チェックポイント・Webhook 要約を担い、人間はバッチ単位のサマリだけ読む。

まとめ:狭い PAT契約化した client_payload明示状態機械サイレンス窓上限付き退避と単発アラート料金ヘルプ公開購入ログイン不要可)でApple Siliconノードを確保し、夜間 GitHub API 連鎖の余白を確保してください。

レンタル Mac Mini で OpenClaw と repository_dispatch の夜間チェーンを運用

event_type 連鎖でワークフロー名に依存しない外向き API を保ち、トークンは Contents に閉じる。ホーム料金ヘルプ公開購入ログイン不要

関連:ブログOpenClaw ハブ公開購入はアカウント不要の場合あり。

repository_dispatch:公開購入へ