Native macOS 14+ · AppKit + SwiftTerm · 3 MB DMG

Mission control
for Claude Code.

A native macOS terminal built for running many Claude Code agents at once — so you always know which one is blocked, working, or waiting on you.

Four Claude Code agents grouped by project, with a live status dashboard at the bottom Four Claude Code agents grouped by project, with a live status dashboard at the bottom

Press ⌘G to jump straight to the next WAIT agent.

Why termy

No more tab roulette.

Running N Claude Code agents in a stock terminal turns into tab roulette: you Cmd-Tab through windows, scan panes, miss the one waiting on you.

termy pulls that state out of the panes and into a glanceable dashboard. Every running agent gets a chip at the bottom showing live status — IDLE, THINK, or WAIT.

The moment a permission prompt fires, macOS notifies you — and ⌘G jumps you straight to that pane.

termy pulls that state out of the panes and
into a glanceable dashboard.
Projects, not tabs

Other terminals give you tabs.
termy gives you projects.

Every pane is grouped by its cwd into a project. Same project gets the same pastel accent — pane header, dashboard chip, filter pill — all the way through. A four-agent window stops looking like a soup of identical black rectangles and turns into something you can read at a glance.

Filter bar with numbered project pills visible while holding ⌘

Hold ⌘ to reveal numbers

Numbered pills appear on the top filter bar. ⌘0 shows all, ⌘1⌘9 jump to that project's pane grid in one keystroke.

⌘K fuzzy project switcher

⌘K Fuzzy project switcher

Fuzzy-match across every project termy has ever seen — pane counts and last-used timestamps included. Pick one and termy rebuilds the saved pane grid you left it in.

A dashboard for every agent

The mission control at the bottom.

Every running Claude Code gets one chip in the bottom strip — showing project / branch and live state. Hold ⌘⌥ for numbered badges so you can jump directly to a chip.

termyfeat/dashboardWAIT
api-servermainTHINK
marketingv2WAIT
inframainIDLE
docsedit-pass-3THINK
IDLE

The agent is at the prompt with nothing running.

THINK

A tool call is in flight. The model is doing work.

WAIT

Blocked on a permission prompt. Your attention needed.

termy — dashboard with numbered badges (⌘⌥)
Dashboard chips with numbered badges visible while holding ⌘⌥

⌘G jumps to the next WAIT pane — across splits, across project filters. The single most useful keystroke in the app.

See it in action

Here's how it actually looks.

Pane borders colored by state

State shows up everywhere

Pane border, dashboard chip, and a macOS notification — all driven by Claude Code's Notification and Stop hooks.

Three-pane split layout on a single project

Splits, not tabs

Real splits backed by nested NSSplitView. Drag to resize. ⌘D for a row split, ⇧⌘D for a column, ⌘N for an auto split that picks the orientation based on aspect ratio.

Keyboard shortcut overlay

⌘/ reveals everything

The full shortcut map — focus, projects, splits, window. No hidden bindings.

Dark side-by-side with an editor

Lives next to your editor

Light, Dark, or Match System. View → Appearance switches the terminal, chrome, and dashboard together.

What else you get

The basics, all in.

🔔

Permission-prompt notifications

Claude flips to WAIT → macOS pings you, even if termy isn't focused.

💾

Workspace that survives

Splits, project grouping, and cwd are all persisted per project. ⌘K a project and termy rebuilds the pane grid you left it in.

Real splits

⌘D row, ⇧⌘D column, ⌘N auto split. Drag the dividers. ⌘⏎ toggles maximize.

Native, not Electron

AppKit + SwiftTerm. 3 MB signed DMG, ~7 MB installed. Real UserNotifications, Full Disk Access, titlebar chrome.

Keyboard cheatsheet

Hands on the keyboard.

Move through N panes without ever touching the trackpad.

G
Jump to next WAIT pane — the single keystroke you'll reach for most
0
Show all projects
19
Jump to project filter N (hold ⌘ to see numbers)
19
Jump to dashboard chip N (hold ⌘⌥ to see numbers)
K
Fuzzy project switcher
[ / ]
Previous / next pane
←↑↓→
Focus pane in direction
D / D
Row / column split
N
Auto split — picks row/column from aspect ratio
Toggle maximize on the focused pane
W
Close focused pane
/
Full shortcut overlay
How it works

How it moves under the hood.

Claude Code's hook system, a tiny CLI helper, and an in-app actor cooperate to produce the state.

Claude Code ──hook──▶ termy-hook (CLI) ──unix socket──▶ HookDaemon (in-app actor)
                                                              │
                                                              ▼
                                                       PaneStateMachine
                                                              │
                                                              ▼
                                            MissionControlView + Notifier
Where it stands

Status: v1

Ships today

  • SwiftTerm panes with OSC 7 cwd tracking, splits, and ⌘-click URL open
  • Hook daemon + termy-hook end-to-end
  • XCTest coverage over the state machine, fuzzy match, persistence, and filter layout (74 tests)
  • Workspace autosave + project-scoped pane grid restore
  • Developer ID-signed, notarized DMG pipeline

Not in v1

  • Codex hook support
  • Screen-scraping fallback for non-hook agents
  • A separate LaunchAgent daemon
  • User-editable hook config
  • Per-project settings UI