Code mode & the grid
The terminal grid — layouts up to 30 panes, resizing, Duo + Preview, launch sets, Dispatch, dropping files, instant starts and what the toolbar tells you.
Code mode is where most of the work happens: a grid of real terminals, each running a coding CLI or a plain shell in your project. Every project has its own grid, and switching projects, modes or stages never stops a terminal — panes keep running in the background and their status keeps updating in the sidebar.
The toolbar
| Element | What it does |
|---|---|
| Layout | Shows the current layout (“6 Panes”). Opens the layout menu with layouts, density, text size and launch sets |
| Status summary | Counts per status — “2 waiting for you · 3 working · 1 done” — with the matching dots |
| Footprint | How many processes your panes run and how much memory they use, measured every ten seconds. Click to measure now |
| Dispatch | Send one input to several panes, or split a task list across them. See Dispatch |
| + Pane | Opens the pane picker |
Layouts
Pick a layout from the layout menu: 1, 2, 4, 6, 9, 12, 16, 20, 25 or 30 panes.
| Layout | Grid |
|---|---|
| 2 | 2 × 1 |
| 4 | 2 × 2 |
| 6 | 3 × 2 |
| 9 | 3 × 3 |
| 12 | 4 × 3 |
| 16 | 4 × 4 |
| 20 | 5 × 4 |
| 25 | 5 × 5 |
| 30 | 6 × 5 |
- When a layout gets smaller, panes move up into the remaining cells. Layouts with fewer cells than running panes are disabled — nothing is ever closed by changing the layout.
- When the grid is full and you start another pane, PaneScale switches to the next larger layout on its own.
- Layouts above six panes belong to the Terminal grid up to 30 feature in Labs, which is on by default.
Duo + Preview
Duo + Preview stacks two panes on the left and puts a live preview of your app on the right — handy for an agent and a dev server next to the page they change. Type the address of your app (for example localhost:3000) into the bar above the preview and press Enter; the reload button refreshes it. Duo holds two panes, so it is only available while at most two are open. For element picking and the console, use the full browser in the side panel.
Density and text size
The layout menu also sets the density of pane headers and padding — Comfortable, Compact or Dense — and the terminal text size from 10 to 20 px. Both apply to every pane. Settings → Appearance has the same text size.
Resize anything
Drag the seam between two columns or rows to resize them, or drag a crossing to move a column and a row at once.
- Seams snap to an even split when you get close; hold Alt while dragging to place them freely.
- Double-click a seam, or focus it and press Home, to distribute the space evenly again. Distribute evenly in the layout menu resets the whole layout.
- With a seam focused, the arrow keys move it in steps of 24 px, with Shift in steps of 4 px.
- Columns never get narrower than 160 px and rows never lower than 96 px, so a header and a few lines always stay visible.
The shape is saved per project and per layout, so your six-pane arrangement for one repository doesn’t change the one for another — and switching from 6 to 4 and back brings your 6-pane shape back.
Arrange panes
- Swap two panes by dragging one pane’s header onto another cell.
- Maximize a pane with the maximize button in its header — it fills the whole grid until you click again. The other panes keep running.
- Close a pane with × in its header or Ctrl+Shift+W. If an agent is still working, PaneScale asks first (turn that off in Settings → General). If the pane has its own worktree, you decide what happens to it — see Lanes.
Starting panes
Click + Pane or an empty cell. The picker lists installed agents with their version, terminals, and agents that aren’t installed with a button to copy their install command. For agents with account profiles you choose the account right in the list. Turn on Isolated worktree at the bottom to give the new pane its own branch — see Lanes.
You can also start panes from the command palette — type the agent’s name — with Voice (“start codex”), or with a launch set.
Launch sets
A launch set starts several panes at once, each with its own agent, account and worktree setting. PaneScale comes with three:
| Set | Panes |
|---|---|
| Claude + Terminal | Claude Code and a shell |
| Claude vs. Codex | Claude Code and Codex, each in its own worktree |
| 4 × Claude, each in a worktree | Four Claude Code sessions, four branches |
Choose Custom launch set… in the layout menu to build your own: a name, a layout and, for every pane, the agent (or a terminal), the account and whether it gets a worktree. Save keeps it in the menu, Start runs it right away. Up to 30 sets are kept; delete one with the bin icon next to it.
All panes of a set appear at once. Their CLIs start in a staggered order so the window stays responsive — see Instant start.
Instant start
Starting a coding CLI takes a few seconds — it loads, signs in, starts its MCP servers and indexes your project. PaneScale hides that wait in two ways.
Ready sessions. For the active project, PaneScale keeps fully started sessions waiting in the background: for Claude Code, Codex and your default shell, one for every free cell plus one spare. When you start a pane, a matching ready session is taken over in milliseconds — the pane shows the agent’s prompt immediately. A ready session only matches if agent, shell, folder, start options and account profile are the same.
- Waiting sessions are limited by memory: PaneScale estimates about 450 MB per Claude Code session, 150 MB per Codex session and 60 MB per shell and always keeps 4 GB free. At most three Codex and two shell sessions wait at a time.
- At most four sessions are prepared at the same time, at lower priority, so they never slow down what you are doing.
- Sessions that have waited for 30 minutes are replaced with fresh ones. After failed starts, PaneScale pauses for a minute before trying again.
- Change the start options and waiting sessions restart with the new options automatically.
Starting without a ready session. If nothing matches, the pane still appears instantly and shows Claude is starting… while the CLI boots. You can type right away — your input is collected and handed over as soon as the CLI is ready.
Staggered starts. When many panes start at once, the pane you clicked goes first, then light CLIs such as shells and Codex, then the rest. Half of your processor cores start at normal priority; the others wait at lower priority for at most four seconds. Each pane switches to ready when its CLI has drawn its first screen and gone quiet.
Status
Each pane header shows a coloured dot and a word — starting, working, waits for you, done, ready, error and a few more. The grid frame changes too: yellow when the pane waits for you, a highlight when it finished while you were elsewhere. Sessions & status explains every state and where it comes from.
Who needs you
With many panes, you don’t have to watch them all. Every session that waits for an answer, needs a permission or failed:
- gets a yellow frame in the grid and a yellow count next to its project in the sidebar,
- appears under Needs you on the dashboard — the rail icon shows how many, even with the panel closed,
- raises the badge on the bell in the title bar, and — while the window isn’t visible — a Windows notification.
Click it on the dashboard or in the sidebar and PaneScale switches to its project and focuses the pane. Saying “what needs me” to Voice opens the same list.
Tools next to the grid
Files with an editor, search across the project, a project thread, workflows and the browser open in the side panel on the right — never as an extra pane in the grid. Choose them from the rail at the far right edge of the window.
Dispatch
Dispatch sends one input to several panes. Open it with Dispatch in the toolbar or Ctrl+Shift+D: a slim composer bar appears below the grid, so no terminal is covered.
Choose the panes right in the grid. While Dispatch is open, every pane is a target — click a pane to leave it out or bring it back, Shift-click to send to that pane only. Panes you left out step back, and every target shows a small label with exactly what it will receive. The faces at the left of the bar open a list with quick picks: all panes, only the ready ones, one kind of agent, or none.
Two ways to send.
| Mode | What happens |
|---|---|
| To all | Every selected pane gets the same text. {name}, {agent}, {n} and {total} are filled in per pane — for example “You are agent {n} of {total}”. A preview shows what each pane receives. |
| Split | Every line is a task (bullets and numbers are removed). Each selected pane gets one; whenever a pane finishes, it takes the next task until the list is done. |
Never in the way. A pane that is working, starting or waiting for your answer to a question doesn’t get anything typed in between. Its input waits and is sent as soon as the pane is free — the console lists what is waiting, and Stop all drops it. Turn off Wait until free to hand prompts to running agents right away (they queue them themselves); open questions still wait.
- Open Dispatch (Ctrl+Shift+D).
- Click panes in the grid to leave them out, switch between To all and Split, and type the text — Shift+Enter starts a new line.
- In the list behind the faces, Submit with Enter decides whether the text is submitted or only typed in.
- Press Enter or click the round send button. ↑ in an empty field brings back earlier inputs, Esc closes Dispatch.
Each agent receives the text the way it expects it — pasted into Claude Code, Codex and the other CLIs, typed into shells — so slash commands work too.
Drop files onto a pane
Drag files from Explorer (or a screenshot tool) onto a pane and PaneScale pastes their paths into that terminal, quoted where needed — exactly like Windows Terminal. Claude Code and other CLIs recognize image paths and attach the image. Drop onto the chat composer instead and the files become attachments.
Search, copy and clear
From the pane menu (⋯ in the header):
| Action | What it does |
|---|---|
| Rename (F2) | Give the session your own name — see names |
| Search output (Ctrl+Shift+F) | Find text in the scrollback; Enter / Shift+Enter jump between matches, Esc closes |
| Copy selection | Copies the selected text; Ctrl+C does the same while text is selected |
| Clear output | Clears the visible scrollback |
| Hand off to another agent… | Starts another agent with a brief built from this session — see Handoff |
| Restart | Restarts the CLI in the same cell, keeping the name |
| Finish worktree… | For panes with their own worktree — see Lanes |
| Stop and close | Ends the process tree and closes the pane |
Footprint and performance
Expensive work — Git, file scans, process lists, CLI discovery — runs in the background. All terminal output travels through a single channel and is drawn once per frame, no matter how many panes are busy.
- The focused terminal and terminals with a lot of output (more than 32 KB per second) draw on the GPU via WebGL; quiet panes use the lighter DOM renderer, so many panes stay cheap. Turn GPU rendering off in Settings → General if your graphics driver misbehaves.
- Pane headers, the sidebar and the dashboard only redraw what actually changed.
- The footprint in the toolbar counts only the panes you see — ready sessions waiting in the background are not included.