Skip to main content

Keyboard and the palette

The app is meant to be driven without the pointer. Everything the pointer can reach is in the palette, the terminals themselves are one digit away, and if you ever can't remember a binding, ⌘⇧/ puts the whole list on screen — this was gated on discoverability more than on any missing chord.

The palette — ⌘K

An empty palette leads with the ↵ again ghost, the terminal you last jumped to, one key away. Behind it are the verbs that act across every terminal at once — close all the idle ones, tell every idle agent to continue, accept every waiting prompt, walk the triage queue, collect recent errors into the scratchpad.

Spawning answers here too, the whole of it:

  • a plain terminal, or any model in your agent roster;
  • your own saved terminals, and the same again in a fresh worktree;
  • the project's saved commands, and its scheduled jobs on demand;

  • the terminals it remembers closing, reopened by name with how long ago they went.

The git chips are verbs as well — push and pull appear only when the counters have something to move, wearing ↑3 / ↓2 as their subtitle. The rest is the quieter chrome, finally findable: rename and close, open in your editor, reveal, copy path, view on GitHub, favorite, hide, settings, arming remote control, terminal text size.

Start typing and the terminals join in, fuzzy-ranked against the verbs: jump rows wearing their live status dot, and projects to open. Lead with > to browse the verbs alone. The catalogue is longer than the rows it shows, on purpose — an empty palette offers the primary set and the long tail waits for a needle, because a list you scan should be the handful you would have reached for.

Searching inside terminals

Three or more characters and the palette also matches what is inside your terminals — every session whose buffer or scrollback contains the text, literal and case-insensitive, joins the results as a Found in … row with its freshest matching line as the subtitle. This is the “which one printed that error” case. Name and verb matches keep the top of the list, with a few slots reserved so a page of name matches can never crowd the content hits out. Buffers are snapshotted once when the palette opens, so the search costs nothing per keystroke.

Inside one terminal

Find — ⌘F

⌘K says which session said it; ⌘F says where. A small bar floats over the terminal in front of you, searching live as you type with the match scrolled into view, ↵ and ⇧↵ stepping through, and an honest “3 of 14” beside the field. Esc hands the keyboard straight back to the shell, and the query is remembered for the next ⌘F.

Jump to prompt — ⌘↑ / ⌘↓

Walk the terminal command by command. Every prompt records where it landed, and the jump puts the previous or next one at the top of the viewport — the head of a long build's output in one press instead of fifty wheel turns. ⌘↓ past the last prompt lands back on the live bottom.

Quick run — ⌘P

The git pull you would otherwise open a whole terminal for while an agent holds the one you're in. Type one command and it runs in a live panel floated over the corner, in the selected terminal's exact directory, worktree and all. The panel never takes focus and the selection never moves. It runs as a one-shot, so a clean finish ends with a real exit code and the panel folds itself away after a readable beat; a failure leaves a live prompt sitting in its own output, ready to click into and keep as an ordinary terminal. Fire a second before the first has folded and they stack up the edge rather than stealing each other's spot. ⌘⇧M is the persistent sibling — see the monitor dock.

Switching terminals

⌘1⌘9 land on a terminal by its place in the menu. Those places move — attention gravity keeps re-sorting the menu — so hold ⌘ on its own for a second and each terminal's digit is drawn on its row, and on the panes on screen. The mapping is read rather than remembered, which is what makes a moving number survivable: you never have to have guessed it. A chord is not a hold, so a second modifier, any keystroke, or ⌘-tabbing away takes the numbers straight back down, and ⌘K never flashes them.

Past nine, ⌘⇧] and ⌘⇧[ step through the whole menu, wrapping at both ends.

Every binding

KeyDoes
⌘1–⌘9Go to a terminal by its place in the menu (hold ⌘ to see the numbers)
⌘⇧] / ⌘⇧[Next / previous terminal
⌘↩Answer the terminal in front of you
⌘⇧ATurbo — let this agent's prompts answer themselves
⌘JTriage the next terminal that needs you
⌘TNew terminal in the current project — the type you last picked from +
⌘⇧TThe same, as a general terminal with no project
⌘N / ⌘⇧NThe plain pair — just a shell, in the project or outside one
⌘KCommand palette
⌘PQuick run
⌘⇧MMonitor — a persistent, docked ⌘P
⌘DSplit a second terminal beside the current one
⌘]Move the keyboard between split panes
⌘⇧WCollapse the split
⌘FFind in this terminal
⌘↑ / ⌘↓Jump to the previous / next prompt
⇧PageUp / ⇧PageDownA page of scrollback
⌘⇧↑ / ⌘⇧↓

The top / bottom of the scrollback (⌘Home / ⌘End also work)

⌘⇧CCopy the last command's output
⌘⇧K

Clear this terminal — screen and scrollback, since ⌘K is the palette here

⌘LFilter the project menu
⌘⇧OAdd a project
⌘W

Close the focused terminal — falls through to closing the window when nothing is selected

⌘/Toggle the scratchpad beside the terminal
⌘= / ⌘- / ⌘0

Terminal text size — the app's own size is a separate dial in Settings ▸ Appearance

⌘⇧P

Ports — what's listening, and the processes that outlived their terminal

⌘⇧/The whole list, on screen
⌘,Settings
⌘QQuit — with a warning while anything is still running