基本編 — グリッドで今できること


グリッドは「エージェントのボード」

グリッドビューは、複数の AI コーディングエージェント(Claude Code / Codex)を並行して監督する ための画面です。バイブコーディング(vibe coding)を 1 体で回している間は端末 1 枚で足りますが、 並列エージェントにした瞬間に必要になるのがこの画面です。各セルは独立した 1 体の エージェント(または端末)。1 つが考えている間に別のセルを進め、呼ばれたセルだけ拾う——入力・許可待ちは 琥珀色、ターン完了(レビュー待ち)は緑のリングで光ります。全部を見張らずに、1 人で多数を回すのが狙いです。

グリッドがアプリそのものです。 http://localhost:34567/ を開くとここに来て(URL は /terminals に 落ち着きます)、切り替える先の画面はもうありません。1 体に集中したいときはそのセルを拡大します。 拡大したセルはウィンドウを占有し、その横に GUI パネル(Canvas) が開きます — そのエージェントの ツール呼び出しが、文字出力ではなく図・フォーム・画像・書類・スライドとして描画される場所です。

拡大した 1 体と、その横の GUI パネル

4.0.0 での変更。 3.x までは /chat に独自ツールバーを持つ単一ビューがありましたが、廃止 されました。持っていたものはすべてグリッドにあり、/chat は他の未知の URL と同じくグリッドに 着地します。→ 4.0.0 セットアップガイド

上部ツールバーは 1 列で、区切り線の左が「どのビューにいるか」、右が「その中で何をするか」です。

グループ ボタン
ビュー切り替え(区切り線の左) GridCollections — 居場所はこの 2 つ
Collections の中にいるとき FeedsWikiAccountingFiles が現れます
グリッドにいるとき Pull requestsWorklogNew terminal・並び順・状態カウント
常時 サウンド・ロスター / フィルムストリップ・Settings

全画面のオーバーレイ(Collections・Wiki・PRs・Accounting・Files)は、閉じると開いた場所のビューに戻ります

エージェント/シェルを起動する(ランチャフォーム)

グリッドの空きセルには ランチャフォームが出ます。ここで「何を」「どこで」動かすか選びます。

空きセルのランチャフォーム

