---
title: Claude Code を複数同時に動かす
nav_title: 基本
layout: default
parent: 日本語
nav_order: 2
description: グリッドで複数の AI コーディングエージェント（Claude Code / Codex）を並列に動かす基本。バイブコーディング（vibe coding）をターミナルで回すときの、セルの読み方・状態の色・コックピットロスター。
---

# 基本編 — グリッドで今できること
{: .no_toc }

- TOC
{:toc}

---

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

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

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

![拡大した 1 体と、その横の GUI パネル](../images/zoom-canvas.png)

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

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

| グループ | ボタン |
|---|---|
| **ビュー切り替え**（区切り線の左） | **Grid** と **Collections** — 居場所はこの 2 つ |
| Collections の中にいるとき | **Feeds**・**Wiki**・**Accounting**・**Files** が現れます |
| グリッドにいるとき | **Pull requests**・**Worklog**・**New terminal**・並び順・状態カウント |
| 常時 | サウンド・ロスター / フィルムストリップ・**Settings** |

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

## エージェント／シェルを起動する（ランチャフォーム）

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

![空きセルのランチャフォーム](../images/grid-launch-form.png)

| 部分 | 役割 |
|---|---|
| **Agent Picker**（**Claude / Codex / Antigravity / Grok / Muse / Shell**） | このセルで動かすものを選ぶ。**エージェント**か、**Shell**（OS 標準シェル `$SHELL`。インストールも設定も不要）。実際のエージェントセッションを起動するのはこのコントロールで、下の **launch commands** はユーザーが書いたコマンドをそのまま実行する。各エージェントに何が必要か・どう再開するか・GUI ツールにどう到達するかは → [どの coding agent を使うか](agents.html) |
| **WORKING DIRECTORY** | 作業ディレクトリを入力（再生ボタンで起動）。よく使うディレクトリは *cwd presets* の**チップ**をクリックして入力（チップの再生ボタンで即起動）。チップは起動したディレクトリから自動で記録されますが、worktree は対象外です（1 タスク 1 ブランチの使い捨てで、またそこで起動する場所ではないため）。チップ列の先頭には **WORKSPACE** が常にあります（→ [どのディレクトリで起動するか](#launch-dir)） |
| **モデル選択**（Claude 選択時） | このセッションだけのバックエンド／モデルを選ぶ（→ [プロバイダ](providers.html)） |
| **Canvas / Workspace data / External accounts** のトグル（エージェント選択時） | GUI ツール群（`render` / `data` / `media` / `external`）の MCP サーバを、**このセッションではなくディレクトリに**登録。**Claude / Codex** を選んでいるときは、**ワークスペースを選んでいる間は出ません**（そこは登録なしで全部使えるため）。**Antigravity / Grok** を選んでいるときはワークスペースでも出たままです — この 2 つはどこで動いてもこの登録だけが GUI ツールの入手経路だからです（→ [Antigravity と Grok はどこでも登録が要る](#antigravity-gui-tools)） |
| **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 で作業を隔離する](worktree.html#one-session)

**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 を選んだ同じフォーム — 残るのは作業ディレクトリだけ](../images/grid-launch-form-shell.png)

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

**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.json`・`claude mcp add`・claude.ai のコネクタ）。4.4.0 より前はワークスペースのセルだけがそれを読めていませんでした（→ [4.4.0 セットアップガイド](v4.4.0.html)）。
設定の [MCP servers](config.html#settings-modal)（`userMcpServers`）が合流するのは、**ワークスペースで起動した Claude のセッションだけ**です。プロジェクトディレクトリのセルには合流しませんし、Codex にも合流しません（Codex が受け取るのは MulmoTerminal の GUI ツールのほうで、Codex 自身の MCP 設定は `~/.codex` 側の話になります）。

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

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

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

![ランチャのチップ列 — 先頭がワークスペース](../images/v4.3.1-workspace-chip.png)

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

### Antigravity と Grok はどこでも登録が要る — ワークスペースでも {#antigravity-gui-tools}

**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 セットアップガイド](v2.8.0.html)）。`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 にします。`presentDocument`・`presentChart`・
   `presentHtml`・`presentForm` を持ってくるのは **Canvas**（`render`）です。
4. **セッションを起動し直します。** トグルは*ディレクトリ*への登録なので、既に動いているセッションには
   届きません。開いているセッションは起動時に渡されたものを持ち続けます。

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

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

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

![起動したセル（2段ヘッダー）](../images/grid-one-cell.png)

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

- **1 段目（見比べるもの）**：状態ドット・プロジェクトバッジ・git チップ（`⎇ ブランチ ●変更数`）・
  **モデル/コンテキスト量**・そのエージェントが**今やっていること**・自分で書けるメモ・並べ替え/拡大/退避/閉じる。
- **2 段目（読むもの・操作）**：**ディレクトリのパス**（クリックでメニュー ——
  *Reveal in the file manager*・*Browse files in the app*・*New terminal here*・リポジトリの
  *Repository / Issues / Pull requests*）・**Run**・**Skills**・**Insert a file path**（既定ボタン。
  [設定で置き換え可](config.html#header)）・**Activity timeline**（時計）＝ツール呼び出し履歴。
  接続状態は接続中・失敗時だけここに出ます。

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

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

- ツールバーの **New terminal** でセルを追加。1 ページ **9 セル**まで、あふれると次のページ（タブ）へ。
- 並び順ボタンは3つのモードを切り替えます — **auto**（注目度順：呼んでいるセルが上に浮く）、**manual**（各セルの移動ボタンで自分で並べる）、**priority**（各プロジェクトが `.mulmoterminal.json` の `orderPriority` で宣言した順。[設定](config.html#order-priority)）。

![並行するエージェント](../images/grid-2x2.png)

## 1 体に寄る（コックピット・ロスター）

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

![コックピット・ロスター — 左に全セッションのサマリー一覧、右に拡大した 1 体](../images/cockpit-roster.png)

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

![拡大（フィルムストリップ表示）](../images/grid-zoom.png)

### 拡大するターミナルをキーボードで切り替える {#keyboard-zoom-switch}

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

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

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

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

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

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

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

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

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

## Claude・Codex・Antigravity・Grok を混在 {#claude-and-codex}

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

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

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

---

次へ：[応用編 — シナリオ別の使い方](scenarios.html)
