tterm is keyboard-first, but with one hard rule: only ⌘-chords are ever intercepted.
ctrl, escape, and every plain key belong to the terminal — your TUIs, your shell, your Claude sessions see them untouched.
Everything below lives in one hot-reloaded keybindings.json; unbound actions are a ⌘K away.
A tab is a project — or a browser page.
| ⌘T | New tab opens a shell in the current project |
| ⌘⇧W | Close tab |
| ⌘⇧T | Reopen closed tab panes respawn, layout intact |
| ⌘1…⌘9 | Jump to tab 1–9 |
Real PTYs in a recursive split tree — rendered flat, so it stays fast.
| ⌘D / ⌘⇧D | Split right / split down |
| ⌘⇧C | New Claude Code pane launches claude --dangerously-skip-permissions |
| ⌘W | Close pane |
| ⌘⇧⏎ | Zoom pane one pane fills the window; press again to restore |
| ⌘⌥←→↑↓ | Move focus between panes |
| ⌘K palette | Restart pane respawn a dead or wedged pty in place |
| ⌘K palette | Clear terminal |
| ⌘= / ⌘− / ⌘0 | Zoom in / out / reset terminal font or browser page — whichever is focused |
| ⌘K palette | Save / load a pane layout |
| ⌘K palette | Send a test notification check that macOS alerts from tterm fire when a run needs you |
tterm launches straight into the project picker — pick a repo, get a row: explorer, Claude, viewer.
| ⌘K | Command palette every action, fuzzy-searched, frecency-sorted |
| ⌘O | Open project ⏎ stacks it as a row · ⌘⏎ opens a tab · clone a repo from the top of the list |
| ⌘P | Quick-open a file ⇥ widens scope to every open project |
| ⌘⇧F | Search in files git grep, includes untracked |
| ⌘E | Toggle file tree |
| ⌘F | Find in the focused terminal, browser page, or file |
| ⌘⇧M | Open the project's CLAUDE.md |
| ⌘K palette | Select theme · open keybindings.json |
A Claude that lives in the sidebar and can act, and it rebuilds tterm from the inside.
| ⌘⇧J | Toggle the workspace assistant it sees your project, terminals, diffs, and open browser, and does the work: edits files, runs commands, drives the browser |
| ⌘⇧E | Improve tterm click any part of tterm's own UI; the component is scoped to its source and handed to the assistant. Every self-change is checkpointed first |
The whole point: read what Claude wrote, keep what's right.
| ⌘G | Diff review side-by-side or unified · j/k hunks · stage, unstage, discard by hunk or file · commit from the bar |
| ⌘⇧I | Switch git branch |
| ⌘K palette | Stash changes · pop latest stash |
| ⌘⇧O | Reveal project in Finder |
Real Chromium views — your cookies, bookmarks, and history ride along.
| ⌘B | New browser tab URL bar focused, history + Google suggest as you type |
| ⌘⇧B | Reopen localhost:PORT ports are sniffed from terminal output |
| ⌘L | Focus URL bar |
| ⌘R | Reload page |
| ⌘[ / ⌘] | Back / forward |
| ⌘⇧V | Send page to Claude a screenshot plus the console of the focused browser page, handed straight to a Claude Code pane |
| ⌘⇧A | New claude.ai tab |
| ⌘⇧G | New chatgpt.com tab |
| ⌘⇧K | Cowork fullscreen the Claude desktop app; press again to come back — works from anywhere |
| ⌘K palette | Open a browser split a Chromium pane beside the current one |
| ⌘K palette | Import Chrome cookies logins come across; also runs on launch |
The app is its own workshop.
| ⌘K palette | Claude on tterm itself opens a Claude Code pane on tterm's source |
| ⌘K palette | Rebuild & install tterm.app then relaunch — self-update in two actions |
| ⌘⇧R | Hot-reload the renderer with dev-mount, edits to source reload live |
| ⌘K palette | Toggle dev-mount load the renderer from your source checkout, so edits hot-reload live |
| ⌘K palette | Revert last self-change roll back tterm's most recent self-edit to its git checkpoint |
| ⌘K palette | About tterm version and commit; opens the changelog |