部分 役割
Agent PickerClaude / Codex / Antigravity / Grok / Muse / Shell このセルで動かすものを選ぶ。エージェントか、Shell(OS 標準シェル $SHELL。インストールも設定も不要)。実際のエージェントセッションを起動するのはこのコントロールで、下の launch commands はユーザーが書いたコマンドをそのまま実行する。各エージェントに何が必要か・どう再開するか・GUI ツールにどう到達するかは → どの coding agent を使うか
WORKING DIRECTORY 作業ディレクトリを入力(再生ボタンで起動)。よく使うディレクトリは cwd presetsチップをクリックして入力(チップの再生ボタンで即起動)。チップは起動したディレクトリから自動で記録されますが、worktree は対象外です(1 タスク 1 ブランチの使い捨てで、またそこで起動する場所ではないため)。チップ列の先頭には WORKSPACE が常にあります(→ どのディレクトリで起動するか
モデル選択(Claude 選択時) このセッションだけのバックエンド/モデルを選ぶ(→ プロバイダ
Canvas / Workspace data / External accounts のトグル(エージェント選択時) GUI ツール群(render / data / media / external)の MCP サーバを、このセッションではなくディレクトリに登録。Claude / Codex を選んでいるときは、ワークスペースを選んでいる間は出ません(そこは登録なしで全部使えるため)。Antigravity / Grok を選んでいるときはワークスペースでも出たままです — この 2 つはどこで動いてもこの登録だけが GUI ツールの入手経路だからです(→ Antigravity と Grok はどこでも登録が要る
OR ISOLATE IN A WORKTREE git リポなら、タスク名を入れて New worktree。作業を隔離した worktree を作って起動。既存の worktree はその下に一覧表示
OR RESUME HERE そのディレクトリに既にある会話のうち、Agent Picker で選んでいるエージェントのもの。クリックすると続きから再開。Claude 以外のときは見出しがエージェント名を含みます(or resume a codex conversation here
OR LAUNCH 設定済みの起動コマンドcodex / htop / 任意)を永続端末として起動

1 つの worktree に 1 セッション。 worktree はブランチに紐づくので、多重起動しません。行に何も 出ていなければ最初の 1 つを起動、resume なら続きを再開、in use は別のターミナルで開かれていて クリックできません。→ worktree で作業を隔離する

OR RESUME HERE も同じで、● open のセッションはどこかで表示中なので開けません — ここで開くと 向こうが切断されるからです。「どこか」にはブラウザの別タブや、このマシンで動いている 2 つ目の mulmoterminal も含みます。

● running は「生きているが誰も開いていない」という意味です。セッションはサーバの再起動を またいで生き残るので、再起動のたびにこれが残ります。行はいつもどおり再開できますし、横の stop ボタンでそのセッションだけを終了できます — 会話は消えません(transcript は残るので、 同じ行から後で再開できます)。失われるのはそのとき動いていた作業だけで、だから確認を挟みます。 ● open の行に stop ボタンは出ません(そちらは開いているターミナル側で閉じてください)。

一覧は選んでいるエージェントのものです。 履歴の置き場所はエージェントごとに違い(Claude は ~/.claude/projects、Codex は ~/.codex/sessions、Grok は ~/.grok/sessions、Antigravity は自身の brain ディレクトリ)、その続きを再開できるのは書いた本人だけです。だから Agent Picker を切り替えると 一覧も入れ替わり、会話は必ず始めたエージェントで再開されます。注意点が 2 つ。Shell では一覧が出ません (再開するものがないため)。そして Antigravity の一覧は MulmoTerminal が起動した 会話しか出せません — agy は会話とディレクトリの対応を記録しないので、ディレクトリは MulmoTerminal 自身のログから取っており、 Antigravity IDE で始めた会話はここには出てきません。

ディレクトリを変えると、これらの一覧はその場で消えます。WORKING DIRECTORY の下にあるもの (OR RESUME HERE、worktree の行、OR RUN A SCRIPT)は、そのとき欄に入っていたディレクトリに 対して読んだ結果です。別のディレクトリを入力したりチップで選んだりした瞬間に一覧はクリアされ、新しい 一覧が届くまで Loading this directory's sessions, worktrees and scripts… の 1 行に置き換わります。 残したままにすると、それは前のディレクトリの行が新しいディレクトリの名前の下に並んでいる状態で、 クリックすればそこに書かれているとおりのセッションが再開されてしまいます。

Shell も、作業ディレクトリと再生ボタンはエージェントと同じものを使います。シェルにはモデル・ MCP 登録・worktree がないので、選んでいる間はその 3 つの欄が消えます。開くセルはエージェント セッションではなく、永続端末(実行中/終了)です。

Shell を選んだ同じフォーム — 残るのは作業ディレクトリだけ

どのディレクトリで起動するか — ワークスペースとプロジェクト

WORKING DIRECTORY に何を入れるかで、そのセルが持つ GUI ツールが変わります。 基準になるのはワークスペース — サーバの既定の作業ディレクトリ(CLAUDE_CWD)です。 決まり方は --cwd > 環境変数 CLAUDE_CWD > npx mulmoterminal を実行したディレクトリ の順です。 今どこなのか分からなくなったら、起動時に出る Workspace: … が答えです。 Collections・Wiki・Accounting が読み書きするのは、どのセルにいても常にここです(拡大したセルの横に開く Files ペインだけは、そのセルのディレクトリを見ます)。

セルの作業ディレクトリ Claude / Codex Antigravity / Grok
ワークスペースと同じ GUI ツールを全部持ちます。登録は要りません 特例はありません。そのディレクトリに登録されているツールグループだけです
プロジェクトのディレクトリ そのディレクトリに登録されているツールグループだけです。GUI ツールが要るなら MCP トグルで登録します 同じ

Claude のセッションは、どちらのディレクトリでも自分の MCP 設定を読みます.mcp.jsonclaude mcp add・claude.ai のコネクタ)。4.4.0 より前はワークスペースのセルだけがそれを読めていませんでした(→ 4.4.0 セットアップガイド)。 設定の MCP serversuserMcpServers)が合流するのは、ワークスペースで起動した Claude のセッションだけです。プロジェクトディレクトリのセルには合流しませんし、Codex にも合流しません(Codex が受け取るのは MulmoTerminal の GUI ツールのほうで、Codex 自身の MCP 設定は ~/.codex 側の話になります)。

3.x までの単一ビューでしていたことを続けるなら、ワークスペースで起動します。 単一ビューはこのディレクトリで動いていたので、ここに起動した Claude / Codex のセルは同じものを持ちます。 Canvas に描かせる、コレクションを触らせる、といった操作がトグルなしで通ります。 Claude でも Codex でも同じです。Agent Picker でどちらかを選び、ワークスペースで起動してください(→ 4.3.0 セットアップガイド)。 起動コマンド(launch command)はこれには当たりません。 書いたコマンドが claude であっても、起動コマンドは逐語的に実行されるだけなので、そのプログラムが動いているターミナルであって GUI ツールは付きません。エージェントのセッションを始めるのは Agent Picker です。

MulmoClaude と併用しているなら、ワークスペースは MulmoClaude と同じディレクトリにします。 既定は ~/mulmoclaude で、MulmoClaude を clone したディレクトリではありません。 両者がデータを共有している置き場のほうです。 そこを既定にするには、そのディレクトリで npx mulmoterminal を実行するか、--cwd ~/mulmoclaude を渡します(決まるのはサーバの起動時なので、変えるなら起動し直します)。 プリセットスキルと help の配置も、既定の作業ディレクトリがこのワークスペースのときだけ行われます。 → 環境変数CLAUDE_CWD / MULMOCLAUDE_WORKSPACE_PATH

ワークスペースはチップ 1 つで選べます。 ランチャのチップ列の先頭には、最近使ったディレクトリとは別枠で WORKSPACE チップが常に出ています(ディレクトリ名ではなく役割名で、専用アイコン付き)。 再生ボタンでそのまま起動、チップ本体を押せば WORKING DIRECTORY に入るだけです。 Claude / Codex を選んだ状態でワークスペースを選んでいる間は MCP トグルが消え、代わりに GUI TOOLS — All of them, automatically と出ます。登録するものが無いからです。Antigravity / Grok を選ぶとトグルは戻ります(ワークスペースでも)。次項を参照してください。

ランチャのチップ列 — 先頭がワークスペース

プロジェクトのディレクトリで GUI ツールが要るときは、MCP トグルで登録します。 どのトグルが何をもたらすかは、Canvasrender / media)が拡大したセルの横のパネル、Workspace datadata)がコレクションと帳簿、External accountsexternal)が Google や X などの外部アカウントです。 トグルはセッションではなくディレクトリへの登録なので、効くのは次にそこで起動するセッションからです。 動いているセッションに後から載ることはありません。

