レンタル リモート Macで RAG やツール連携エージェントを回すとき、Chroma のようなローカルベクトルストアはレイテンシとコストに有利ですが、永続ディレクトリの整合バックアップ・ディスククォータ・検索遅延が運用の三つの穴になります。本稿は OpenClaw ゲートウェイと観測スタックを前提に、再現可能な手順だけに絞ります。ゲートウェイ全体のメトリクス配線は ゲートウェイ指標・Prometheus/OTel アラート HowTo、API 側の予算とサーキットブレーカーの考え方は マルチプロジェクト API 予算・サーキットブレーカー稿と併読してください。コンテナ常駐なら Docker 本番ハードニング稿のボリュームマウント方針と整合させます。
Chroma の永続化ディレクトリとスナップショット手順
まず PersistentClient(path=...) または Chroma Server の --path 相当を、レンタルホスト上で変わらない絶対パスに固定します。共有環境では他ユーザと衝突しない /var/lib/... や専用 APFS ボリュームを推奨します。
スナップショットは「コピー中に書き込みが走らない」ことが最重要です。短いメンテナンス窓で挿入・削除 API を止めるか、プロセスを一時停止し、SQLite/埋め込み索引ファイルがフラッシュされた後にコピーします。macOS では同一ファイルシステム上の cp -c(クローン)で IO を抑えつつ一貫性を取りやすく、オフサイトには tar か rsync --delete で日付タグ付きアーカイブを送ります。復元手順は「空ディレクトリへ展開 → 権限を実行ユーザに合わせる → 読み取り専用でテストクエリ」をチェックリスト化し、本番切替はメンテ窓に限定します。
OpenClaw ヘルスプローブとアラートテンプレート
ゲートウェイの /healthz・/readyz は「プロセスが生きている」「依存が最低限満たされている」信号です。Chroma ディスク逼迫は別チャンネルで見ます。df -h を cron で叩き閾値超えを構造化ログへ出すか、node_exporter の node_filesystem_avail_bytes で 80%・90% の二段アラートを用意します。ログには chroma_data_path・avail_bytes・collection_count を載せ、上記 HowTo の Prometheus ルール形式に合わせて for: 5m など持続条件を付けます。
クエリタイムアウト/サーキットブレーカー系パラメータ
ベクトル検索はコレクション規模と埋め込み次元で尾を引きます。クライアント SDK の timeout(例:数十秒上限)、HTTP デッドライン、手前の nginx/envoy の read timeout を同じオーダーに揃え、どこで切れるかを一箇所に文書化します。連続タイムアウトや p95 が SLO を超えたらサーキットを開き、軽量なキーワードフォールバックやキャッシュ済み要約を返す段階を API 予算稿の降格表と同型で定義します。OpenClaw スキルから Chroma を叩く場合も、スキル内の再試行回数とゲートウェイ全体のレートを二重に掛けないようキーを分けます。
| 層 | 設定の例 | メモ |
|---|---|---|
| Python クライアント | timeout=30 | 検索・upsert で共通より分割も可 |
| 逆プロキシ | proxy_read_timeout 45s | アイドルより処理上限に合わせる |
| サーキットブレーカー | 連続 N 回 or 窓内 p95 | 半開試験の QPS を制限 |
よくある権限・パスエラー FAQ
Permission denied(永続ルート):launchd の UserName、Docker の user:、手動シェルの実ユーザが一致しているか確認し、chown -R はデータ初期化の一度きりに留めます。
パスが環境ごとに変わる:~ 展開や相対パスをやめ、環境変数 CHROMA_PERSIST_DIRECTORY を compose と systemd で同一値にします。シンボリックリンクは解決先を README に明記します。
「DB locked」系:スナップショットと本番書き込みの重複、または複数プロセスから同一ファイルを開いていないかを lsof で確認します。
まとめ
Chroma はパス固定・整合コピー・復元検証の三点、OpenClaw 側はゲートウェイ死活とディスククォータを分離監視、検索経路はタイムアウトとサーキットブレーカーで SLA をコード化すると、レンタル Mac 上の AI 算力でも運用が再現可能になります。