ClaudeTTY

A Mac terminal for running as much Claude Code as you'll ever need.

Download for Mac macOS 26 or later, Apple Silicon.
Free, and the source is on GitHub.
ClaudeTTY over a sunset, blurring it, with Claude editing a file in one tab

Why. I let Claude write the code and only step in now and then. You don't really need file trees or editors for that, so I took them out.

Before this. I used cmux, but it crashed a lot and updates killed everything. ClaudeTTY keeps the layout I liked, groups in a sidebar and tabs in the titlebar, without the bloat.

looks

Thinking

See what every Claude is doing. Each tab's dots move for what its Claude is doing, or switch to Clawd and he acts it out. Waiting on you turns amber.

These are the app's own frames, dumped from Marks.swift and played at 60 fps. In the app the dots hold for a quarter second, so quick file reads don't strobe.
weatherdocs: Edit README.md~/code/weather

Tabs sleep. 20 minutes after a Claude's last message its process exits and the memory comes back. Click the tab and it picks up the same conversation.

A sleeping Claude's prompt cache runs out after an hour and Clawd turns icy cyan, since the next message costs more. View > Keep Asleep Tabs Warm pings it at 49 minutes instead.
The app is killed and reopened with every tab still running

inside

ClaudeTTYrunning
weatherzmx
sitezmx
apizmx
noteszmx

Tabs live outside the app. Each one is a zmx session, its own process holding a shell and its Claude. The app only attaches to them, so quitting, crashing or updating it never touches what's running.

Ghostty underneath. Every pane is GhosttyKit, built from pinned, patched Ghostty source. zmx runs the same terminal core, so a tab looks the same after the app reattaches.

About 7,000 lines in three files. ClaudeTTY.swift, Marks.swift and Surface.swift. Small enough to read in an afternoon, or to have Claude change for you.

numbers

Memory with one idle tab, on my M4 Pro:

ClaudeTTY
68 MB
Ghostty
84 MB
herdr
109 MB in Ghostty
Superset
359 MB
Wave
556 MB
Warp
895 MB
cmux
1,029 MB 15×
307 mslaunch to first window
0.03%idle CPU
20 MBthe whole app
140-180 MB15 tabs, idle ones asleep
ClaudeTTYcmuxherdr The app quits or crashes

Every tab keeps running

Reopens your layout, what was running is gone (unless you use tmux)

Closing the terminal is fine; a server restart ends every tab

What each Claude is doing

8 live marks, amber when it needs you

A ring when one needs you

Working, blocked or idle

Claude steering tabs

ct, taught in ~75 tokens

CLI and socket

CLI and socket

herdr 0.9.5 runs inside your terminal, so its memory is herdr plus Ghostty (herdr alone is 25 MB). Restart behavior from the herdr docs and the cmux README. Median of 5 launches, one window with one tab. How I measured and the rest of the table is in the README.

ct

ClaudeTTY installs a Claude Code plugin and a ct command, so the Claude in one tab can open, watch and steer the others.

ct list                          # every tab, its group, folder and Claude state
ct web dev bun run dev           # open tab "dev" in group "web", running a command
ct split dev right agent claude  # a new pane beside it with Claude in it
ct wait agent idle               # block until that Claude is done
zmx send agent "run the tests"   # type into it

Don't even look at this, it's for your Claude. ClaudeTTY teaches it to Claude automatically in ~75 tokens.

install

Download ClaudeTTY.dmg, open it and drag ClaudeTTY to Applications. It updates itself after that.

On your phone or tablet, just use the Claude app. It's pretty good.