Antigravity と Grok はどこでも登録が要る — ワークスペースでも

Antigravity と Grok にこの特例はありません。 ワークスペースで起動しても、GUI ツールは そのディレクトリに登録されているぶんだけです。つまり、何も登録していないワークスペースで動かした agy / grok セッションは GUI ツールを 1 つも持ちません。一方、以前 Canvas を入れたプロジェクト では同じセッションが使えます。これが分かりにくさの正体です — 「全部使えるはずの」ワークスペースでだけ presentDocument が無く、プロジェクトでは動く、という形で出ます。

理由は仕様上の構造で、不具合ではありません。Claude / Codex は起動時にセッション単位の MCP 設定を 渡されます(--mcp-config-c mcp_servers.…)。だからワークスペースでは全部渡してしまえます。 残る 2 つにはその口がなく、どちらも作業ディレクトリのファイルから MCP サーバを読みます。agy.agents/mcp_config.json で、これはそのディレクトリのトグルから MulmoTerminal が書き出しています (→ 2.8.0 セットアップガイド)。grok.grok/config.toml で、こちらは grok 自身の grok mcp add -s project 経由なので、ファイルの他の記述はそのまま残ります。ディレクトリに 1 つの ファイルは特定のセッションにだけ渡す、ということができないので、「ワークスペースにいる」ことで 変えられるものが無いのです。

