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

Mission control
for Claude Code.

여러 개의 Claude Code 에이전트를 한 화면에서 돌리기 위해 만든 macOS 터미널. 어떤 에이전트가 막혀있고, 작업 중이고, 당신을 기다리는지 한눈에.

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

탭 룰렛은 이제 그만.

기본 터미널에서 N개의 Claude Code 에이전트를 돌리는 건 곧 tab roulette이 됩니다. 창을 Cmd-Tab으로 돌려가며, 어느 패널이 막혀있는지 눈으로 훑고, 정작 당신을 기다리던 그 하나는 놓쳐버리죠.

termy는 그 상태를 패널 안에서 끄집어내 한눈에 보이는 대시보드로 만들어 둡니다. 모든 에이전트는 하단에 자기 칩을 갖고, 칩에는 실시간 상태가 찍힙니다 — IDLE, THINK, WAIT.

permission 프롬프트가 뜨는 순간 macOS가 알림을 쏘고, ⌘G 한 번이면 그 패널로 점프합니다.

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

다른 터미널은 을 줍니다.
termy는 프로젝트를 줍니다.

모든 패널은 자기 cwd를 따라 자동으로 프로젝트로 묶입니다. 같은 프로젝트는 같은 파스텔 컬러를 받아 — 패널 헤더, 대시보드 칩, 필터 pill — 까지 일관되게. 4개의 검정 박스로 보이던 화면이 읽히는 화면이 되죠.

Filter bar with numbered project pills visible while holding ⌘

⌘ 누르면 번호가 떠요

상단 필터 바의 프로젝트 pill에 번호가 뜨고, ⌘0은 전체, ⌘1~⌘9는 그 프로젝트의 패널 그리드로 한 번에 점프합니다.

⌘K fuzzy project switcher

⌘K Fuzzy Project Switcher

지금까지 termy가 본 모든 프로젝트를 fuzzy 검색합니다. 패널 수와 마지막 사용 시각이 함께 보이고, 하나를 고르면 그 프로젝트의 저장된 패널 그리드가 그대로 복원됩니다.

A dashboard for every agent

화면 하단의 미션 컨트롤.

모든 실행 중인 Claude Code는 하단 스트립에 칩 하나씩을 받습니다. 칩에는 프로젝트 / 브랜치와 실시간 상태가 표시되고, ⌘⌥를 누르면 칩에 번호가 떠 직접 점프할 수 있습니다.

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

에이전트가 프롬프트에서 대기 중. 아무것도 실행하고 있지 않습니다.

THINK

tool call이 진행 중. 모델이 일을 하고 있는 상태.

WAIT

permission 프롬프트에 막혀있습니다. 당신의 주의가 필요.

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

⌘G는 다음 WAIT 패널로 — split을 가로지르고 프로젝트 필터를 가로질러서 — 점프합니다. 앱에서 가장 자주 쓰게 되는 단축키 한 개.

See it in action

실제로는 이렇게 생겼어요.

Pane borders colored by state

State shows up everywhere

패널 테두리, 대시보드 칩, macOS 알림 — 모두 Claude Code의 NotificationStop hook으로 구동됩니다.

Three-pane split layout on a single project

Splits, not tabs

중첩 NSSplitView로 진짜 split. 드래그로 리사이즈, ⌘D는 row, ⇧⌘D는 column, ⌘N은 화면 비율을 보고 자동으로 잘라주는 auto split.

Keyboard shortcut overlay

⌘/ reveals everything

전체 단축키 맵 — focus, projects, splits, window. 숨겨진 바인딩 없음.

Dark side-by-side with an editor

Lives next to your editor

Light, Dark, Match System. View → Appearance이 터미널·크롬·대시보드를 한꺼번에 바꿉니다.

What else you get

기본기는 전부.

🔔

Permission-prompt notifications

Claude가 WAIT로 바뀌면 macOS가 알림을 쏩니다. termy가 포커스를 안 잡고 있어도.

💾

Workspace that survives

split 구조, 프로젝트 그룹, cwd가 프로젝트별로 저장됩니다. ⌘K로 다시 열면 떠난 그 모양 그대로 복원.

Real splits

⌘D row, ⇧⌘D column, ⌘N auto split. divider 드래그. ⌘⏎로 maximize 토글.

Native, not Electron

AppKit + SwiftTerm. 3 MB signed DMG, 설치 후 ~7 MB. 진짜 UserNotifications, Full Disk Access, titlebar chrome.

Keyboard cheatsheet

손은 키보드 위에서.

트랙패드 없이도 N개의 패널을 휘젓고 다닐 수 있게 했습니다.

G
Jump to next WAIT pane — 가장 자주 쓰게 되는 단 하나의 키
0
전체 프로젝트 표시
19
N번 프로젝트 필터로 점프 (⌘ hold = 번호 표시)
19
대시보드 칩 N번으로 점프 (⌘⌥ hold = 번호 표시)
K
Fuzzy project switcher
[ / ]
이전 / 다음 패널
←↑↓→
방향으로 패널 포커스 이동
D / D
Row / column split
N
Auto split — 화면 비율을 보고 자동으로 row/column 결정
현재 패널 maximize 토글
W
현재 패널 닫기
/
전체 단축키 오버레이
How it works

안에서는 어떻게 움직이나.

Claude Code의 hook 시스템과 작은 CLI 도우미, 그리고 in-app actor가 협력해서 상태를 만듭니다.

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

Status: v1

Ships today

  • OSC 7 cwd 추적, split, ⌘-click URL 열기를 갖춘 SwiftTerm 패널
  • Hook daemon + termy-hook end-to-end
  • state machine, fuzzy match, persistence, filter layout 위의 XCTest 커버리지 (74 tests)
  • workspace 자동저장 + 프로젝트 단위 패널 그리드 복원
  • Developer ID-signed, notarized DMG 파이프라인

Not in v1

  • Codex hook 지원
  • non-hook 에이전트를 위한 screen-scraping fallback
  • 독립 LaunchAgent daemon
  • 유저가 직접 편집하는 hook config
  • 프로젝트별 settings UI