renga

Claude Code と Codex を含む複数のコーディングエージェントを 1 つの ワークスペースで協調させる、AI ネイティブなターミナル。 mixed-client peer messaging、MCP によるペイン オーケストレーション、日本語 / CJK 入力に対応した IME composition overlay、単一 Rust バイナリ。すでに 2 つ以上の コーディングエージェントを並列運用している開発者向けです。

単体でも使えますが、参照スタックの Layer 3 にもなります。 renga は単体で AI ネイティブなターミナルとして使える一方、 claude-org の下では Layer 3 の execution fabric として機能します。 そこでは Lead / Dispatcher / Curator / Worker の役割分担、 タスクごとのディレクトリ境界、組織全体の suspend / resume を持つ、より厳密な運用モデルを支えます。

ターミナル中央に開いた IME overlay。日本語の変換候補窓がキャレットの真下に吸着していて、背後の Claude ペインは凍結されている
画面中央にフロート表示される複数行の IME 入力ボックス (renga 独自機能)。 ホスト OS の IME 候補窓がキャレットに吸着するので、 日本語 / 中国語 / 韓国語の変換中に候補窓が Claude のカーソルに振り回されません。 Alt+Enter で送信、Enter は改行、 Esc/Ctrl+C で一旦閉じても同じドラフトを後で開き直せます。 --ime-freeze-panes を組み合わせると背後のちらつきも止まります。

renga はもともと Shin-sibainu/ccmux から派生したプロジェクトですが、現在は独立した本流として開発しています。AI エージェント向け peer network、mixed-client オーケストレーション、IME overlay、layout TOML、日英バイリンガル UX などはすべて renga 側で書き足したものです。

スタック全体をひとことで言うなら、 renga が execution fabric、claude-org がその上の reference operating system です。

$ npm install -g @suisya-systems/renga

ccmux-fork から移行する場合:

$ npm uninstall -g ccmux-fork
$ npm install -g @suisya-systems/renga

上流の ccmux-cli から移行する場合:

$ npm uninstall -g ccmux-cli
$ npm install -g @suisya-systems/renga

macOS の設定: Option をメタキーにする

macOS のターミナルは既定で Option+<キー> を Unicode 入力 (åπ など) に割り当てているため、renga の Alt+T / Alt+P / Alt+R / Alt+S / Alt+1..9 / Alt+Left/Right ショートカットが発火しません。Option をメタキー扱いに切り替え れば解決します。どのターミナルも 1 行の設定変更で済みます。 Terminal.app でも動きますが、IME / ligature / 画像プレビュー全般で下記の端末の方が快適です。

ターミナル 設定
WezTerm
~/.wezterm.lua
config.send_composed_key_when_left_alt_is_pressed = false
config.send_composed_key_when_right_alt_is_pressed = false
iTerm2 Settings → Profiles → Keys → Left Option keyRight Option keyEsc+ に設定
Alacritty
~/.config/alacritty/alacritty.toml
[window]
option_as_alt = "Both" ("OnlyLeft" / "OnlyRight" も可)
Ghostty
~/.config/ghostty/config
macos-option-as-alt = true
Kitty
~/.config/kitty/kitty.conf
macos_option_as_alt yes
Terminal.app Settings → Profiles → Keyboard → Use Option as Meta key にチェック

一部の macOS IME (ことえりの「英字」切替、日本語キー配列など) は Option を独自に使っているため、Meta 化と両立しない場合が あります。IME が壊れたら OnlyLeft / OnlyRight で片側だけ Meta にすると妥協できます。 Alt+1..9 は macOS の Mission Control / Spaces ショートカットと衝突することがあり、奪われたときは Alt+Left/Right でタブ巡回して回避してください。

renga が ccmux 由来から積み増した機能

renga は Shin-sibainu/ccmux から派生し、現在は独立プロジェクトとして進化しています。下の表は、ccmux から継承したものではなく renga 側で書き足された renga 独自機能の一覧です。両プロジェクトはバージョンごとに追従する関係ではなくなっているため、列はあくまでそれぞれの現在の方向性を示すもので、永続的な互換性を保証するものではありません。

機能 ccmux renga
同じタブに並べた Claude Code / Codex 間の mixed-client メッセージング
renga mcp install --client ... で Claude Code と Codex に MCP サーバを登録できる。Claude 側は push 型の <channel source="renga-peers"> で受け取り、Codex 側は pane-local nudge を受けて check_messages で本文を読む。peer のスコープは cwd 推定ではなく renga タブそのもの。
エージェント会話の中から MCP 経由でペイン操作 + オーケストレーション
同じ MCP 面で list_panes / spawn_pane / spawn_claude_pane / spawn_codex_pane / close_pane / focus_pane / new_tab / inspect_pane / send_keys / set_pane_identity / poll_events が使える。これによりオーケストレーター役の agent が、会話から離れずにワーカー起動、別ペイン画面の確認、対話プロンプト応答、ワーカー名付け、寿命監視まで進められる。
画面中央の複数行 IME 入力ボックス (Windows + サードパーティ製ターミナルでの日本語 / 中国語 / 韓国語入力)
Alt+Enter で送信、Enter は改行、 IME 候補窓はキャレットに吸着
IME 入力中にペインを凍結 + 周期的に追いつく
--ime-freeze-panes で背後のペインの再描画を止め、 --ime-overlay-catchup-ms で凍結中も一定間隔だけ 再描画を挟んで Claude の出力が進む様子を確認できる
ペインのライフサイクルイベント (renga events --timeout / --count)
PaneStarted / PaneExited を JSON Lines で購読できる。 heartbeat で half-close を検知、エラーコードは安定
画面のスナップショット取得とレイアウト情報
renga inspect で 1 行ずつ JSON 化したペイン画面が取れる。 renga list は各ペインの画面矩形も返すので、 外部ツールから座標ベースでマッチさせられる
最小ペインサイズを CLI で指定できる
--min-pane-width / --min-pane-height で デフォルトの 20×5 を上書き。狭い分割を前提にしたレイアウトでも ソースに手を入れずに済む
renga close サブコマンド
スクリプトからペインを終了できる。最後のタブの最後のペインは拒否するので、 誤ってセッションごと吹き飛ばす心配なし
IPC エラーコードの安定化
すべての IPC 応答にコード (PANE_NOT_FOUNDAMBIGUOUS_TARGET など) が付くので、 呼び出し側は文字列マッチに頼らずに分岐できる
alt-screen で動く TUI (Claude /tui、vim、lazygit など) へのマウスホイール転送
Windows / macOS / Linux の CI と rustfmt / clippy チェック
基本 IPC (list / send / focus / split / new-tab)
上流 PR #4 と共同開発。上流 master にはまだ入っていない
予定