AI エージェント連携
Calyx には、複数の CLI AI エージェント(Claude Code、Codex CLI、OpenCode、Hermes、Grok、pi)を統合するための MCP サーバーが組み込まれています。 タブやペインをまたいだエージェント同士の通信、LSP のシンボル解析、Calyx 自体を操作するコックピットツール、ターミナルのコマンドログの四つを提供します。
AI Agent IPC
Section titled “AI Agent IPC”異なるタブ・ペインで動いている AI エージェントが、お互いにメッセージをやり取りできます。
有効化の手順
Section titled “有効化の手順”- コマンドパレット (
Cmd+Shift+P) で Enable AI Agent IPC を実行 - 二つ以上のターミナルペインでエージェントを起動(Claude Code / Codex / OpenCode / Hermes / Grok / pi のいずれか)
- 各インスタンスは自動的にピアとして登録され、メッセージの送受信が可能になる
設定ファイルは、インストールされているエージェントに応じて自動的に書き込まれます。
| エージェント | 設定ファイル |
|---|---|
| Claude Code | ~/.claude.json |
| Codex CLI | ~/.codex/config.toml |
| OpenCode | ~/.config/opencode/opencode.json、AGENTS.md |
| Hermes | ~/.hermes/config.yaml |
| Grok | ~/.grok/config.toml、~/.grok/hooks/calyx.json |
| pi | ~/.pi/agent/extensions/calyx.ts |
設定の書き込み後、すでに起動しているエージェントは再起動して新しい MCP サーバーを読み込ませてください。
あとから別の対応エージェントをインストールしたときは、Reconfigure AI Agent IPC を実行してください。 すでに動いているサーバーに対してそのエージェントの設定とフックを書き込むため、接続済みのエージェントはそのまま動き続けます。 Enable AI Agent IPC がコマンドパレットに出るのは、サーバーが止まっているあいだだけです。 サーバーが動いているあいだは、代わりに Reconfigure AI Agent IPC と Disable AI Agent IPC が並びます。
pi は、対応するエージェントのなかで唯一、MCP クライアントの設定ファイルを持ちません。
そのため Calyx は、pi が起動時に読み込む TypeScript の拡張を一つ書き込むことで連携します。
この一ファイルが連携のすべてを担います。
サイドバーの行、承認のゲート、そして下記の MCP ツールへ中継する calyx ツール({"tool": "list"} を渡すと一覧を返します)です。
Calyx の外で起動した pi や、herdr のペインの中で起動した pi は、何も登録しません。
Calyx を更新したあと
Section titled “Calyx を更新したあと”Calyx を更新したら、Enable AI Agent IPC を実行し直してください。 Calyx が起動時に自動で修復するのはフックのスクリプトだけで、上記のファイルに書かれる MCP サーバーの定義はこのコマンドでしか更新されません。 更新によってその定義の中身が変わることがあります。 とくに Hermes は、この再実行が必要です。 Calyx がどのペインで動いているかを知る経路は MCP 接続だけで、その接続が運ぶヘッダーがないと Hermes は匿名のままになり、サイドバーに行が出ません。
再実行しても、利用者自身が管理している設定は保たれます。 Calyx は、自分が書いたのではないフックの定義を管理ブロックの外へ退避させてから書き換えます。 書き換える必要がなければ、ファイルには一切触れません。
利用可能な MCP ツール
Section titled “利用可能な MCP ツール”register_peerlist_peerssend_messagebroadcastreceive_messages— 返却したメッセージを受信箱から自動的に削除するため、同じメッセージが二度届くことはありませんget_peer_status
デモ動画 で動作を確認できます。
コマンドパレットで Disable AI Agent IPC を実行します。
エージェントサイドバー
Section titled “エージェントサイドバー”サイドバーの Agents タブには、現在のウィンドウで動いている AI エージェントとそのステータスが一覧で並びます。
各行はそのエージェントが動いているペインの名前で表示され、三行の構成になっています。
- ペインのタイトル
- 作業ディレクトリ(末尾の一階層だけを表示)
- エージェントの種別(「Claude Code」「Grok」など)
Calyx が解決できなかった項目は N/A と表示されます。
リポジトリ名ではなくペインの名前を使うのは、同じチェックアウトで複数のエージェントを動かしても区別できるようにするためです。
名前とあわせて、各行に次の情報が表示されます。
- ステータスドット。赤 (ユーザー入力待ち)、黄 (処理中)、緑 (待機)、青 (完了) の四色。
- 未読メッセージバッジ。エージェントの新しい出力をユーザーがまだ確認していないときに出ます。
- 最終確認時刻。
行をクリックすると、そのエージェントが動いているペインにフォーカスが移ります。
対応するのは Claude Code、Codex CLI、OpenCode、Hermes、Grok、pi の六つです。 コマンドパレットで Enable AI Agent IPC を実行してからペインでエージェントを起動すれば、自動的にサイドバーに並びます。
サブエージェントの行
Section titled “サブエージェントの行”サブエージェントを動かしているエージェントは、その子をペインの行の下に並べます。 子を持つペインの行には、右端に子の数を示すバッジと、その隣に開閉用のシェブロンが出ます。 サブエージェントを報告しないエージェントのペインの行は、これまでと変わりません。
子の行は最初は畳まれています。 シェブロンをクリックすると開きます。 シェブロンは行の本体とは別のクリック領域なので、開いてもペインにフォーカスは移りません。 開閉の状態はサイドバーを開いているあいだだけ保たれ、サイドバーを閉じるか Calyx を起動し直すと畳まれた状態に戻ります。
子の行は親の行の下に字下げして並び、親と同じ四色のステータスドット、サブエージェントの種別、実行中のツール名、最後に報告があった時刻を持ちます。 ライフサイクルだけを報告する CLI では、種別とツール名の行は代替文字で埋めずに省かれるため、その行はドットと時刻だけになります。 子の行をクリックすると、親のペインにフォーカスが移ります。 サブエージェント自身はペインを持たないためです。
ツールの行には、ツール名と、その呼び出しが何を対象にしているかが並びます。
たとえば Bash: git status --short のように表示されます。
CLI が報告した引数をそのまま読み取り、シェルのツールならコマンド、読み書きならパス、取得なら URL、それ以外は key: value の組を並べます。
連続する空白は 1 つにまとめられるため、ヒアドキュメントも 1 行として読めます。
長い行は 500 文字で打ち切られます。
サイドバーを狭めると行は末尾から削られ、ツール名とコマンドの先頭が残ります。
右側の経過時間は幅を保ちます。
行にカーソルを合わせると、ツールチップで全体を読めます。
要約する内容のないツールは、名前だけが表示されます。
| エージェント | 子の行 | 実行中のツール |
|---|---|---|
| Claude Code | 表示する | 表示する |
| Grok | 表示する | 表示する |
| Codex | 表示する | 表示しない |
| OpenCode | 表示する | 表示しない |
| Hermes、pi、herdr のペイン | 表示しない | 表示しない |
子の行は、CLI がそのサブエージェントを報告しているあいだだけ存在します。 サブエージェントが終了したとき、親のセッションが終わったとき、ペインが閉じたときに消えます。 Calyx 自身は履歴を持たないため、CLI が報告をやめたあとに行が残ることはありません。
エージェントの CLI がフックの設定を読むのは、セッションの開始時の一度だけです。 そのため子の行が出るのは、Calyx がフックを書き込んだあとに開始したセッションで、すでに動いているセッションには出ません。
行が完了に変わるとき
Section titled “行が完了に変わるとき”行が青(完了)に変わるのは、そのエージェントのセッションが終わったときです。 対応 CLI の多くは、自分でセッションの終了を報告します。 報告しない CLI や、強制終了やクラッシュで消えたエージェントについては、ペインのシェルがプロンプトに戻った時点で Calyx が行を完了にします。
このフォールバックには二つの経路があります。 一つは Ghostty 自身のコマンド終了通知で、bash、elvish、nushell を含むすべてのシェルで働き、設定は要りません。 もう一つは Calyx のシェル統合で、Track shell commands が有効なあいだ zsh と fish で働きます。 こちらはそのペインに残っている承認待ちのリクエストもあわせて期限切れにするため、承認バナーが元のプロセスより長く残ることはありません。
Ctrl-Z で中断したコマンドでは、行は完了になりません。
herdr のエージェント
Section titled “herdr のエージェント”herdr 自身のペインで動いているエージェントも、ここに表示されます。 サブタイトルに「via herdr」と付き、ネイティブな行と区別できます。 ネイティブな行に必要な設定は要りません。 Enable AI Agent IPC の実行も、設定ファイルの書き込みも不要です。 herdr 自身のステータスストリームから直接読み取るため、herdr がインストールされて動いていれば自動的に表示されます。
Calyx は herdr の起動を定期的に問い合わせるのではなく、監視して検知します。
そのため、どちらを先に起動しても構いません。
Calyx を前面にしてサイドバーを開いたまま herdr を起動しても、行はそのまま埋まります。
Calyx の起動後に herdr をインストールしたり PATH に通したりした場合も、起動し直す必要はありません。
同じソケットのパスで herdr のサーバーが再起動した場合は、別のセッションとして認識し、接続し直します。
herdr のソケットが現れてから数秒のあいだ、Calyx は何度か接続を試します。 ファイルがあるだけでは、サーバーが待ち受けを始めたことにならないためです。 待ち受けの開始がこれより遅いサーバーは、そのディレクトリで別の変更が起きるまで検知されません。
すでに Calyx のタブとして開いている herdr の行は、ほかの行と同じようにクリックでそのペインにフォーカスできます。 まだ Calyx で開いていない herdr のペインの行には、フォーカスする先がありません。 そのため、ホバーしても反応しないただの文字列として表示されます。 先に Session Browserからそのワークスペースを開いてください。
herdr がシェルのペインを残したままエージェント CLI だけが終了した場合、その行は最後の状態のままにならず、完了(青)に変わります。
AI Agent IPC がオフのときも herdr の行は表示され続けます。 その下に、Calyx 自身のエージェントが監視されていない旨の注記が付きます。
永続セッションでのエージェント再開
Section titled “永続セッションでのエージェント再開”永続セッションを有効にしている場合、再接続時にそのセッションで動いていたエージェント CLI の会話再開を提案できます。 設定項目は永続セッションを参照してください。
コックピットツール
Section titled “コックピットツール”同じ MCP サーバーを通じて、エージェントが Calyx 自体を操作できます。
次の三つのツールは確認なしで即座に実行されます。
pane_list— 現在のウィンドウのターミナルペインを一覧するpane_split— ペインを右または下に分割するtab_create— 新しいタブを開く(グループと作業ディレクトリを指定可能)
次の三つはターミナルへの入力やアプリ操作を伴うため、呼び出しごとに利用者の承認が必要です。
pane_run— ペインでコマンドを実行するpane_send_keys— ペインへキー入力を送るpalette_execute— コマンドパレットの項目を実行する
承認が必要なツールが呼ばれると、ウィンドウ上部にツール名と対象ペインを示すバナーが表示されます。
Allow と Deny はその一件だけに適用され、判断は記憶されません。
Always Allow はウィンドウ内で保留中のリクエストをすべて許可し、以後の呼び出しの自動承認も有効にします。
拒否されたリクエストはエージェントに {"status": "denied"} を返し、55 秒以内に応答がなかったリクエストは {"status": "approval_timeout"} を返します。
どちらもエラーではなく通常の結果として返ります。
自動承認は Settings の Agents ペインにある Auto-approve agent commands でも切り替えられます。 標準ではオフのため、承認が必要なツールは毎回確認を求めます。
エージェントのツール実行承認
Section titled “エージェントのツール実行承認”複数のペインでエージェントを並列に動かすと、許可プロンプトが各ペインに散らばり、どこが承認待ちなのか分からなくなります。 この機能を有効にすると、対応するエージェントはツールを実行する前に許可要求を Calyx へ送り、コックピットツールと同じバナーで一括して判断できます。
どの呼び出しがバナーに出るかは、エージェントによって異なります。
- Claude Code と Codex: その CLI が本来ユーザーに尋ねていた呼び出しだけです。Plan モードでの読み取りや、すでに許可リストに入れたツールなど、CLI 自身の許可機構で決着する呼び出しにはバナーが出ません。
- Grok: 常時承認モード(
bypassPermissions)のときだけです。それ以外のモードでは Grok が自分のペインで確認するため、同じことを二度尋ねられることはありません。 - pi: すべてのツール呼び出しが対象です。pi は自前の許可プロンプトを持たないため、このバナーが唯一のゲートになります。この機能をオフにすると、pi のツール呼び出しは確認なしで実行されます。
- OpenCode と Hermes: 対象外です。従来どおり自分のペインで確認します。
- コマンドパレットから Enable AI Agent IPC を実行します(Calyx を更新した後は、承認用フックを配置し直すため再実行してください)。
- Settings の Agents ペインで Show agent tool prompts in the approval banner をオンにします(標準ではオフです)。
- 起動中のエージェント CLI を再起動します。
バナーの操作
Section titled “バナーの操作”バナーにはエージェントとツール名(例: Claude Code · Bash)、対象ペイン、実行内容の一行要約が表示されます。 Allow と Deny はその一件だけに適用されます。 Always Allow <ツール名> in This Pane は、そのペインの同じツールだけを以後自動許可します。 右端のメニューには、保留中の全リクエストを一括許可する Allow All Pending と、全ペインの同じツールを自動許可する Always Allow <ツール名> in All Panes があります。 Always Allow の記憶は IPC セッション限りで、ペインを閉じるかサーバーを停止すると消えます。
要求が 2 件以上たまると、アクションボタンの左隣に前後の矢印と「1 / 2」のような位置表示が現れます。
矢印でキューの中身を見比べて、任意の要求から順不同で Allow / Deny できます。
位置表示をクリックすると、そのウィンドウで保留中の要求が古い順に一覧で並びます。
各行は 3. Claude Code · Bash: npm test のように表示され、いま表示している要求には ▸ が付きます。
行を選ぶとその要求へ直接移動するので、目的の 1 件にたどり着くために矢印で送り続ける必要がありません。
表示中の要求を処理すると、残っている要求のうち最も近いものへ自動で進みます。
コックピットツールの要求も同じキューに並びます。
要求が 1 件だけのときは矢印ごと消えて、従来と同じ表示に戻ります。
新しい要求ごとに macOS 通知が届きます。 通知内の要約はトークンやパスワードをマスクして表示しますが、バナー本体は承認対象を正確に判断できるよう原文のまま表示します。
フォールバック
Section titled “フォールバック”障害時に自動許可されることはありません。 Calyx に接続できない場合や、約 10 分以内に応答しなかった場合、その要求は期限切れになります。 そのあとどうなるかはエージェントによって異なります。 Claude Code と Codex は自身のペイン内プロンプトに切り戻るため、判断はそちらに戻ってきます。 常時承認モードの Grok と pi には切り戻す先のプロンプトがないため、期限切れの要求は拒否されます。 エージェント側でツール実行をキャンセルすると、対応するバナーは即座に消えます。
ターミナルコマンドログ
Section titled “ターミナルコマンドログ”各ターミナルで実行したコマンドの記録(コマンド行、終了ステータス、キャプチャした出力)を、エージェントから参照できます。 エージェントは画面の読み取りに頼らずに、ビルドの出力を確認したり長時間のコマンドの完了を待ったりできます。
terminal_list_commands— ペインの記録済みコマンドを古い順に一覧するterminal_read_output— 特定のコマンドのキャプチャ済み出力を取得するterminal_await_command— 実行中のコマンドの完了を待つ(タイムアウトは標準 30 秒、最大 55 秒。タイムアウト時は{"status": "timeout"}が返り、再度呼び出せば待機を続けられる)
コマンドログはシェル統合によって記録され、現在対応しているのは zsh と fish だけです。 Settings の Agents ペインで Track shell commands がオンの間、Calyx がシェル統合を自動的にインストールします。 このトグルは標準でオンで、オンにしたあとに開いたターミナルにだけ適用されます。
保存される内容
Section titled “保存される内容”記録はメモリ上にだけ保持されます。
ペインごとに最大 200 件のコマンドと、256 KB までの出力を保持します。
ディスクには書き込まれず、Calyx を終了するとログは破棄されます。
全画面 TUI(代替スクリーン)で実行されたコマンドや、出力をキャプチャできなかったコマンドは、output_unavailable: true として報告されます。
コマンド行とキャプチャした出力は、保存前に既知のシークレットのパターン(API トークン、パスワード、Authorization ヘッダー、クラウドプロバイダーのキー、JWT)と照合され、一致した箇所は [redacted] に置き換えられます。
この処理は自動的に実行され、無効化はできません。
大きな出力の redaction はバックグラウンドで行われるため、ターミナルが処理待ちでブロックされることはありません。
処理が完了するまでの間、コマンドは実行中として報告されます。
terminal_read_output は出力の代わりに {"output_pending": true} を返すので(しばらくしてから再度呼び出します)、terminal_list_commands は redaction が終わるまで終了コードと実行時間を伏せます。
LSP Proxy MCP
Section titled “LSP Proxy MCP”AI Agent IPC と同じ MCP サーバー上に、言語サーバー(LSP)の機能を公開します。
エージェントは grep の代わりに、シンボルを理解した結果を取得できます。
提供されるツール
Section titled “提供されるツール”lsp_hover— シンボル上のホバー情報lsp_definition— 定義へジャンプlsp_references— 参照箇所の列挙lsp_rename— シンボルのリネームlsp_diagnostics— 診断(エラー・警告)の取得
ほかにも複数のツールが提供されます。
セットアップ
Section titled “セットアップ”- コマンドパレットで Enable AI Agent IPC を実行(同じ MCP サーバーを共有するため)
- AI エージェントを再起動するか、
calyx-ipcMCP サーバーを再接続 - (任意)Settings の LSP ペインから、不足している言語サーバーの自動インストールを有効化
Calyx は言語サーバーをバックグラウンドで常駐させ、ディスク上のファイル変更を取り込みつつ、最初の lsp_* 呼び出し時に該当ワークスペース向けの言語サーバーを立ち上げます。
対応する言語サーバー
Section titled “対応する言語サーバー”TypeScript、Python、Rust、Go、Swift などをサポートします。 個別の言語の自動インストール対応状況は Settings の LSP ペインで確認できます。
