Daemon と設定
loopkeepd はすべてをこなす常駐プロセスです。トリガーを監視し、run を実行し、policy を
評価し、イベントログを書き、通知を配信します。CLI とデスクトップアプリはクライアントで、
閉じても実行中のものは何も変わりません。
1 つの daemon が登録済みのすべての workspace を提供します。各 workspace はそれぞれ 独立した context を持ちます。自分のイベントログ、policy、信頼状態、workflow です。
制御
lk start # 別名: up
lk stop # 別名: down — 実行中の run は次の起動時に interrupted として復元
lk restart
lk status
クライアントは daemon とローカルの socket、既定では /tmp/loopkeepd.sock で話します
(LOOPKEEP_SOCKET で上書き — daemon とクライアントの両方に設定してください)。
ネットワークポートは開きません。ペアリングした場合の Console 接続は、外向きの WebSocket
1 本です。
ディスク上のファイル
グローバルは ~/.config/loopkeep/ の下(XDG_CONFIG_HOME を尊重。
LOOPKEEP_CONFIG は設定ファイルのパスを上書き):
~/.config/loopkeep/
├── config.yaml # daemon の設定(並列数の上限、retention)
└── policy.yaml # あなたの home policy layer
workspace ごとは <workspace>/.loopkeep/ の下:
.loopkeep/
├── policy.yaml # project policy(これは commit する)
├── policy.local.yaml # あなた個人の上書き(これは gitignore する)
├── workflows/ # workflow の定義
├── secrets # secret の名前だけ — 値は OS の keychain にある
├── events.db # append-only のイベントログ(SQLite)
└── worktrees/<run_id>/ # 各 run の隔離された git worktree
config.yaml
concurrency:
global_max: 4 # 全 workspace を通じた実行中の run
retention:
worktree_days: 14 # 完了した run の worktree を保持する期間。省略すると永久保持
どちらも CLI(lk global-max、lk retention)とデスクトップアプリから管理でき、編集は
どちらの経路でもこのファイルに書き戻されます。
イベントログ
システムがすることはすべて — トリガーの発火、状態の変化、提案されたアクション、
あなたの決定 — が events.db の中の不変の記録で、workspace ごとです。受信箱、run の
一覧、監査証跡はすべてこのログから派生したビューで、ずれる第二の帳簿はありません。
記録が更新・削除されることはありません — 訂正は新しいイベントです。ファイルは
読み取り専用の証跡として扱ってください。起動時に永続化できなければ、daemon は履歴を
静かに失うのではなく起動を拒否します。
監督の証跡もここから来ます。誰が、いつ、どのルールが有効なもとで、何を承認したかは、 再構成ではなくクエリです。
workspace レジストリ
lk workspaces # 一覧
lk workspaces add <path> [--name <n>]
lk workspaces remove <id> # home は削除できない
.loopkeep/ を含む未登録のパスに対するコマンドは、その場で登録します。
トラブルシュート
| 症状 | 考えられる原因 |
|---|---|
| CLI が daemon は動いていないと言う | lk start。カスタムの LOOPKEEP_SOCKET を使うなら、daemon と CLI が一致していることを確認する。 |
| workflow が自動で発火しない | workspace が信頼されていない(lk trust)、workflow が disable(lk enable <workflow>)、またはグローバル pause が on(lk resume --all)。 |
run が waiting のまま | あなたを待っている — lk inbox を確認し、lk approve <seq> で決める。 |
再起動後に run が interrupted になる | 想定どおり: lk stop は実行中の run を次の起動時にそう復元する。lk rerun する。 |
run_* の worktree が溜まる | retention が off か長い — lk retention <days>、または lk cleanup で今すぐ一掃する。 |