Table of contents
멈춘 에이전트를 30분 뒤에 발견한다
Claude Code, Codex, Gemini CLI 같은 코딩 에이전트를 한 번에 두세 개씩 굴리다 보면 익숙한 장면이 있다. 에이전트가 “이 명령 실행해도 되나?” 같은 입력을 기다리고 있는데, 옆 창에서 다른 작업을 하느라 그걸 놓친다. 30분 뒤에 보면 그대로 멈춰 있다.
문제의 핵심은 알림이 없다는 것이다. 일반 터미널은 출력이 화면을 굴러가도 사용자에게 능동적으로 신호를 보내지 않는다. 에이전트가 사람처럼 “여기 좀 봐 달라”고 부를 방법이 없다.
cmux는 이 문제를 정면으로 푸는 도구다. 한 줄로 요약하면 Ghostty 기반의 macOS 네이티브 터미널인데, 일반 터미널과 달리 AI 에이전트가 주의를 끌면 시각·OS 알림으로 사용자에게 알린다. 만든 곳은 manaflow-ai/cmux이고, Swift/AppKit으로 빌드된 진짜 macOS 앱이다.
어떤 모양인가
cmux의 화면은 IDE의 사이드바처럼 생겼다. 왼쪽에 세로 탭이 있고, 각 탭은 하나의 워크스페이스다. 워크스페이스에는 그 탭이 보고 있는 git 브랜치, PR 상태, 작업 디렉터리, 열려 있는 포트, 알림 개수가 표시된다. 오른쪽 메인 영역에는 ⌘D / ⌘⇧D로 분할 패널을 띄울 수 있다.

출처: manaflow-ai/cmux 공식 리포 — MIT
Codex가 사용자 입력을 기다리는 순간, 해당 패널에 파란 링이 둘러지고 사이드바의 탭이 깜빡이며 macOS 알림 센터에도 메시지가 뜬다. 작업 중인 다른 패널에 집중하다가도 시야 끝에서 변화를 알아채게 된다.

출처: manaflow-ai/cmux 공식 리포 — MIT
알림은 어떻게 동작하나
cmux의 알림은 마법이 아니라 표준 터미널 escape sequence다. OSC 9, OSC 99, OSC 777 — 셋 다 오래된 표준이다. iTerm2나 일부 모던 터미널이 이미 지원한다.
Claude Code, Codex 같은 에이전트가 작업 완료나 입력 요청 시점에 이 시퀀스를 출력하면, cmux가 그걸 잡아서 알림으로 띄운다. 새 도구를 배워야 하는 게 아니라, 이미 표준이 있는데 일반 터미널이 잘 활용하지 않던 걸 cmux가 일급으로 다루는 것에 가깝다.
직접 트리거하고 싶으면 cmux CLI로도 가능하다. Claude Code 훅에 다음과 비슷한 줄을 넣어두면 작업 종료 시점에 알림이 뜬다.
# Claude Code의 SessionEnd 훅 등에서
cmux notify --title "Claude" --body "작업 끝남"
설치
DMG로 받아도 되고, Homebrew가 편하면 한 줄로 끝난다.
brew tap manaflow-ai/cmux
brew install --cask cmux
DMG 빌드는 Sparkle 기반 자동 업데이트가 붙어 있어서 한 번 설치하면 신경 쓸 게 없다. macOS 전용이고, 윈도우/리눅스 포트는 비공식 포크(amirlehmam/wmux, shogotomita/cmux-win 등)가 있긴 하지만 본가는 macOS만 지원한다.
cmux는 내부적으로 libghostty를 써서 GPU 가속으로 렌더링한다. Ghostty를 이미 쓰고 있다면 ~/.config/ghostty/config를 그대로 읽어 폰트·테마·키 바인딩을 가져간다. 설정을 두 번 만들 필요가 없다.
자주 쓰는 단축키
| 동작 | 키 |
|---|---|
| 새 워크스페이스 | ⌘ N |
| 오른쪽으로 분할 | ⌘ D |
| 아래로 분할 | ⌘ ⇧ D |
| 마지막 알림으로 점프 | ⌘ ⇧ U |
| 알림 패널 열기 | ⌘ I |
| 분할 패널에 브라우저 띄우기 | ⌘ ⇧ L |
⌘ ⇧ U가 핵심이다. 워크스페이스 다섯 개를 켜둔 상태에서 어디서 알림이 왔는지 모를 때, 이 키 하나로 미응답된 패널로 즉시 이동한다. 알림 카운터를 눈으로 훑어 찾을 필요가 없다.
⌘ ⇧ L은 내장 브라우저를 분할 패널에 띄운다. 에이전트가 띄운 로컬 서버를 옆 패널에서 곧바로 확인할 수 있고, 일반 브라우저처럼 쿠키·세션을 가진다. cmux는 Chrome, Firefox, Arc 등 20여 개 브라우저에서 인증 정보를 임포트해서, 로그인된 상태로 페이지를 띄울 수 있다.

출처: manaflow-ai/cmux 공식 리포 — MIT
tmux와 비교
cmux가 tmux를 대체하는 도구는 아니다. 초점이 다르다.
| 측면 | tmux | cmux |
|---|---|---|
| 플랫폼 | 모든 유닉스 | macOS 전용 |
| 동작 방식 | TUI (터미널 안) | 네이티브 GUI 앱 |
| 세션 지속성 | 강력 (서버 분리) | 일반 GUI 앱 수준 |
| 알림 | 거의 없음 | OS 알림 + 시각 표시 |
| 원격 사용 | SSH 안에서 실행 | 외부에서 SSH 워크스페이스 추가 |
| 대상 워크플로우 | 서버 작업·세션 유지 | AI 에이전트 다중 세션 |
원격 서버에서 돌아가는 빌드를 며칠씩 지키는 용도라면 tmux가 여전히 정답이다. 반대로 로컬에서 에이전트 여러 개를 동시에 굴리며 알림을 놓치고 싶지 않은 워크플로우라면 cmux가 부드럽다.
원격에서도 쓸 수 있다
cmux는 SSH 워크스페이스라는 개념이 있다. 사이드바에서 원격 호스트를 등록하면, 그 호스트에서 도는 에이전트도 로컬 패널처럼 다룰 수 있다. 더 흥미로운 건 그 원격 머신의 로컬 포트를 cmux가 네트워크 라우팅해서 내장 브라우저로 곧바로 띄워준다는 점이다. 원격에서 띄운 dev 서버를 SSH 포트 포워딩 없이 보는 셈이다.
리모트 박스에서 무거운 빌드를 돌리면서 로컬에서는 가벼운 작업만 하는 흐름이 깔끔하게 정리된다.
정리
cmux는 이미 터미널을 잘 쓰던 사람을 다시 가르치려는 도구가 아니다. 에이전트가 일을 대신해주는 시간이 길어질수록, 사람은 여러 작업의 상태를 동시에 지켜보는 모니터링 역할로 무게가 옮겨간다. 그 역할에 맞게 만들어진 터미널이 cmux다.
macOS를 쓰면서 Claude Code나 Codex를 두 개 이상 동시에 굴리는 패턴이 자리 잡혔다면 한 번 깔아볼 가치가 있다. 단순히 알림 한 줄 더 받는 차원이 아니라, 작업 흐름의 단위가 “한 세션”에서 “여러 세션의 동시성”으로 옮겨가는 경험을 하게 된다.




Loading comments...