Consoleとは

Console は loopkeep の Web コントロールプレーンです。アカウント、ペアリング済みの デバイス、そして外部のイベントで自分のマシンの workflow をトリガーする GitHub・Slack 接続を管理します。ここは意図的に、あなたの作業が行く場所ではありません — Console が 知ることをできるだけ少なくするように、アーキテクチャが作られています。

イベントがマシンに届く仕組み

GitHub / Slack ──webhook──▶ Console ──wake signal──▶ your daemon ──API fetch──▶ run

あなたの daemon は Console への外向き WebSocket 接続を 1 本だけ保ちます — マシンに 受信ポートはありません。GitHub や Slack のイベントが届くと、Console はその署名を 検証し、wake signal だけを転送します。どの installation か、どのリポジトリか、 どんな種類のイベントか。payload も中身もありません。

daemon はそのあと本当のデータ — issue の本文、Slack のスレッド — を、自分の認証情報で ソース API から直接取得し、イベントが実際に存在するときだけ run を発火します。この 帰結ははっきり述べる価値があります。侵害された Console でさえ run を偽造できません。 でっち上げた wake signal は、ソースに対する daemon の検証に通らないからです。

signal は store-and-forward されます。マシンがオフラインなら再接続時に配信され、 集約が溜まった分の暴走を防ぎます。

デバイス

lk login またはデスクトップアプリの サインイン でペアリングします (Console とペアリングする を参照)。各デバイスは専用のトークンと 署名鍵を持ち、Console の デバイス に一覧され、個別に revoke できます — 紛失・盗難 したノートPCの復旧経路です。

GitHub

Console の 接続 ページから、loopkeep の GitHub App を自分のアカウントか 組織にインストールします。するとリポジトリのイベント(issue、pull request、…)が wake signal として流れます。workflow はリポジトリに暗黙で bind します。origin リモートがあるリポジトリを指す workspace は、設定なしでそのリポジトリのイベントを 受け取ります。複数のリポジトリを購読するには、明示的に名前を指定します:

on:
  issues:
    repos: ["org/other-repo"]

Slack

Console の Add to Slack で Slack workspace を接続します — 共有アプリが 1 つ、 作ったり貼ったりするトークンはありません。すると workflow はメンションと DM で トリガーできます:

on:
  slack:
    events: [app_mention]
    channels: ["#ops"]
    from_not: ["*bot*"] # 既定のガード: bot の返信で再発火しない

メッセージ本文はあなたの daemon が Slack API から取得します。wake signal に載って 運ばれることはありません。

保証すること

  • 中身はマシンに残る。 wake signal はメタデータです。あなたのコード、ファイル、 prompt、run の出力について、何もアップロードされません。
  • ランタイムは決してゲートされない。 サインアウト中、オフライン、Console が落ちて いても — ローカルのトリガー、run、受信箱、デスクトップアプリはいつまでも動き続けます。 リモートの kill switch は、設計上ありません。
  • revocation は本物。 デバイスを revoke すると、その Console アクセスとコネクタの 認証情報が切れます。

この先の予定

予定は順に、Console への読み取り専用のイベント同期(メタデータと要約だけ — 中身は マシンに残る)、デバイス署名の verdict によるリモート承認、そしてポケットから承認する ための iOS アプリです。これらが揃うにつれて docs も増えていきます。