Skip to main content
The left sidebar is tty7’s tab bar, and it is the default because a vertical row has room for things a horizontal chip does not: the repository a tab belongs to, the branch it is on, how much has changed there, and what a coding agent in it is doing. ⌘ B shows and hides it. Drag its right edge to resize.
The tty7 tab sidebar

Placeholder — screenshot: the sidebar with two repo groups, agent avatars and status dots, branch and +N −M counts

Grouped by repository

Rows sit under a header per git repository, with everything else collected in a trailing Scratch section. The grouping follows the tab’s working directory, not its history — switching branches or cd-ing around inside a repository never moves a row out from under its header. Settings → Window & Tabs → Sidebar grouping switches between By repo (the default), By repo or folder, and Flat. The default collects every non-repo tab in Scratch; By repo or folder groups those tabs under their working directory instead — for agents running in plain folders — leaving Scratch to tabs whose shell has not reported a directory yet.

What a row tells you

Who is running there

A brand avatar when a coding agent is in the tab, plus a status dot — blue for working, amber for needs-your-input, green for done.

Where it is

The pane’s git branch, refreshed on cd and whenever a command finishes.

What changed

The working-tree diff as +N −M. Click the counts to open the diff overlay.

Whether you have looked

An unread marker on tabs where a coding agent finished its turn while you were elsewhere. Agent tabs also carry Mark as Unread in the right-click menu, once there is a finished turn to mark.
If you would rather the counts not be clickable, turn off Settings → Window & Tabs → Open diff preview from sidebar counts. The branch and the numbers stay; they simply stop opening the overlay.

Rearranging

Drag a row to reorder it within its group, or drag a whole group header to move the group. A row cannot be dragged into a different group: a tab’s group comes from its working directory, so cd is what moves it. Drag a row out over the panes instead and it stops being a session of its own: it lands as a pane of the tab on screen, wherever the highlight says. Dragging a pane the other way — by its grip, onto the sidebar — gives it a row of its own, between whichever two the caret lands between. See making one tab a pane of another.

Naming

Almost no tab has a name of its own, so the sidebar falls back:
  1. a name you set (right-click → Rename Tab…)
  2. the title the shell is reporting — the running command, usually
  3. Shell 3, numbered by position, when there is no title at all
tty7 tab ls answers the same question with more evidence, because a script has no screen to look at. Its label falls back through the name, then the coding agent running in the tab (“Claude Code”), then the last segment of the working directory, then the foreground process — while name stays literal, so a script can tell a real name from a stand-in.

The switcher

⌘ ⇧ O opens the workspace switcher: every workspace on every machine you are connected to on the left, that workspace’s tabs on the right. Type to filter both, to cross into the tab column, to open. From here you can also rename a workspace, open one in a new window, stop one, or connect to a machine you have a profile for.