Reference
Keys and mouse
Every key binding in the TUI, grouped by where it applies. Press ? in conch to see them all; the prefix ctrl+b can be changed with [keys] prefix in config.toml.
Tree
| Key | Action |
|---|---|
↑↓ jk | move |
←→ hl | fold |
space | toggle |
enter | open pane / view changes |
/ | filter (/ ! keeps only the agents waiting for you) |
! | next agent waiting for you |
Q | review queue: what needs a decision, across every machine (v checks a row, o opens the check's output, f sends a failed check or CI run to the branch's agent, R hands a reviewer's report to it, C continues an agent stopped at its plan limit once it resets, x dismisses a row or takes a scheduled one off the schedule) |
B | broadcast a message to the agents and terminals of the selection |
f | files: browse the selected project's checkout, or a branch's worktree |
o | open PR |
b $ | on a branch: the git window — any git command, the everyday ones behind tab, and messages for the agent working there |
T | on a branch, or an agent working in one: move its worktree to another machine or a new sandbox, agents and all; on a project: move the whole project. The status bar shows T move wherever it does something |
y | copy |
m | menu |
? | all keys: ↑↓ jk pgup pgdn g G and the wheel scroll the list, ←→ hl (or shift+wheel) pan across long lines, any other key or a click closes it |
q | detach |
Create
| Key | Action |
|---|---|
t | task: a branch and worktree in a git project; on a machine, or a folder that isn't a repository, an agent with the prompt right there |
c | default agent here |
A | start or install any agent |
n | terminal here |
H | ssh to a host from this computer, with extra ssh options if you need them; asks whether to save the host (default no) |
e | on a saved ssh host or an ssh session: edit its host, name, folder and ssh options |
K | on a saved ssh host or an ssh session: set up login without a password — copies your public key to the host (makes ~/.ssh/id_ed25519 first if you have no key) |
a | on a folder of SSH: add a saved host to it, without connecting |
P | pair a phone with this computer: a QR code and a one-time code for conch web, for a phone that may type into terminals too; in it v / r / f give a new code for view, reply or full, y copies the link and c the code (or click them), s starts conch web when it isn't running. 🌐 in the status bar opens it too |
a | add project |
M | add a machine: Over ssh…, or New sandbox… and a provider (sandboxes) |
r | rename an agent, terminal or machine |
x | close / remove (a branch: its worktree, or the branch itself once that is gone) |
R | refresh git and PRs, or reconnect a machine |
Other keys on tree items:
| Key | Action |
|---|---|
i | agent setup for a project, branch or pane. In it: s gives the other agents this one's setup (one setup, every agent), u undoes that, S installs or removes conch's own skill for the agent whose tab is open, c copies missing local files, f edits the patterns |
F | new worktrees of a project: its setup command and local file patterns |
L | open a checkout's preview ($CONCH_PORT) in the browser |
W | clean up a project's worktrees |
S | summarise an agent |
C | install Claude Code on a machine |
: | ask the brain |
, | settings |
v / s / O | open the selected item in a split right / below / a new tab |
Pane
| Key | Action |
|---|---|
| any key | goes to the program |
ctrl+b [ | scroll history |
ctrl+b then any key | back to the tree |
ctrl+b z | zoom |
ctrl+b r | redraw the pane |
ctrl+b u | open a link the pane printed: put back together across the lines and the box it was wrapped in, opened in the browser and copied |
ctrl+b b | back to where the split was before the last jump; again returns |
ctrl+b ! | next waiting |
ctrl+b M | alert when the pane goes quiet after printing, like tmux's monitor-silence; again to stop |
ctrl+b A | alert when the pane prints while you are elsewhere, like tmux's monitor-activity; again to stop |
ctrl+b d | detach |
ctrl+b ? | all keys |
Changes
| Key | Action |
|---|---|
↑↓ | file |
enter | diff |
space | mark a file for the next commit — a click in the ✓ column does the same (in a diff, the hunk under ▸) |
n N | next, previous hunk in a diff |
s | in a diff, side by side or unified (wide terminals start side by side) |
a | in a diff, comment on the hunk under ▸ (✎) |
S | send the branch's comments to its agent |
e | open the file in $EDITOR at the hunk under ▸, in a pane of its own |
F | in a diff, follow what just changed |
R | re-read the branch, or the open diff |
ctrl+b C | the branch this split is on, in a tab of its own |
c | commit the marked files, or every change |
P | push — when the remote is ahead, conch offers to take its commits and put this branch's on top |
p | open a pull request |
M | merge into the base |
D | discard the branch and its worktree |
A | compare the attempts at this task |
T | move the worktree to another machine or a new sandbox, agents and all |
o | open PR |
y | copy path / diff |
esc | back |
Sessions
| Key | Action |
|---|---|
enter | resume the session, or show its pane when it is open |
/ | search titles and conversations (enter keeps, esc clears) |
s | share the conversation with another agent, new or running, here or on another machine |
Y | open the conversation to scroll, select and copy from |
d | delete the session (after confirming) |
a | filter by agent |
R | reload |
I | resume all interrupted runs |
x | dismiss an interrupted run |
Files
| Key | Action |
|---|---|
↑↓ jk, pgup pgdn, g G | move |
enter l → | open a folder, or show a file (below 100 columns the preview takes the split; esc goes back) |
h ← | fold the folder, or go up to the one it is in |
/ | find by name in what has been loaded (enter keeps, esc clears) |
a | type the file's path into the agent working in this checkout |
y | copy the file's path |
d | the file's diff, in its branch's changes |
e | open it in $EDITOR in a new terminal, on its machine |
. / i | hide dotfiles (they are shown) / show files git ignores. Both are remembered |
w | the project's next checkout: the main one, then each worktree |
r | read the checkout again |
U | on a machine elsewhere: copy a file or folder from this computer into the selected folder there (or the one the selected file is in). Dropping files on the view does the same |
D | on a machine elsewhere: copy the selected file or folder to ~/Downloads here |
- backspace / ~ | under a machine's own Files: up a folder / back to its home |
esc q | back to the tree |
Click a line to select it and again to open it; the wheel moves the selection, or scrolls the preview under the pointer; click a folder in the path above the list to go back up to it.
Splits and tabs
| Keys | |
|---|---|
ctrl+b % or v / ctrl+b " or - | split right / down (beside a terminal or agent, the new split starts a shell in its folder; otherwise it waits for you to open something) |
ctrl+b ←→↑↓, o, ; | move focus between splits: by direction, to the next, to the last one focused |
ctrl+b { / } | swap the split with the previous / next |
ctrl+b q | show split numbers; press a number while they show to focus that split |
ctrl+b space | next layout: even-horizontal, even-vertical, main-horizontal, main-vertical, tiled (ctrl+b alt+1–alt+5 pick one) |
ctrl+b ctrl+arrow / alt+arrow | resize by 1 / 5 cells; press the arrow again within half a second to keep resizing |
ctrl+b x | close the split; an agent or terminal in it ends, after you confirm |
ctrl+b c, n, p, 0-9, l | new tab with a terminal in it, next, previous, go to, last tab (among the tabs listed for the tree selection) |
ctrl+b < / >, . | move the tab left / right, or to a position you type (among the tabs listed) |
ctrl+b w | pick any tab or split, grouped by project and CLI, with each split's branch or folder and agent state |
ctrl+b &, , | close, rename tab |
ctrl+b N, ( / ), $, X | new workspace, previous / next workspace, rename it, close it (its projects, hosts and tabs move to workspace 1; it asks whether its agents and terminals move too or end) — also the +, numbers and × beside conch at the top of the sidebar |
ctrl+b =, z | equalize splits, zoom |
ctrl+b r | draw the selected pane's screen again, when a program left stale text behind (a partial redraw after the pane changed size). conch clears its copy of the screen — without keeping the stale one in the scrollback — and tells the program its size changed, so nothing is typed into it; a program that doesn't repaint (a plain shell) shows its prompt again on the next keypress. Also in the pane menu, and conch redraw ID from a shell. |
ctrl+b S | type into every agent and terminal in the tab at once, like tmux's synchronize-panes; their borders turn amber and the status bar shows SYNC. Press it again to stop. |
ctrl+b d | detach (agents keep running) |
ctrl+b !, : | jump to the next agent waiting for you, ask the brain |
v / s / O in the tree | open the selected item in a split right / below / a new tab |
These follow tmux's default bindings; ctrl+b 1 is the first tab and 0 the tenth. ctrl+b ! jumps to the next agent waiting for you instead of breaking a pane out.
Scroll mode
ctrl+b [ (or ctrl+b pgup) enters scroll mode with a cursor.
| Key | Action |
|---|---|
↑↓←→ / hjkl | move the cursor (scrolling at the edges) |
0 / $ | line start / end |
pgup / pgdn | page |
g | oldest line |
/ / ? | search up (back through the history) / down; enter finds, esc cancels, enter alone repeats the last search |
n / N | next match the same way / the other way; a search that reaches an end goes on from the other |
v or space | start a selection |
y or enter | copy the selection |
| any other key | return to live |
Git panel
| Key | In the git panel |
|---|---|
enter | run what is typed: git's arguments (a leading git is optional), or a message for the agent |
↑↓ | earlier commands |
tab | show the everyday actions in place of the output; each has its own key, the arrows move and enter runs one; tab or esc goes back |
ctrl+t | send to the next agent on the branch instead, then to git again |
pgup pgdn | scroll the output (the wheel too) |
esc | close |
Mouse
- Click to select; click a selected folder (or its arrow) to fold. A click on a branch shows its changes;
bor$opens the git window over them. - Double-click to open.
- With
[ui] hoveron (Settings → Theme), the row or tab under the pointer is tinted before you click it, a link in a pane is underlined while alt or ctrl is held, and in Ghostty or kitty the pointer becomes a hand over it. It asks the terminal to report every pointer move rather than only drags — a message per cell crossed — so it is off until asked for, and a program in a pane still receives only the mouse it asked for. - Right-click for a context menu. On an agent's pane it holds Prompt…, which sends that agent its next message and tells you when the work it started ends (see Agents working together).
- A row's menu also holds Actions… when you have configured any: your own commands from
config.toml, run in that row's checkout on that row's machine. See[[actions]]. - Wheel to scroll; over a pane, the wheel scrolls back through its history.
- Drag the sidebar's edge to resize, or a border between splits.
- A pane with history keeps a bar on its right edge: how far back the screen is, and how much there is. Drag it to go there directly, rather than turning the wheel through a long conversation. Borders shared with another split still resize — the outer edge is the one that scrolls.
- Drag a row into a folder of its own section, or back out onto the section itself to leave it. The row under the pointer is marked while you hold; a folder of another section does not take it, since a pane listed under Terminals belongs in a Terminals folder.
- With the tree grouped by tab, drag an agent or terminal row in the tree onto a tab's section to put it in that tab — the same move, reached from the tree. A pane that was in another tab leaves it, and that tab closes if it was the last split in it; one that was in no tab is opened there. The section under the pointer is marked while you hold; let go anywhere else and nothing moves.
- Drag a split by its title onto a tab in the bar to move it into that tab: it leaves the split it was in, which closes as closing a split does, and the tab it was dropped on is the one shown afterwards. A tab that held nothing else goes with it. Dropped on the
+it goes to a tab of its own, beside the one it left — conch has no "break this split out" key, sincectrl+b !jumps to the next agent waiting. The tab or+under the pointer is marked while you hold. Let go on the space between tabs and nothing moves; nor does the+take the only split of a tab, which is already a tab of its own. - Drag a split by its title onto another split to swap the two — the layout stays as it is, so the halves keep the sizes you gave them, and each view keeps what it was holding (a diff its scroll, a file explorer its folder). While you hold, the split being carried is marked and so is the one it would land on; after you let go, both stay marked for a moment, since two panes full of text swapping is otherwise hard to see happen.
- Drag a tab along the bar to reorder it — the bar reorders under the pointer as you go, and letting go anywhere keeps it (
ctrl+b < >andctrl+b .do the same from the keyboard). - Drag across a pane or a page (a diff, a file, a list) to select and copy; double-click copies a word in a pane, triple-click the whole line (without the blanks it is padded to). A line too long for the pane is several rows on screen but one line when copied: conch joins the rows it wrapped over, so a command pasted into a shell runs as one command. Dragging past the top or bottom edge, or turning the wheel mid-drag, scrolls and keeps selecting.
- Drop files on a remote machine's pane to upload them there and paste their paths there.
- alt+click (option+click) or ctrl+click a link an agent printed to open it in the browser; it is copied as well. A plain click never opens a link: it selects, or belongs to the program when it asked for the mouse. A link wrapped over several rows opens whole.
ctrl+b ustill lists every link on the screen, which is the way to reach one that has scrolled away. - Click
⚑ N waiting · N doneto jump to the next agent that needs you. - Click the plan chip (
Claude 5h 42% · 7d 18%) for a window with all of it, at the bottom right beside the chip: every agent that has reported on every machine, and every window it named — the five-hour, the week, a weekly allowance for one model, a spend limit — each with a bar that fills as it opens, the percentage, when it resets (both how long and at what time), when the agent last said so, and what conch itself has seen that machine spend — which counts whole conversations, as each agent counts them, with the prompt, cache-read, cache-write and output tokens kept apart. That is not the same as the agent's own usage panel, which counts the run it is on: a conversation days old reads as hundreds of dollars here and a few in a panel opened a minute ago, and both are right. Click it again or pressescto close.
Clicks inside a pane go to programs that use the mouse. Hold shift (option in iTerm2) to select text with your terminal, or set [ui] mouse = false.