Sessions
Every session is a real process in a real terminal. Nothing is emulated, wrapped or proxied.
The tab strip
Sessions and browser tabs share one strip in the window header. The dot is the whole point of it: at a glance, one session is mid-thought, one has finished and is sitting at its prompt, and one is blocked on a question you have not answered.
The dot reads the screen, the way you would
Agents redraw their whole screen as they work, so the last thing one printed often has nothing to do with what is showing. Guessing from the last thing printed gets the answer wrong. So the app keeps its own copy of what each session’s screen looks like right now, and reads the dot off that — the same thing you would read if you were looking at the tab.
It works for tabs you are not looking at, and it survives the agent redrawing
itself. Claude Code’s prompt is matched as the ❯ it
actually draws, across a window of lines rather than at the very end, because
the prompt is never the last line on screen.
Tabs keep their scrollback
Switching away from a session does not tear it down. The main process holds the scrollback and replays it, so coming back to a tab shows the conversation you left, not an empty screen.
You choose what a session is before it starts
The new-session dialog picks the agent, the profile it runs as, and whether it continues the last conversation in that folder. What is shown as selected is what will actually be spawned, including when it was chosen by a remembered default — the dialog resolves the decision rather than displaying a guess.
The list of agents is not four names compiled into the app. Name a command
and it runs, with the caveat drawn on its own row rather than left for you to
discover: an agent nobody here has characterised gets a terminal and not a model
picker. The command is resolved against your login shell’s
PATH before it is saved, so a name that cannot be found is refused
at the form rather than becoming a row that dies when you pick it.
The controls are in the chrome, beside the session
Model, effort, connectors and usage sit beside the account, above the session. Clicking a model changes the session that is running — and refuses, saying why, when you have something typed in the prompt, because the way a CLI is told to change model is a line typed at it and the next Return would have been yours.
It finds your CLI the way your shell does
An app you open from the Dock on macOS is given a much shorter list of
places to look for programs than your terminal is, and genuinely cannot find a
claude you installed the usual ways. So Terminal Deck asks your own
terminal, once, where it looks — and every session it starts looks in exactly
the same places.
Accounts: separate logins that cannot mix
An agent CLI keeps who-you-are inside one configuration directory, and an environment variable moves that directory. Point two sessions at two directories and they are two different logins, with separate history and separate transcripts. Pick an account per session, per project, or as your default. An account belongs to an agent, so adding one asks which.
Which agents that works for was measured against the real CLIs rather than assumed, because the variable that moves an agent’s configuration is not always the one that moves its login. Claude Code and Codex CLI both isolate, and are offered. Gemini CLI is listed and refused with the reason on the row: its token sits in one keychain slot no directory moves, so a second sign-in would overwrite the first rather than sit beside it. Your existing login is shown as an account the app will not rename, move or delete.
Every session on screen at once
⌘\ puts every running session on screen at once, in a grid — the app calls it swarm view. No cell is ever squeezed narrower than about forty characters of text: a tidy grid of unreadable slivers is worth less than one tall column you can actually read, so the layout gives up on being square before it gives up on being legible.
Split panes
⌘D puts two sessions side by side in the same window, with ⌘⌥← and ⌘⌥→ to move between panes, a draggable divider, and a button in the toolbar for anybody who would rather not learn the keys.
Settings that save as you change them
There is no OK button anywhere in Settings, and no Apply. What is on the screen is what is saved — change a switch and it is already changed. If a setting cannot be written for some reason, the bottom of the window says so, rather than quietly sliding the control back under your finger.