Antigravity / Grok のセッションに GUI ツールを持たせる手順(ワークスペースでも、それ以外でも同じ):

  1. 空きセルのランチャで、Agent Picker の Antigravity または Grok を選びます。
  2. WORKING DIRECTORY にディレクトリを入れます(ワークスペースなら WORKSPACE チップ)。
  3. Canvas / Workspace data / External accounts のトグルはそのまま出ています — Claude / Codex の ときのように消えません。必要なものを ON にします。presentDocumentpresentChartpresentHtmlpresentForm を持ってくるのは Canvasrender)です。
  4. セッションを起動し直します。 トグルはディレクトリへの登録なので、既に動いているセッションには 届きません。開いているセッションは起動時に渡されたものを持ち続けます。

外から確かめるなら、<そのディレクトリ>/.agents/mcp_config.json(Antigravity)または <そのディレクトリ>/.grok/config.toml(Grok)に mulmoterminal-render サーバが入っているかを見ます。 セッション内でのツール名は mcp__mulmoterminal-render__presentDocument です。どちらも常にグループごとの サーバ id を使い、ワークスペースの Claude セッションが見る mt id にはなりません。

セルの読み方 — 「どこで何をしているか」

起動したセルのヘッダーは 2 段。ここに、そのエージェントの状態・位置・作業内容が集約されます。

起動したセル(2段ヘッダー)

図はレイアウトを示す例です。各セルには通常 Claude / Codex のセッションが入り、ヘッダーにそのエージェントの状態・モデル・作業内容が出ます(図の中身は端末の例)。

  • 1 段目(見比べるもの):状態ドット・プロジェクトバッジ・git チップ(⎇ ブランチ ●変更数)・ モデル/コンテキスト量・そのエージェントが今やっていること・自分で書けるメモ・並べ替え/拡大/退避/閉じる。
  • 2 段目(読むもの・操作)ディレクトリのパス(クリックでメニュー —— Reveal in the file managerBrowse files in the app(このターミナルの隣に出るファイルペイン。 タイル表示なら先にセルを拡大します)・New terminal here・リポジトリの Repository / Issues / Pull requests)・RunSkillsInsert a file path(既定ボタン。 設定で置き換え可)・Activity timeline(時計)=ツール呼び出し履歴。 接続状態は接続中・失敗時だけここに出ます。

ファイルツリーの行を右クリックすると、そのファイルのパスをターミナルのカーソル位置に 挿入できます —— Insert relative path / Insert absolute path。行の上で Shift+F10 でも同じものが 開きます(項目間は矢印キー)。ディレクトリでも使えます。相対パスの項目は、ツリーとターミナルが 同じディレクトリにあるときだけ出ます(そのときだけ両端で同じ意味になるため)。

状態は色で分かります。 青みがかった枠=作業中(考え中)、琥珀色=入力・許可待ち(Needs input)、 緑のリング+グロー=ターン完了・レビュー待ち(Done — review。サムネイルのドットもロスターの行も同じ緑)、通常=アイドル。 通知音も鳴るので、画面を見張らなくても「呼ばれた」と分かります。これがグリッドの肝です。

たくさん並べる・ページ・並べ替え

  • セルは起動パネルから追加します。ツールバーの はワークスペースで、各ターミナルのヘッダーにある はそのターミナルの作業ディレクトリで開きます。セルは起動した時点で現れます。 1 ページ 9 セルまで、あふれると次のページ(タブ)へ。
  • 並び順ボタンは3つのモードを切り替えます — auto(注目度順:呼んでいるセルが上に浮く)、manual(各セルの移動ボタンで自分で並べる)、priority(各プロジェクトが .mulmoterminal.jsonorderPriority で宣言した順。設定)。

並行するエージェント

1 体に寄る(コックピット・ロスター)

セルの Expand(拡大)でそのエージェントを大きく表示すると、横にコックピット・ロスター—— 全セッションを 1 行ずつ並べたテキスト一覧——が出ます(既定)。各行には、ディレクトリ・AI 要約・ 直近のプロンプト・最新の返答・状態語(running / planning / done / idle …)、さらにブランチの PR フェーズ(draft / CI fail / changes / ready / merged …)のバッジ。行クリックで拡大対象を 切り替え、⋮ メニューで並べ替えもできます。拡大したまま、残り全員の「何をして、どこまで進んだか」が 文字で追える——多数を回すときの主戦場です。

