openclaw gateway が動くのに、launchd 常駐に切り替えると token_missing_config や Dashboard 不能に落ちるチームは、多くの場合 SSH 後に export した変数が監督プロセスに届いていないことが原因です。KVMNODE 専用クラウド Mac mini に Gateway を 7×24 で置く開発者向けに、対話セッションと launchd Job の環境差、token_missing_config の二分、plist EnvironmentVariables と openclaw.json の単一情報源、launchctl kickstart までを整理します。インストールとトラブルシュート・リモート昇格・診断ラダー へ相互リンクし、同じコマンド列の三重説明を避けます。2026 シェルは通るのに launchd が落ちる:環境変数まわりの誤解五つ
ログインセッションは profile チェーンで PATH や HOME を拡張しますが、launchd が起こす Agent/Daemon は最小環境から始まり ~/.zshrc を読みません。OpenClaw が Gateway token を解決するとき、設定ファイル・環境変数・state ディレクトリの組がずれると監督下だけ token_missing_config が出ます。クラウド専用ノードでは、その組をチケットに凍結できます。
split brain や鍵名変更は リモート昇格、コマンド順は 診断ラダー へ。本稿は launchd 専用の分岐だけを追加します。
plist が端末 export を継承すると思う誤り:launchd は SSH セッションの変数を自動では引きません。
token を shell profile のみに置く:Agent では安定して失敗します。
root 域とユーザ域 plist の混在:openclaw.json の所有者と UserName が一致しないとパスが分岐します。
更新後も古い ProgramArguments:token 問題に見えますが別バイナリです。
遠隔 M4 Pro の CPU を疑う:token 読取と CPU は単調に相関しません。
領域移動の議論は 常駐基盤 へ。本稿は監督プロセスの設定読み取りに限定します。
ControlMaster 経由のポート転送と launchd の bind 視点がズレると「手元は緑・監視は赤」が続きます。本番 plist と一時転送を Runbook で分離してください。
同一ホストで CI や重い Archive を回すとログローテーションが token 行を埋めます。インシデント窓では冗長ログを下げると切り分けが速くなります。
対照表:plist 環境変数と openclaw.json の単一情報源、split brain との切り分け
単一情報源は事後分析を一文にします。秘密は権限付き openclaw.json に置き、plist は state 根など非機密ロケータのみを注入します。CLI とデーモンが別コピーを読むと split brain に似たログになります。openclaw doctor のパス印を先に比較します。
| 戦略 | 向く場面 | リスク | 運用メモ |
|---|---|---|---|
| openclaw.json のみ | 単一ユーザ専用ノード | chmod 緩いと漏洩 | 専用 Unix ユーザーと併用 |
| plist でパス固定 | state 根を明示したい | 綴りミスで即死 | systemd 的明示注入 |
| 両方に平文 token | 短期トリアージ | ローテで片側漏れ | 常態禁止 |
| ログ署名 | 疑う根 | 次アクション |
|---|---|---|
| launchd のみ token 欠落 | 監督環境欠如 | launchctl print で Label と UserName を確認 |
| CLI とデーモンで版印不一致 | split brain | ラダーの PATH 節を実施 |
| 対話も無人も失敗 | 設定破損や鍵名変更 | 昇格記事 の移行表 |
launchd インシデントの第一原理:監督環境を印刷してから token の値を議論する。
無人プローブ では plist と同じキー集合をプローブにも渡し、夜間だけ緑になる誤差を潰します。
gateway.mode remote 併用時はクライアント側の token パスとサーバ plist のパスを二列表に分け、ログ貼り付け時に役割ラベルを必須化します。
半年に一度、退場した外包ユーザの home を指した plist が残っていないか棚卸しすると、無音再起動後のループを防げます。
社内 Wiki には「plist の ProgramArguments 全文」「openclaw のバイナリ絶対パス」「state ディレクトリの所有者」を貼るテンプレだけを残し、token 本体は貼らない運用にすると、新人オンボードでも安全に再現できます。
クラウド事業者側でノードイメージを差し替えた直後は、必ず openclaw doctor --yes を監督ユーザで一度流し、差分を変更票に添付してください。イメージ更新と token 問題が同じ夜に重なると、誤って API キーを再発行してしまうコストが跳ね上がります。
財務が「追加 vCPU を買えば安定するのでは」と聞いたら、まず監督環境の差分ログを添付し、CPU グラフではなく plist と json の整合を示すと説明コストが下がります。
最後に、夜間オンコール用の短いチェックリストを印刷し、電話口で「plist の Label を読み上げる」手順まで落とすと、緊急時のヒューマンエラーが減ります。
plist EnvironmentVariables と launchctl:最小再現と XML 骨格
本番変更前に env | sort だけを出す捨て Agent で監督キー集合を取得し、その後に本番引数へ差し替えます。Homebrew や npm グローバルが PATH に無いと doctor 成功デーモン失敗が出ます。PATH の最小集合をチケットに固定してください。
<key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string> <key>OPENCLAW_STATE_DIR</key> <string>/Users/ocagent/.openclaw</string> </dict>
ヒント:実 token は公式手順で openclaw.json の gateway.auth に書き、倉庫へ平文 plist を載せないでください。
編集後は bootout→bootstrap か kickstart -k で古い環境を掃除します。二重 plist は launchctl list | grep -i openclaw で潰します。
nvm/fnm 利用時は node と openclaw を絶対パスで plist に書き、イメージ更新で which 結果がズレないようにします。
専用システムユーザを切った場合は WorkingDirectory と暗黙の HOME をそのユーザ home に揃え、空ディレクトリ相対解決を防ぎます。
XML の閉じタグを手編集した場合は plutil -lint を CI に入れ、無効 plist が本番へ流れないゲートを置くと、夜間だけ失敗するタイポを早期に止められます。
複数 LaunchAgent が同じ Label を再利用していないかも併せて確認してください。ラベル衝突はログ上ランダムな token エラーに見えることがあります。
六段階:シェルデモから監査可能な launchd 常駐へ
再現の凍結:成功シェルと失敗 launchd の env | sort と status テキストを保存。
launchctl print 突合:Label・ProgramArguments・UserName・WorkingDirectory を確認。
単一情報源へ統一:公式手段で json を書き plist から平文秘密を削除。
EnvironmentVariables 補完:PATH と state 根、必要なら node 絶対パス。
kickstart と先頭 200 行ログ:診断ラダー の doctor と突合。
Runbook と変更票:近距離か遠隔 M4 Pro かを明記し 注文 フィールドに揃える。
引用可能な指標:plist 域、ログの対、M4 Pro の誤報予算
Agent と Daemon 域:openclaw.json 所有者と plist 主体を一致させる。
token 欠落と即時 exit が同フレーム:まず環境を疑う。
遠隔高配:閾値をプローブに書き token パス誤りを隠さない。
注意:token をチャットに貼るのはサプライチェーン高リスクです。
シェル履歴だけに token を残すと 7×24 の事後分析が再現不能になります。plist と単一 json を揃えた専用 Apple Silicon クラウドノードは Gateway を監査可能な部品にします。シンガポールや米東などへ常駐するチームには KVMNODE の Mac mini クラウドリースが通常より適した選択 です。料金と接続は 価格 と ヘルプセンター を参照してください。
稼働後は kickstart 成功時刻・Label・バージョン印を CMDB 隣に自動追記すると、請求突合が容易になります。
同一ホストで複数実験 Gateway を動かす場合は state ディレクトリとポート帯を分け、FW で衝突を防ぎます。