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 を持つ、より厳密な運用モデルを支えます。
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 key と Right Option key を Esc+ に設定 |
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_FOUND、AMBIGUOUS_TARGET など) が付くので、
呼び出し側は文字列マッチに頼らずに分岐できる
|
— | ✓ |
alt-screen で動く TUI (Claude /tui、vim、lazygit など) へのマウスホイール転送 |
— | ✓ |
| Windows / macOS / Linux の CI と rustfmt / clippy チェック | — | ✓ |
基本 IPC (list / send / focus / split / new-tab)
上流 PR #4 と共同開発。上流 master にはまだ入っていない
|
予定 | ✓ |