スマートフォンとほかのコンピューター¶
Interlatch は 1 台のコンピューターにアーカイブを置きます。そのダッシュボードをスマートフォンで開いたり、ほかのコンピューターの セッションも同じアーカイブにまとめたりできます。どちらも Tailscale(自分のデバイスどうしの プライベートなネットワーク)を通るので、インターネットには何も公開されません。
1 台がハブになります。セッションを記録し、分析し、ダッシュボードを提供するのはハブだけです。デスクトップの Mac、Mac mini、 Linux マシンなど、いちばん長く電源が入っているものを選んでください。ほかのコンピューターはハブにセッションを送り、 スマートフォンはハブのダッシュボードを開きます。書き込むのがハブだけなので、各セッションの分析(とその費用)は 1 回だけで、 マージするものもありません。
ハブはチームで使うこともできます。各自が招待を受けてロールを持って参加し(利用者とロール)、 すべてのプロジェクトか、一部のプロジェクトだけを見ます(見えるプロジェクトを人ごとに決める)。 Tailscale の代わりに社内ネットワークを使うこともできます(Tailscale を使わずにハブにつなぐ)。
スマートフォン¶
- ハブとスマートフォンに Tailscale をインストールし、両方を同じアカウントでサインインします。
- ハブで次を実行します。
interlatch tailnet on
初回は、tailnet で Serve と HTTPS 証明書を有効にするためのリンクを Tailscale が表示することがあります。開いて有効にし、
コマンドが止まっていればもう一度実行してください。
3. スマートフォンで(Tailscale アプリをオンにして)、表示されたアドレス https://<コンピューター>.<tailnet>.ts.net/ を開きます。
iPhone では 共有 › ホーム画面に追加 でアイコンができ、アプリのように開けます。Android では ⋮ › ホーム画面に追加 です。
スマートフォンではセクションが画面下のタブバーに並び、ページが画面の幅いっぱいに広がります。セッションはカードで表示されます。 検索、ナレッジ、振り返り、ピン留めや非表示など、コンピューターと同じことができます。
仕組み:Tailscale Serve がこの HTTPS アドレスをダッシュボードに転送します。ダッシュボード自体は引き続き 127.0.0.1 だけで
待ち受けます。ダッシュボードはこの名前([server] allowed_hosts)に応答し、Serve が伝えるあなたの Tailscale ログイン
([server] allowed_users)だけを通します。interlatch tailnet on --anyone で、Tailscale ログインを持つ tailnet の全員を通します。
タグ付きのデバイスや Tailscale Funnel からの訪問者には Serve がログインを伝えないため、ハブに利用者ができてサインインするまで
入れません。interlatch tailnet status
で設定を確認し、interlatch tailnet off で tailnet から外します。ハブではダッシュボードが動いている必要があります。
interlatch install がバックグラウンドで動かし続けます。
ほかのコンピューター¶
ハブで interlatch tailnet on のあと、次を実行します。
interlatch hub enable
ハブのアドレスとトークンの入ったコマンドが表示されます。ほかのコンピューターに Interlatch をインストールし、 そこでそのコマンドを実行します。
interlatch hub join https://pc.tail1234.ts.net --token …
このトークンはハブの共有トークンで、自分のコンピューターどうしならこれで十分です。ほかの人のコンピューターは、代わりに 一人ずつ招待します(利用者とロール)。
そのコンピューターにある Claude Code と Codex のセッションがすべてハブに送られ、ハブが記録して分析します。以後は次のとおりです。
- 新しいセッションはハブへ送られます。 そのコンピューターで
interlatch installがフックとバックグラウンド同期を設定していれば、 セッションが終わるたび(SessionEnd フック)と 15 分ごと(バックグラウンド同期)に送ります。interlatch pushですぐに送れます。 - ハブは各セッションをどこで実行したか知っています。 セッションのページにどのコンピューターのものかが表示され、
Team › Computers にコンピューターと、その持ち主、それぞれのセッション数、最後に送ってきた時刻が並びます(ターミナルでは
interlatch hub status)。 - 分析はハブだけで行います。 そのコンピューターが自分の Interlatch ですでに分析していたセッションは、参加するときにその結果を ハブに引き渡すので、ハブがもう一度費用をかけて分析することはありません。
- そのコンピューター自身のダッシュボードと MCP ツールは更新されなくなります。 それまでの内容は残ります。代わりにハブの ダッシュボードを開いてください(Settings › Devices にリンクがあります)。
同じプロジェクト、別のフォルダー¶
同じリポジトリでも、コンピューターによってフォルダーが違うことはよくあります。ハブは各セッションを自分の側の同じプロジェクトに まとめます。
- git のリモートで。 ほかのコンピューターが各プロジェクトフォルダーの git リモートを知らせます(Codex のセッションは自分でも 記録しています)。同じリモートを持つハブ側のフォルダーにまとめます。
- そのコンピューターで追加したフォルダーで。 メモ用のフォルダー、作業用のフォルダー、ハブが知らないリポジトリなど、 セッションをハブのプロジェクトに入れたいフォルダー向けです。そのコンピューターで次を実行します。
interlatch hub add-folder ~/work/client-notes --project demo-app
--project にはハブのプロジェクト名かパスを指定します(interlatch hub folders --list で一覧できます)。まだ誰も
送っていないプロジェクトは、先にハブで用意しておけます(見えるプロジェクトを人ごとに決める)。
フォルダーとその下のすべてのセッションがそのプロジェクトに入ります。ハブにすでにあるセッションも、ナレッジごと移り、
両方のプロジェクトのナレッジベースが作り直されます。より具体的な指定が優先されるので、フォルダーの中にあってもハブが
git リモートを知っているリポジトリはそのリモートに従います。ハブが別のプロジェクトに入れているリポジトリの中のフォルダーは追加できません
(1 つのリポジトリは 1 つのプロジェクトに属します)。interlatch hub folders でどこに入るかを確認できます。
ダッシュボードの Settings › Devices › Projects on the hub でも同じことができ、Join a project でハブの
プロジェクトとこのコンピューターのフォルダーを選びます。間違えて追加したフォルダーを外すにはやめるときを
見てください。ハブの Team › Computers に、各コンピューターが追加したフォルダーが表示されます。
このコンピューターの Projects ページとサイドバーでは、ここのフォルダーの送り先になっているハブのプロジェクトが
ハブの名前の下に先頭に並び、それぞれの下にここのプロジェクトと、ハブにあるチームのセッション数が表示されます(最後に
送ったときの情報です)。ハブのプロジェクトはサインインした状態でハブのダッシュボードで開き、そこへ送られるここの
プロジェクトには青緑の雲が付いたフォルダーのアイコンが付きます。グループの中や自分のページなどでは On the hub のバッジが付き、
ハブでの名前が違うときはその名前も表示します。
3. [hub] path_map で。 リモートのないプロジェクト向けに、ハブの設定で指定します。
[hub]
path_map = { "/home/me/code" = "/Users/me/Projects" }
どちらにも当てはまらなければ、セッションは実行されたフォルダーのままです。セッションのページでコンピューター名にポインターを 合わせると、元のフォルダーが表示されます。
グループをハブの 1 つのプロジェクトにする¶
プロジェクトのグループは、ハブの 1 つのプロジェクトとして共有できます。Projects ページで グループを編集し、On the hub でハブのプロジェクトを選んで保存すると、次に送るときから、このコンピューターはグループの プロジェクトをそこへ送ります。各プロジェクトのフォルダーをそのプロジェクトに追加したのと同じです。グループとの結び付きは続きます。
- あとからグループに入ったプロジェクト(フォルダーのルールでも手でも)も送られます。
- グループから外したプロジェクトは、送られるプロジェクトのフォルダーの中にあっても、ここに残ります。ナレッジだけを共有する コンピューターでは送られません。トランスクリプトを送るコンピューターはすべてを送るので、グループは振り分け先だけを決めます。
- グループから外れたプロジェクトや、Not shared を選んだグループ全体は、送られなくなります。共有済みのものは、 やめるときと同じように、ハブのそのプロジェクトに残ります。
- 手で追加したフォルダーや、ハブが別のプロジェクトに入れている git リモートのリポジトリは、上のとおりグループより優先されます。
別のコンピューターで記録されたプロジェクト(
server:/root/appなど)は、ここからは送れません。
プロジェクトはハブにすでにある必要があり(メンバーのコンピューターでは作れません)、選ぶのはこのコンピューター自身で、ほかの デバイスからはできません。Settings › Devices › Projects on the hub ではそのプロジェクトの下にグループが表示され、グループの プロジェクトは Projects ページとサイドバーで、グループの中に加えてそのプロジェクトの下にも並びます。
送られるもの¶
claude_dirsの各フォルダーからprojects/(トランスクリプト、サブエージェントのスレッド、メモリーのメモ)とhistory.jsonl。codex_dirsの各フォルダーからsessions/、memories/、Codex のセッション一覧。sources.exclude_projectsにあるプロジェクトは送りません。- GitHub Copilot、IBM Bob、Google Antigravity、Codex Cloud、チャットのエクスポートは送りません。これらはハブで接続または取り込みます。
- ファイルは HTTPS(tailnet 内、またはハブの前に置いた HTTPS のプロキシ経由)で圧縮して送られ、到着時に SHA-256 で照合
されます。送るのはハブにないファイルか、ハブのものが古いファイルだけです。各コンピューターは
~/.interlatch/hub-tokenにあるトークンで認証します。このファイルはあなたのユーザーだけが読めます。トークンはハブの共有トークンか、招待で参加した 場合はそのコンピューター専用のものです。interlatch hub enable --rotateで共有トークンを作り直すと、それを使っている コンピューターは参加し直す必要があります。 - ハブは受け取ったものを
~/.interlatch/machines/<コンピューター>/に置き、自分のものと同じようにアーカイブします。
ナレッジだけを共有する¶
トランスクリプトを手元に残したまま、ハブのナレッジに加わることもできます。--share knowledge を付けて参加します。
interlatch hub join https://pc.tail1234.ts.net --token … --share knowledge
(参加済みのコンピューターでは interlatch config set hub.share knowledge、またはそのダッシュボードの Settings › Devices ›
What this computer sends)。そのコンピューターは単独の Interlatch と同じように
動きます。自分のセッションを記録し、自分で分析し(自分の Claude Code か Codex のログイン、Bob API キー、または
モデルプロバイダーで)、ダッシュボードと MCP ツールも更新され続けます。分析のたびにハブへ送るのは次のものだけです。
- 分析済みの各セッションの情報:実行日時、エージェント、モデル、ブランチ、トークンと費用、使ったツール
- 分析結果:タイトル、要約、結果、ハイライト、うまくいかなかったこと
- そのセッションから得た、プロジェクトについてのナレッジ
送るのは、ハブがいずれかのプロジェクトに入れるセッションだけです。interlatch hub add-folder で追加したフォルダーのセッションと、
ハブがすでにプロジェクトに入れている git リモートのリポジトリのセッションです(同じプロジェクト、別のフォルダー)。
それ以外のフォルダーのセッションはコンピューターに残り、送信の結果には「kept here」として数えられます。Docker やサーバー上の
ハブのように、ハブ自身がそのリポジトリでセッションを実行したことがなければ、ハブはその git リモートを知りません。その場合は
プロジェクトごとに自分のフォルダーを追加してください。すべてのフォルダーのセッションを共有するには、--all-folders を付けて
参加するか、interlatch config set hub.all_folders true を実行するか、Settings › Devices › What this computer sends で
すべてのフォルダー を選びます。
プロンプト、シェルのコマンド、ファイルのパス、トランスクリプト、あなた自身についてのナレッジ(全体のものと好み)は コンピューターから出ません。GitHub Copilot、IBM Bob、Google Antigravity のセッションも共有されます。取り込んだチャットは 共有されません。
ハブでは、これらのセッションもそのコンピューターのほかのセッションと同じように(git リモート、追加したフォルダー、
path_map で)プロジェクトに入り、そのナレッジはプロジェクトのナレッジベースに加わります。セッションのページには
トランスクリプトの代わりに トランスクリプトは <コンピューター> に と表示されます。ハブはこれらのセッションを分析し直さない
ので、そのための分析用のログインやキーは要りません。プロジェクトのナレッジベースと用語集は、ハブが自分のログインかキーで作ります。
Team › Computers ではそのコンピューターに ナレッジのみ と表示されます。ハブがすでにトランスクリプトを持っている
セッションは、ハブの記録がそのまま使われます。
ナレッジだけを受け付けるハブ¶
何を送るかは各コンピューターが決めるので、--share knowledge を付けずに参加したコンピューターはトランスクリプトを送ります。
誰のコンピューターであってもトランスクリプトをハブに置かないなら、ハブがナレッジだけを受け付けるようにします。ハブで:
interlatch config set hub.accept knowledge
または、管理者が Team › Hub settings の ナレッジのみ をオンにします。するとハブは、共有トークンでも本人のトークンでも、
トランスクリプトを送るコンピューターを受け付けず、実行すべきこと(interlatch config set hub.share knowledge のあと
interlatch push)を伝えます。Team › Computers ではそのようなコンピューターに トランスクリプトを送信:受け付けていません
と表示され、interlatch hub でも同じように示されます。招待で参加するコンピューターは、自動でナレッジのみの共有になります。
ハブにすでにあるトランスクリプトは残ります。完全に消すには interlatch forget を使います。"everything" と "knowledge"
以外の値は "knowledge" として扱うので、打ち間違えてもトランスクリプトが入ることはありません。誰が変更したかは監査ログに
残ります。
チームメイトのナレッジと、Postgres のチームストア¶
何人かで使うハブは、チームの記録を Postgres にも残し、ナレッジを共有している各コンピューターへチームメイトが学んだことを 返せます。ハブで次を実行します。
uv tool install 'interlatch[team]' # Postgres のドライバー。必要なのはハブだけ
# PGHOST、PGPORT、PGDATABASE、PGUSER、PGPASSWORD(と PGSSLMODE。既定は require)を 1 行ずつ:
$EDITOR ~/.interlatch/team-store.env && chmod 600 ~/.interlatch/team-store.env
interlatch config set hub.store postgres
interlatch hub store # 接続し、テーブルを用意して、中身を表示します
そのあと、セッションを受け取るダッシュボードを再起動します。ドライバーを入れたあとは、ハブ自身で Team › Team store を 開き、接続先を入力して Test connection、Save としても設定できます。接続できない設定は保存されず、 パスワードは二度と表示されません。この設定を変更できるのは管理者だけです(利用者とロール)。
- 残すもの。 コンピューターが共有した各セッションの情報、要約、プロジェクトのナレッジを、まず Postgres に、次にハブ自身の データベースに書きます。ダッシュボードが読むのは引き続きハブのデータベースです。Postgres に接続できないときはどちらにも 残さず、コンピューターは次のプッシュでもう一度送ります。
- ナレッジはリポジトリに属します。 git リポジトリで得たナレッジは、各自がどこにクローンしていても、そのリポジトリ (リモート)に属します。リモートのないフォルダーで得たものは、ハブ上のそのフォルダーのプロジェクトに属します。二人から 同じナレッジ(種類とタイトルが同じもの)が届くと一つの項目になり、どのセッションが述べたかを覚えています。
- チームメイトのナレッジが戻ってきます。 ナレッジを共有しているコンピューターは、共有するたびに、クローンを持っている
リポジトリ、セッションを共有したプロジェクト、フォルダーを追加したプロジェクトについて、チームメイトのナレッジを受け取り
ます。共有するのは分析のたび(セッションが終わったとき、
interlatch installのバックグラウンドエージェントがあれば 15 分ごと)と、interlatch pushまたは Settings › Devices の Share now を使ったときです。自分のデータベースに読み取り専用で、そのリポジトリの自分のフォルダーの下に保存されます。MCP ツールはそれも (チームメイトのものと示して)答えに使い、セッション開始時のメモは From teammates' sessions の下に並べます。 ダッシュボードでも、プロジェクトのページと All knowledge に、それを述べたセッションのコンピューター名を from で 示して表示します。そこで取得元に From teammates を選ぶとそれだけが並び、Settings › Devices の Read them で その一覧が開きます。自分が述べたナレッジは返ってきません。却下したものは却下されたまま残り、チームから消えたものは消えます。持っている数はinterlatch hub statusとそのコンピューターの Settings › Devices で分かり、そこの Share now ですぐに プッシュできます。 - データベースにつなぐのはハブだけです。 各コンピューターはそのアドレスもパスワードも知らないので、ハブだけが届く
ネットワークに置けます。テーブルはスキーマ
teamにあり、プッシュとプルごとの監査ログ(件数のみ)も残ります。更新の 手順はそれぞれ名前で記録され、一度だけ実行されます。
まだできないこと:ハブ自身が分析するセッションのうち、Postgres に入るのはハブで用意したプロジェクトにあるハブ自身のセッション
だけです(見えるプロジェクトを人ごとに決める)。ほかのコンピューターがトランスクリプトごと
送ったもの(share = "everything")は入りません。同じナレッジが二つの言語で届くと、最後に届いた書き方が残ります。
やめるとき¶
ナレッジを共有するコンピューターは、ハブのプロジェクトのうち一つから抜けて、ほかには残れます。Settings › Devices › Projects on the hub で、プロジェクトごとに次のボタンがあります。
- Leave:このコンピューターはそこへのセッションの共有と、そのプロジェクトのチームメイトのナレッジの受け取りを
やめます。すでに共有したものはチームのためにハブのそのプロジェクトに残ります。Rejoin で元に戻せます。コマンドでは
interlatch hub leave --project <name>とinterlatch hub rejoin --project <name>です。コンピューターの 設定の[hub] leftに残ります。ハブの Team › Projects には、抜けたコンピューターが示されます。 - フォルダーの横の Remove:間違ったプロジェクトに追加したフォルダー用です。そのセッションは送られなくなり、
このコンピューターがそのフォルダーから共有したものを、ハブがナレッジごとデータベースとチームストアから削除します。
interlatch hub purgeと違い、あとでそのフォルダーを正しいプロジェクトに追加すれば、ハブは再び受け取ります。コマンドではinterlatch hub remove-folder <folder>です。トランスクリプトを送るコンピューターでは、ハブにトランスクリプトが残り、 ハブは git リモートか元のフォルダーで振り分け直します。
interlatch hub leave、または Settings › Devices の Leave the hub… で、そのコンピューターは再び自分でセッションを
記録・分析します。ハブは受け取ったものを残します。再び参加するには新しい招待が必要です。ハブで interlatch hub disable を
実行すると、セッションを受け付けなくなります。
利用者とロール¶
何人かで使うハブは、一人ひとりが誰なのかを知っています。管理者が各自をロール付きで招待し、各自のコンピューターはそれぞれ 専用のトークンを受け取り、ハブのダッシュボードはパスワードなしで開けます。どれも Tailscale は要りません。
| ロール | できること |
|---|---|
admin(管理者) |
メンバーができることすべてに加え、ハブのダッシュボードで人を招待する、ロールを変える、人を外す、ハブの設定(チームストア、利用者、共有トークン)を変える |
member(メンバー) |
自分のコンピューターがハブにセッションを送り、チームメイトのナレッジを受け取る。ハブのダッシュボードを見る |
readonly(閲覧のみ) |
ハブのダッシュボードを見る。何も送らず、何も変えない |
メンバーと閲覧のみの人に見えるのは、与えられたプロジェクト(すべてか一部)です(見えるプロジェクトを人ごとに決める)。 管理者には常にすべてのプロジェクトが見えます。ハブのダッシュボードで何かを変えられるのは管理者だけです。設定、Sync、 分析、ピン留めや非表示も管理者だけです。メンバー自身の Interlatch はこれまでどおり使えます。
最初の利用者を追加するまで、コンピューターは共有トークンで送ります。ハブのダッシュボードにはサインインがないため、開けるのは
ハブ自身と、interlatch tailnet on が通す Tailscale ログインだけです(スマートフォン)。それ以外の人は、
ほかのデバイスからでもリバースプロキシ経由でも入れず、最初の管理者の追加方法が表示されます。利用者がいるハブでは、ほかのデバイスから
ダッシュボードを開く人は全員サインインします。Tailscale 経由でも同じです。
ハブのコンピューターにいる人は常に管理者¶
ハブのコンピューターそのものにいる人は、常に管理者です。そこで実行する interlatch hub コマンドも、そのコンピューターで
開いたダッシュボードも管理者として動きます。最初の利用者はこうして追加します。管理者がいなくなったハブを元に戻すのも同じで、
ハブで interlatch hub role ana@example.com admin を実行します。管理者ロールの人は、ハブの最後の管理者のロールを下げたり
外したりできません。ハブのコンピューターでは可能です。
招待する¶
ハブで次を実行します。
interlatch hub invite "Ana Lima" --email ana@example.com --role member --all-projects
ハブのダッシュボードの Team › People › Invite someone でも招待できます。--role を省くと member に
なります。メールアドレスは省略できますが、会社のサインインはメールアドレスで人を探します。メンバーと閲覧のみの人には、
どのプロジェクトを見せるか指定するまで何も見えません。すべてのプロジェクトなら --all-projects、1 つなら
--project <name> を付けます(複数なら繰り返します。見えるプロジェクトを人ごとに決める)。
どちらもなければ新しい人は招待できません。管理者には常にすべてのプロジェクトが見えます。表示されるのは次のものです。
- コード(例:
K7PQ-M2XD-9HNA) - Ana のコンピューターで実行するコマンド:
interlatch hub join https://interlatch.example.internal --code K7PQ-M2XD-9HNA --share knowledge - ブラウザーで開くリンク:
https://interlatch.example.internal/signin?code=K7PQ-M2XD-9HNA - コードの有効期限
コードは 1 回だけ、7 日間使えます。ハブはメールを送らないので、チャットなどで渡してください。ハブはコードのハッシュしか
残さないため、コードが表示されるのは一度だけです。なくしたときや期限が切れたときは、同じメールアドレスでもう一度
interlatch hub invite を実行するか、その人の横の New invite で作り直します。1 つのコードで参加できるコンピューター、
またはサインインできるブラウザーは 1 つだけなので、ノートパソコンとスマートフォンを使う人には 2 つ必要です。コードを
入力するとき、大文字・小文字とハイフンは区別しません。
コマンドとリンクにはハブのアドレス [hub] address が入ります。これは interlatch hub enable --url <アドレス> で設定します。
interlatch hub people で全員のロール、見えるプロジェクト、コンピューターを一覧できます。
コンピューターを参加させる¶
その人のコンピューターに Interlatch をインストールし、次を実行します。その人に送る手順書として チームのハブに参加するがあります。
interlatch hub join https://interlatch.example.internal --code K7PQ-M2XD-9HNA --share knowledge
ハブはコードと引き換えに、その人のそのコンピューター専用のトークンを渡します。トークンは ~/.interlatch/hub-token
に保存され、そのコンピューターからしか使えません。以後、そのコンピューターはほかのコンピューターと同じようにセッションを
送ります(ほかのコンピューター)。--share knowledge を付けるとトランスクリプトは手元に残ります
(ナレッジだけを共有する)。付けなければすべて送ります。同じ人の新しいコードで参加し直すと、そのコンピューターの
古いトークンは置き換わります。別の人として参加したままのコンピューターに、ほかの人のコードは使えません(招待でコンピューターを
乗っ取れないようにするためです)。先に管理者がその横の Revoke を押してから(利用者を外す)、新しいコードで参加します。
ハブがすでに知っているコンピューター(共有トークンで送ってきたもの)は、そのコンピューター自身からしか参加できません。Interlatch は
~/.interlatch/machine-key に鍵を保存し、ハブはそのコンピューターが最初にあいさつしたときにそれを記録します。hub join --code
はその鍵を示します(共有トークンをまだ持っていれば、先にそれであいさつします)。ほかの人の招待をそのコンピューターの ID で使っても
拒否されるので、コンピューターとそのセッションを横取りできません。鍵を示せないコンピューター(最後に古い Interlatch で送り、今は
共有トークンがオフ)には、管理者がそのコンピューター専用の招待を作ります:interlatch hub invite <名前> --computer <名前または ID>。
名前は チーム › コンピューター に出ているもの、ID は拒否された参加が表示したものです。そのコードはそのコンピューターでしか使えません。
ハブのダッシュボードを開く¶
- 自分の Interlatch から。 参加したコンピューターで Settings › Devices › Open the hub's dashboard を押すと、ハブから 5 分間有効なサインインリンクを受け取り、ブラウザーで開きます。パスワードはありません。
- 招待リンクで。
…/signin?code=…を開くと、そのブラウザーがサインインします。ハブのサインイン画面にコードを貼り付けても 同じです。スマートフォンや、ハブに参加したコンピューターを持たない人はこちらを使います。 - 会社のサインインで。 ハブがその後ろにある場合です(後述)。
ブラウザーは最後に使ってから 30 日間サインインしたままです。ヘッダーの Sign out で終わります。
ハブのダッシュボード¶
ハブに利用者がいると、Home はチームのものになります。チームのプロジェクト(ハブで設定したものと、ほかのコンピューターが 送ってくるもの)ごとに、直近 7・30・90 日のセッションと新しい教訓、作業した人を表示し、最新の教訓とセッションを、それぞれ どの人のコンピューターから来たかとともに並べます。Who worked on what は、期間中に各人が取り組んだプロジェクトを 並べます。人ごとのセッションや教訓は数えません。人ごとの集計は成績のように読めてしまい、教訓の件数はうまくいかなかったことの 数にほぼ等しいからです。セッションは実行された日で、教訓は書かれた日で数えるので、今週分析した 古いセッションを共有すると、その週の教訓は増えてもセッションは増えません。プロジェクトのページはすべてのセッションを数えます。管理者には要対応の項目も表示されます。まだ参加していない人や入る手段の ない人、1 週間以上連絡のないコンピューターです。ハブのコンピューターだけで作業しているプロジェクトはチームの Home に 出ません。ハブのすべてのセッションのグラフは Activity(Home の右上)にあります。見えるプロジェクトを限られた人には、 自分のプロジェクトだけが表示されます。
新着。 ほかのコンピューターがハブにまだないセッションや教訓を共有したとき、またはコンピューターが参加したとき、
チームの概要 のアイコンに件数が付き、ブラウザーのタブにも出ます((3) Team overview — Interlatch)。ダッシュボードを
開いていれば、届いた内容を知らせます(AI-BPO-Resona に Yuma から新着: 2 セッション, 4 件の教訓)。チームの概要を開くと、
前回からの新着が並び、そのプロジェクトのセッションと教訓に +2 のように付き、件数は消えます。続きがあって送り直された
セッションは新着になりません。新しい分析で見つかった教訓は新着になります。何を見たかは人ごとにハブに記録されるので、
別のブラウザーでも同じです。初めてのときは直近 7 日分が新着です。見えるプロジェクトを限られた人には、そのプロジェクトの
新着だけが届き、コンピューターの参加は管理者にだけ届きます。ハブは 90 日分を残します。
管理者はサイドバーの Team からハブを管理します。People、Shared projects、Computers、Team store、
Hub settings(ハブの名前とアドレス、ナレッジのみ、ナレッジベースを書くモデル、更新、バックアップ)です。
ハブのダッシュボードは、自分のダッシュボードと取り違えないよう、どのページでもハブであることを示します。上端の緑の帯に
ハブの名前、アドレス、ハブの種類が、ステータスバーに Hub の行が表示され、全体が緑がかった色になります。名前は、設定
しなければハブのコンピューターの名前です。ハブで interlatch config set hub.name "Resona team" と実行すると設定できます。
専用のハブ([hub] dedicated = true。Docker のイメージが設定します)は、自分のセッションを持たない
チームのためのサーバーです。そのダッシュボードはチームの Home から始まり、個人のコンピューターにだけ必要なものを省きます。
Sync、Activity、Artifacts、Suggestions、Settings › Sources・MCP・Devices です。Team では
Shared projects の代わりに Projects があり、管理者はどのブラウザーからでも名前を付けてプロジェクトを作れます。
Sessions と All knowledge には、各セッションと教訓がだれのものかがプロジェクトの下に表示され、フィルターで人を選べます。 全員のもの、または 1 人のもの(だれも参加させていないコンピューターなら、そのコンピューターのもの)です。チームの Home、 セッションの行、教訓にある名前を押すと、その人のセッションや教訓が開きます。
閲覧のみの人¶
閲覧のみの人は見るだけです。参加コマンドではなくブラウザー用のリンクを渡してください。その人のコードで参加した コンピューターが送ったものは、ハブが受け付けません(「read-only people can't send to the hub」)。送れるようにするには メンバーにします。
見えるプロジェクトを人ごとに決める¶
メンバーと閲覧のみの人には、ハブのすべてのプロジェクトか、一部のプロジェクトだけが見えます。一部のプロジェクトに限られた 人には、ハブのダッシュボードでそのプロジェクトだけが見え、その人のコンピューターはそのプロジェクトのナレッジだけを共有します。 管理者には常にすべてのプロジェクトが見えます。プロジェクトを選べるようになる前に追加された人には、これまでどおりすべての プロジェクトが見えます。
プロジェクトは、誰かが送る前にハブで用意しておけます。用意したプロジェクトは、その時点からハブの Projects ページと
サイドバーに重なったフォルダーのアイコンと「まだセッションがありません」の表示付きで並び、セッションが届くまでは Team › Projects を開きます。たとえば、ハブの持ち主が Resona を ~/Projects/Work/Resona に
置いていて、Aki と Ben には Resona だけを見せたいとします。ハブで次を実行します。
interlatch hub project add ~/Projects/Work/Resona
interlatch hub invite Aki --email aki@example.com --project Resona
interlatch hub invite Ben --email ben@example.com --project Resona
Aki のコンピューターで次を実行します(Ben のコンピューターでも、Ben のコードで同じようにします)。
interlatch hub join https://interlatch.example.internal --code XXXX-XXXX-XXXX
interlatch hub add-folder ~/work/Resona --project Resona
- ハブで用意したプロジェクトは、ハブのコンピューター上のフォルダーとその下のすべてで、フォルダーの名前が付きます。
そこにあるハブ自身のセッションはすぐにナレッジごとそのプロジェクトに入り、新しいセッションも入ります。ほかの
コンピューターは、まだ何も送っていなくても、すぐにそこへフォルダーを追加できます。フォルダーはハブに存在するか、そこで
実行されたセッションがある必要があります。
/、ホームフォルダー、その上のフォルダーは指定できず、こうして用意した ほかのプロジェクトの中や外側のフォルダーも指定できません。interlatch hub project listでハブのプロジェクトを一覧でき、ここで用意したものには 印が付きます。interlatch hub project remove <folder>で取り消せます。ハブ自身のセッションはそれぞれのフォルダーに戻り、 ほかのコンピューターが送ったものは、もう一度送られるまで今の場所に残ります。ダッシュボードでは Team › Shared projects(共有プロジェクト)に同じ一覧が、見える人と送ってくるコンピューターとともに 表示され、Projects では 共有中 のバッジが付きます。ハブのコンピューター自身なら、このカードからプロジェクトの共有の開始と停止もできます。 - 見えるプロジェクト。
--projectには、ここで用意したかどうかにかかわらず、ハブのどのプロジェクトの名前かパスでも 指定でき、繰り返せます。--all-projectsならすべてのプロジェクトです。あとから変えるにはinterlatch hub access <email|id> --project <name>(または--all-projects)を使います。その人の次のリクエストから 反映され、その人のコンピューターがすでに送ったものは残ります。一覧はまるごと置き換わるので、残すプロジェクトもすべて 指定します。--project Resona --project Websiteなら、Ben に Website を加えて Resona も残します。interlatch hub peopleで各自に見えるものを確認できます。 ハブのダッシュボードでは、管理者が Team › People で、招待するときにプロジェクトを選び、あとから変えられます。 プロジェクトが 7 つ以上あるハブでは、検索ボックスで名前やフォルダーから探せます。 - 新しいプロジェクトは、一部のプロジェクトに限られた人にはまだ見えません。 見えるプロジェクトを決めたあとに作った
プロジェクトは、その人のハブのダッシュボードに出ず、Join a project では「一致するものはありません。」と
なり、
add-folderはハブにそのプロジェクトがないと答えます。見るべき人それぞれに、上のとおりに加えてください。 管理者と、すべてのプロジェクトが見える人には、すぐに見えます。 - 参加。 一部のプロジェクトに限られた人として参加したコンピューターは、
--share knowledgeの有無にかかわらずナレッジ だけを共有し(ナレッジだけを共有する)、interlatch hub joinが共有するプロジェクトを表示します。 続くadd-folderで、~/work/Resonaのセッションが Resona に入ります。ハブがすでに Resona に入れている git リモートの リポジトリは、フォルダーを追加しなくてもそこに入ります。 - その人のコンピューターが送るもの。 ハブがその人のプロジェクトに入れるセッションだけです。つまり、そのプロジェクトに 追加したフォルダーの中のセッションか、ハブがそのプロジェクトに入れている git リモートのリポジトリのセッションです。 それ以外のセッションはコンピューターに残ります。ハブはそのコンピューターからのトランスクリプトを受け付けず、それ以外に 送られてきたものは捨て、その人のプロジェクトのこと(名前と git リモート)しか伝えません。受け取るチームメイトのナレッジも、 そのプロジェクトに入ったセッションからのものだけです。
- ハブのダッシュボードで見えるもの。 Home、Sessions、Knowledge、Projects の、その人のプロジェクトの分だけで、 各プロジェクトのナレッジベースも見えます。並ぶのは分析済みのセッションだけで、それぞれ要約とプロジェクトのナレッジだけが 表示されます。プロンプト、トランスクリプト、ファイル、シェルのコマンド、ツール呼び出しは見えず、書き出しもできません。 セッションの検索はタイトルと要約だけを対象にします。人についてのナレッジ(好みと全体のもの)は表示されません。 Glossary、Map、Artifacts、Reviews、Suggestions、What goes wrong、ハブの設定など、それ以外はすべて 「このハブでは一部のプロジェクトだけが見えます」と返されます。これはハブ自身が守ります。その人にはこれらのページしか 答えず、その人のリクエストからは、データベースのうちその人のプロジェクトの行しか見えません。
- ハブの持ち主のナレッジ。 チームストアがあれば(チームメイトのナレッジと、Postgres のチームストア)、 ハブで用意したプロジェクトにあるハブ自身の分析済みセッションも、メンバーのものと同じように Postgres に入ります。入るのは 情報(時刻、件数、モデル)、プロジェクトのフォルダー、分析が書いたままの要約とプロジェクトのナレッジで、プロンプト、 トランスクリプト、あなた自身についてのナレッジは入りません。要約とナレッジは伏せ字にされないので、セッションで扱った ファイルやコマンドの名前が含まれることがあります。これで Aki と Ben のエージェントにも、ハブの持ち主が Resona で得たナレッジが届きます。ハブは、コンピューター からチームメイトのナレッジを求められるたびにこれを送ります。
- プロジェクトの中のメモ。 ハブのコンピューターでは、そこで用意したプロジェクトの中のどのフォルダーでも、セッション
開始時のメモと MCP ツール
project_knowledgeがそのプロジェクトのナレッジを使います。 - 共有トークンは限られません。 ハブの共有トークンで送るコンピューターは特定の誰でもないので、プロジェクトの制限は
かかりません。全員が招待で参加し終えたら
interlatch hub shared-token offでオフにしてください(後述)。 オンの間はinterlatch hub accessがそのことを知らせます。
共有トークン¶
利用者を追加したあとも、--token で参加したコンピューターはハブの共有トークンで送り続けられるので、誰も締め出されません。
共有トークンは特定のコンピューターのものではないので、それを持つ人は、まだ利用者として参加していないどのコンピューターとしても
送れます。招待で参加したコンピューターはその利用者のもので、そのコンピューター専用のトークンでしか送れません。
全員が招待で参加し終えたら、ハブで共有トークンをオフにします。
interlatch hub shared-token off
Team › People のスイッチでもオフにできます。以後ハブは共有トークンを受け付けず、それを使っている
コンピューターはコードで参加し直す必要があります。interlatch hub shared-token on で元に戻せます。共有トークンでダッシュボードを
開くことはできません。共有トークンは特定の誰のものでもないので、それで送るコンピューターには
プロジェクトの制限がかかりません。
利用者を外す¶
interlatch hub remove ana@example.com、または Team › People でその人の横の Remove を押すと、その人を
ハブから外します。使っていないコード、コンピューターのトークン、ブラウザーのセッションは、次のリクエストから使えなくなります。
その人のコンピューターが送ったものはハブに残ります。
なくしたノートパソコンなど、コンピューターやブラウザーを 1 つだけ止めて人は残すときは、同じ一覧でその横の Revoke を
押します。そのコンピューターは新しいコードで、同じ人としても別の人としてもまた参加できます。ロールは interlatch hub role ana@example.com readonly で、
見えるプロジェクトは interlatch hub access ana@example.com --project demo-app で変えます。これらのコマンドには、
メールアドレスか interlatch hub people に表示される ID を指定します。
コンピューターが送ったものを取り消す¶
人を外しても、見えるプロジェクトを絞っても、その人のコンピューターがすでに送ったものは残ります。ハブから取り除くには、 ハブで次を実行します。
interlatch hub purge ana@example.com --outside-access # Ana のコンピューターが、Ana に見えるプロジェクトの外に送ったもの
interlatch hub purge ana@example.com --project demo-app # demo-app に送ったもの
interlatch hub purge "Ana's laptop" --project demo-app # 1 台のコンピューター:名前か `interlatch hub status` の ID
プロジェクトごとにセッションを一覧にし、取り除く前に確認します(--yes で確認しません)。取り除いたものは戻りません。
要約、ナレッジ、ノート、そのコンピューターが送ったトランスクリプト、チームストアのコピーとそのセッションだけが述べていた
ナレッジ、そしてそこから作ったナレッジベースです。ナレッジベースは次の同期で残りから作り直されます。コンピューター側の
コピーは残り、同じセッションがまた送られてきてもハブは受け付けません。書き終えた週次レビューは変わりません。チームメイトの
コンピューターがすでに受け取ったナレッジは、次に受け取るまで残ります。取り消しは監査ログに残ります。ハブ自身のセッションは
取り消せません。1 件ずつなら interlatch forget <id> を使います。
監査ログ¶
誰が誰を追加、招待、ロール変更、見えるプロジェクトの変更、削除、取り消ししたか、そしてコンピューターの参加とブラウザーの サインインを、日時とともに記録します。ハブのコンピューターそのもので行ったことは this computer として記録されます。 Team › People に最近の記録が表示されます。コード、トークン、ブラウザーのセッションはハッシュでしか保存しません。
Tailscale を使わずにハブにつなぐ¶
Tailscale はハブにつなぐ方法の一つにすぎません。Tailscale を許可していない会社も多く、ハブは社内ネットワークや会社の VPN
経由でも同じように使えます。ここでは https://interlatch.example.internal でハブにつなぐとします。
- 先にアドレスを設定し、利用者を追加します。 ハブで
interlatch hub enable --url https://interlatch.example.internalを実行すると[hub] addressが設定され、参加コマンドとサインインリンクに使われます。続いて自分とチームを招待します (招待する)。利用者のいないハブのダッシュボードにはサインインがなく、ハブ自身にしか応答しません。 プロキシ経由やほかのデバイスからの人は、誰も入れません。 - 前に HTTPS を置きます。 ダッシュボードは HTTP しか話しません。コード、トークン、サインインの Cookie を平文でネットワークに
流してはいけないので、コンピューターが信頼する証明書を持つリバースプロキシ(Caddy、nginx、会社のロードバランサーなど)を
前に置きます。プロキシは元の
Hostをそのまま渡し、X-Forwarded-ForとX-Forwarded-Protoを付けます。Caddy は 既定でそうします。nginx では次のとおりです。
location / {
proxy_pass http://127.0.0.1:11524;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 0; # トランスクリプトは大きいことがある
}
- ダッシュボードがその名前に応答するようにします。 ハブの設定で次のようにします。
[server]
host = "0.0.0.0" # プロキシが別のコンピューターで動くときだけ
allowed_hosts = ["interlatch.example.internal"]
trusted_proxies = ["10.0.4.12"] # そのコンピューター。その X-Forwarded-Proto を信頼する
プロキシがハブ自身で動くときは、host = "127.0.0.1" と既定の trusted_proxies のままにし、behind_proxy = true を
加えます。プロキシを通ったリクエストは、常に管理者として扱われるハブ自身からのリクエストと見分けがつかないことがある
ためです。これを設定すると、ダッシュボードへのリクエストはどれもハブ自身からとは見なされず、管理者もほかの人と同じように
サインインするか、ハブで interlatch hub コマンドを使います。0.0.0.0 にする場合は、ファイアウォールでダッシュボードのポート(11524)には
プロキシだけが届くようにしてください。設定したら、ダッシュボードを再起動します。
Tailscale を使う場合は、interlatch tailnet on --anyone で tailnet の全員が HTTPS でハブにつなげます
(スマートフォン)。ハブに利用者がいれば、その場合もサインインが必要です。
会社のサインイン¶
会社が認証プロキシ(oauth2-proxy、Azure App Service の認証など)でサインインさせていて、サインインした人のメールアドレスを ヘッダーで渡している場合は、ハブでそれを使えます。
[server]
auth_header = "X-Forwarded-Email"
trusted_proxies = ["127.0.0.1", "::1"] # 認証プロキシの接続元
ハブがこのヘッダーを信じるのは trusted_proxies からのリクエストだけで、しかもそのメールアドレスでハブに追加された人だけです。
それ以外の人には「you're not on this hub; ask an admin to add you」と表示されます。ロールは引き続きハブで決まります。
ヘッダーはプロキシ自身が付け、ブラウザーが送ってきた同じ名前のヘッダーは捨てる必要があります。trusted_proxies に含まれる
ほかの経路(ハブ上の Tailscale Serve など)が訪問者のヘッダーをそのまま渡すと、訪問者が任意のメールアドレスを名乗れて
しまいます。auth_header は、認証プロキシが唯一の入り口のときだけ使ってください。コンピューターは会社の
サインインを使わず、引き続きコードで参加します。そのため /api/hub/ へのリクエストはサインインなしで認証プロキシを
通してください(oauth2-proxy なら --skip-auth-route)。そのトークンはハブ自身が確認します。
Linux のハブ¶
Linux では interlatch install が launchd エージェントの代わりに systemd のユーザーユニットを設定します。
interlatch-sync.timer(15 分ごとの同期)と interlatch-ui.service(ダッシュボード)です。無人で動かすハブには、
次の 2 つを一度だけ実行しておくと便利です。
loginctl enable-linger $USER # 誰もログインしていなくても動かし続ける
sudo tailscale set --operator=$USER # `interlatch tailnet on` が Tailscale Serve を設定できるようにする
デスクトップアプリは macOS 専用です。コマンドラインとダッシュボードは同じように動きます。
サーバーで動かすチームのハブは、HTTPS とチームストアを設定済みの Docker でも動かせます(Docker でハブを動かす)。
ハブを使わない方法:Syncthing¶
ハブを動かしたくない場合は、Syncthing(または rsync)でほかのコンピューターのセッションをメインの
コンピューターにコピーできます。~/.claude/projects を ~/sessions/laptop/claude/projects のようなフォルダーに、
~/.codex/sessions を ~/sessions/laptop/codex/sessions に同期し、~/sessions/laptop/claude を claude_dirs に、
~/sessions/laptop/codex を codex_dirs に加えます。Interlatch はこれを自分のセッションとして記録します。コンピューター名、
プロジェクトの対応付け、それまでの分析の引き継ぎはありません。
~/.interlatch そのものをコンピューター間で同期しないでください。使用中にコピーされた SQLite データベースは壊れることが
あります。
まだできないこと¶
- スマートフォンの Claude アプリ。 Claude のカスタムコネクターはスマートフォンからではなく Anthropic のクラウドから MCP サーバーに 接続するので、ハブの tailnet 内のアドレスには届きません。スマートフォンから Claude Code の Remote Control でハブのセッションを 操作すれば、Interlatch のツールを使えます。
- ほかのコンピューターでオフラインで読めるコピー。
- ハブに参加する Windows のコンピューター。 Interlatch は Windows 単体では動きます(Windows)が、
ハブの一部はプロジェクトのフォルダーを
/…形式のパスとして扱います。