コックピット・ロスター — 左に全セッションのサマリー一覧、右に拡大した 1 体

右上の Show list roster / Show thumbnail strip ボタンで、ロスターとフィルムストリップ(サムネイル列。ヘッダー余白クリックで切替)を 行き来できます。Restore でグリッドへ戻ります。

拡大(フィルムストリップ表示)

拡大するターミナルをキーボードで切り替える

拡大対象を次/前のターミナルへ移すキーを割り当てられます。ロスターの行をクリックするのと同じ操作を キーボードから行うもので、マウスに持ち替えずに盤面を一周できます。辿る順序は画面上の並び順なので、 ロスターの現在のソート(注目順を含む)にそのまま従います。

既定では何も割り当てられていません。 割り当てたキーは、その分ターミナル内のプログラムに届かなくなります。 このトレードオフはユーザ自身が決めるべきものなので、~/.mulmoterminal/config.jsonkeymap を書いて はじめて有効になります。keymap が無ければ機能ごと無効です。

{
  "keymap": {
    "zoom-next": "PageDown",
    "zoom-prev": "PageUp"
  }
}

記法・割り当てられるアクション一覧・そもそも割り当て不可能な組み合わせは 設定 → キーボードショートカットへ。

挙動として押さえておく点が2つあります。

  • 拡大中のみ有効です。 通常のグリッド表示では何も起きません。拡大していないグリッドには「今どのターミナルか」 という状態が無く、拡大中のセルそのものが選択状態だからです。
  • 端では止まります(巻き戻りません)。ターミナルが2つだけだと押下の約半分が無反応になります。先頭での 「前へ」と末尾での「次へ」は、仕様として何も起きません。

Restore で拡大を解除すると、元々拡大を始めたページではなく、直前まで見ていたターミナルのあるページに戻ります。

割り当てたキーはターミナル内のプログラムから奪われます。 PageDown を割り当てると、拡大中このキーは lessvim、Claude Code 自身のページ送りには届きません。修飾キーは完全一致で判定するので、修飾なしの キーを割り当てた場合 Shift+Page Up / Shift+Page Down は奪われません——ターミナルのスクロールバックは そちらで遡れます。IME 変換中は常に素通しするので、変換候補を Page Down でめくる操作はこれまでどおり動きます。

Mac のラップトップキーボードには独立した Page Up / Page Down がないため、Fn+ / Fn+ を使ってください。

Claude・Codex・Antigravity・Grok を混在

同じグリッドで、セルごとに ClaudeCodexAntigravityagy)・Grok を起動できます。端末だけ欲しいときは Shell も選べます。エージェントはどれも同じ端末体験・永続化・GUI パネル・可視化の仕組みを共有。得意分野で 使い分けたり、同じタスクを複数に投げて見比べたりできます。

Antigravity は agyPATH に載っている必要があります。バイナリ・モデル・会話の置き場所は ANTIGRAVITY_BIN / ANTIGRAVITY_MODEL / ANTIGRAVITY_HOME で変えられます。1 点だけ仕組みが違い、GUI パネルの 登録はディレクトリ単位.agents/mcp_config.jsongit status には出しません)でセッション単位ではありま せん。agy がプロジェクト単位で読むファイルがこれ 1 つだけだからです。

Grok は grokPATH に載っている必要があります。バイナリ・モデル・セッションの置き場所は GROK_BIN / GROK_MODEL / GROK_HOME で変えられます。GUI パネルの登録はやはりディレクトリ単位で .grok/config.toml に書きますが、書き込みは grok 自身の grok mcp add -s project に任せるので、その ファイルに書いた他の内容はそのまま残ります。再開の仕組みは他の 2 つより Claude 寄りで、セッション ID を MulmoTerminal が先に決めるため、リロードしても探しものなしで同じ会話に戻ります。


次へ:応用編 — シナリオ別の使い方


This site uses Just the Docs, a documentation theme for Jekyll.