Claude Code 하나를 돌려놓고 응답을 기다리는 동안 손이 비는 경험은 AI 코딩을 해본 사람이라면 익숙하다. 그렇다고 터미널 창을 여러 개 띄워 에이전트를 두세 개씩 굴리면, 이번엔 어느 창에서 명령을 기다리고 어느 창이 다 끝났는지 놓치기 시작한다. cmux는 바로 이 지점을 겨냥한 macOS 터미널이다. 여러 AI 코딩 에이전트를 탭과 분할 패널로 나눠 병렬 실행하고, 입력이 필요한 에이전트를 알림 링으로 짚어준다. 이번 포스팅에서는 cmux 사용법을 설치부터 워크스페이스 관리, 알림 시스템, 내장 브라우저, Claude Code 연동까지 단계별로 정리하고자 한다.
cmux가 정확히 뭘 하는 도구인가

cmux는 여러 AI 코딩 에이전트를 병렬로 굴리기 위해 만들어진 네이티브 macOS 터미널이다. Ghostty의 렌더링 엔진(libghostty)을 그대로 쓰면서, 세로 탭 사이드바와 알림 시스템을 얹어 여러 에이전트 세션을 한 창에서 관리한다. Claude Code, Codex, Gemini CLI, Aider 등 터미널 기반이라면 어떤 에이전트든 붙일 수 있다.
핵심은 “여러 개를 동시에 돌리되, 각자를 눈에서 놓치지 않는다”는 데 있다. 세로 탭 사이드바에는 워크스페이스마다 Git 브랜치, 연결된 PR 상태, 작업 디렉터리, 열린 포트, 최근 알림이 함께 표시된다. Swift/AppKit로 작성된 순수 네이티브 앱이라 GPU 가속 렌더링을 쓰고, 라이선스는 GPL-3.0-or-later의 오픈소스다. 기존 Ghostty 터미널 설정 파일(테마·폰트·색상)을 그대로 읽어오므로, Ghostty를 쓰던 사람은 익숙한 화면에서 시작할 수 있다.
왜 tmux나 터미널 여러 개로는 부족한가

터미널 창을 여러 개 띄우거나 tmux로 패널을 나누는 방식도 병렬 실행 자체는 가능하다. 하지만 이 방식들은 “지금 어느 세션이 나를 기다리는가”를 알려주지 않는다. cmux는 에이전트가 입력을 요구하면 해당 패널에 파란 링을 띄우고 사이드바 탭을 밝혀, 사람이 창을 일일이 훑지 않아도 되게 만든다.
AI 코딩 에이전트는 사람 개발자와 리듬이 다르다. 몇 분씩 조용히 작업하다가 갑자기 확인이나 승인을 요청하고, 그 타이밍이 세션마다 제각각이다. tmux로 다섯 패널을 열어두면 어느 패널이 멈춰 대기 중인지 눈으로 계속 감시해야 한다. cmux는 이 감시 부담을 알림으로 넘긴다. 비슷한 접근의 도구로는 Orca나 Git Worktrees 기반 워크플로우가 있는데, 아래 표로 성격을 비교했다.

| 항목 | cmux | tmux + git worktree | Orca |
|---|---|---|---|
| 형태 | 네이티브 macOS 앱 | CLI 멀티플렉서 + 수동 조합 | 데스크톱 앱 |
| 렌더링 | libghostty(GPU 가속) | 터미널 에뮬레이터 의존 | Electron 계열 |
| 대기 에이전트 알림 | 패널 알림 링·사이드바 | 없음(직접 감시) | 카드 상태 표시 |
| 브랜치·PR 표시 | 사이드바 기본 제공 | 수동 확인 | 워크스페이스별 표시 |
| 내장 브라우저 | 스크립트 가능한 브라우저 패널 | 없음 | 내장 브라우저 |
| 플랫폼 | macOS 전용 | 크로스 플랫폼 | 크로스 플랫폼 |
표에서 보듯 cmux는 macOS에 한정되는 대신, 알림과 브랜치 표시를 터미널 안에 기본 내장한다는 점이 차별점이다. 크로스 플랫폼이 필요하면 tmux 조합이나 Orca가 대안이 된다.
5분이면 끝나는 cmux 설치

cmux 설치는 Homebrew tap을 추가하고 cask로 앱을 받는 두 줄이면 끝난다. macOS 전용이므로 Homebrew가 가장 간단하고, 원한다면 GitHub 릴리스에서 DMG를 직접 받아도 된다. DMG로 설치하면 Sparkle 기반 자동 업데이트가 동작한다.
# Homebrew tap 추가 후 cask 설치 (권장)
brew tap manaflow-ai/cmux
brew install --cask cmuxShellScript위 명령은 manaflow-ai가 관리하는 tap을 등록한 뒤 cmux 앱을 설치한다. --cask 옵션은 CLI 바이너리가 아니라 macOS 애플리케이션 번들을 설치한다는 의미다. 설치가 끝나면 런치패드나 open -a cmux로 앱을 실행할 수 있다.
# Claude Code 세션 resume를 위한 훅 설치
cmux hooks setupShellScriptcmux는 앱 UI뿐 아니라 CLI와 Unix 소켓 API도 제공한다. cmux hooks setup은 에이전트가 종료됐다가 다시 이어질 때 세션을 복원할 수 있도록 훅을 설치하는 명령이다. 설치는 최초 한 번만 해두면, 이후 앱을 다시 켜도 창 레이아웃과 스크롤백, 에이전트 세션이 그대로 복원된다.
눈이 편해지는 화면 만들기: Ghostty 설정 손보기

cmux는 폰트·테마 설정을 자체적으로 두지 않고 ~/.config/ghostty/config를 그대로 읽는다. 그래서 가독성을 높이려면 Ghostty 설정 파일을 손보면 되고, 폰트·행간·대비·테마를 조정하면 cmux 화면 전체에 즉시 반영된다. 사이드바나 탭 같은 cmux 고유 UI는 별도 파일인 ~/.config/cmux/cmux.json에서 다룬다.
여러 에이전트의 로그를 하루 종일 들여다보는 도구인 만큼, 기본값보다 행간을 넓히고 글자를 또렷하게 만드는 쪽이 눈의 피로를 줄인다. 아래는 가독성을 우선한 핵심 설정이다.
# ~/.config/ghostty/config
font-family = "JetBrainsMono Nerd Font"
font-size = 15
adjust-cell-height = 15% # 행간을 15% 넓혀 긴 로그를 덜 빽빽하게
font-thicken = true # macOS에서 글자를 살짝 두껍게 렌더링
minimum-contrast = 1.1 # 배경과 글자의 최소 명도비를 보장
theme = light:catppuccin-latte,dark:catppuccin-mochaPlaintext이 설정은 폰트를 조금 키우고 행간을 넓혀 로그가 화면에 빽빽하게 붙는 답답함을 줄인다. adjust-cell-height는 셀 높이를 퍼센트나 픽셀로 조절하고, font-thicken은 macOS에서 얇게 보이는 글자를 도톰하게 만든다. minimum-contrast는 테마 색이 배경과 너무 가까워 흐릿해지는 경우를 방지하며, theme에 light:/dark:를 지정하면 시스템 모드에 따라 자동으로 바뀐다.
패널을 여러 개 띄워 병렬로 볼 때 도움이 되는 설정도 따로 있다.
# 여러 패널을 동시에 볼 때 유용한 설정
unfocused-split-opacity = 0.7 # 비활성 패널을 흐리게 해 지금 보는 패널에 집중
font-feature = -calt, -liga # 코드 리거처 비활성화(=>, != 등 오독 방지)
mouse-hide-while-typing = true # 타이핑 중 마우스 커서 숨김
window-padding-x = 12
window-padding-y = 10Plaintextunfocused-split-opacity는 Cmd+D로 나눈 패널 중 지금 포커스가 없는 쪽을 흐리게 처리해, 여러 에이전트를 켜둬도 시선이 현재 패널에 모인다. font-feature = -calt, -liga는 폰트의 리거처(연자)를 꺼서 !=나 => 같은 기호가 합쳐져 오독되는 일을 막는데, 코드와 로그를 자주 읽는 개발자에게는 켜두는 편이 안전하다. 설정을 바꾼 뒤에는 앱을 다시 실행하면 반영되며, 사용 가능한 전체 키는 ghostty +show-config --default --docs로 확인할 수 있다.
워크스페이스와 탭: 에이전트마다 방 하나씩

cmux는 작업 단위를 워크스페이스로 나누고, 각 워크스페이스를 세로 탭으로 관리한다. Cmd+N으로 새 워크스페이스를 만들고 Cmd+1~`Cmd+8`로 번호를 눌러 즉시 이동한다. 탭마다 별도의 작업 디렉터리와 에이전트 세션을 두면, 에이전트 하나가 방 하나를 쓰는 구조가 된다.
이 구조가 편한 이유는 사이드바가 각 방의 상태를 대신 요약해주기 때문이다. 워크스페이스별로 현재 Git 브랜치, 연결된 PR 상태, 작업 디렉터리, 리스닝 포트, 그리고 가장 최근 알림 텍스트가 한눈에 뜬다. 브랜치를 나눠 병렬 작업할 때는 Git Worktrees와 조합하면 에이전트마다 독립된 작업 트리를 주기 좋다. 화면을 더 쪼개고 싶으면 패널 분할을 쓴다.
Cmd+N 새 워크스페이스 생성
Cmd+1 ~ 8 워크스페이스 번호로 이동
Cmd+D 패널을 오른쪽으로 분할
Cmd+Shift+D 패널을 아래로 분할Plaintext위 단축키들이 cmux 사용법의 뼈대다. Cmd+D와 Cmd+Shift+D로 한 워크스페이스 안에서도 에이전트와 로그, 테스트 실행 창을 나란히 띄울 수 있다. 예컨대 왼쪽 패널에 Claude Code, 오른쪽 패널에 npm run test --watch를 두면 에이전트의 수정 결과를 실시간으로 확인하는 구성이 된다.
알림 링: 어느 에이전트가 날 기다리는지

cmux의 알림 시스템은 “지금 개입이 필요한 에이전트”를 시각적으로 짚어준다. 에이전트가 입력을 요구하면 해당 패널 테두리에 파란 링이 뜨고 사이드바 탭이 밝아진다. Cmd+Shift+U를 누르면 가장 최근에 읽지 않은 알림이 있는 패널로 곧바로 점프하고, Cmd+I로 알림 패널 전체를 열 수 있다.
알림을 직접 쏘는 방법도 세 가지가 있다. CLI, OSC 777 이스케이프 시퀀스, 그리고 Kitty 프로토콜인 OSC 99다. 스크립트나 훅에서 특정 시점에 알림을 발생시키고 싶을 때 이 방식을 쓴다.
# CLI로 알림 보내기
cmux notify --title "Claude Code" --body "서브태스크 완료"
# OSC 777 이스케이프 시퀀스
printf '\e]777;notify;빌드 완료;테스트 통과\a'ShellScript첫 번째 명령은 cmux CLI로 제목과 본문을 지정해 알림을 띄운다. 두 번째는 셸 스크립트 어디서든 printf로 알림을 발생시키는 방식이라, 빌드 스크립트나 CI 훅 끝에 한 줄 넣어두면 작업 완료 시점을 놓치지 않는다. 여러 에이전트를 굴릴수록 이 알림 하나하나가 “어느 창을 봐야 하는가”라는 판단을 대신해준다.
분할 패널과 내장 브라우저로 결과 확인하기

cmux는 터미널을 벗어나지 않고도 웹 결과를 확인하도록 스크립트 가능한 브라우저 패널을 내장했다. Cmd+Shift+L로 브라우저 패널을 분할해 열면, 로컬 개발 서버의 UI 변경을 에이전트 옆에서 바로 눈으로 볼 수 있다. 프런트엔드 작업을 시키는 에이전트라면 이 조합이 특히 유용하다.
단순히 보여주기만 하는 게 아니라 에이전트가 브라우저를 조작할 수도 있다. 접근성 트리를 스냅샷으로 떠서 요소 참조를 얻고, 클릭·폼 입력·JavaScript 평가까지 수행한다. 즉 에이전트가 코드를 고친 뒤 스스로 화면을 열어 버튼을 눌러보고 결과를 확인하는 루프가 한 창 안에서 돌아간다. 원격 작업이 필요하면 SSH도 지원한다.
# 원격 머신에 워크스페이스 생성
cmux ssh user@remote-hostShellScriptcmux ssh 명령은 원격 머신에 워크스페이스를 만들고, 네트워크 라우팅을 호스트 머신을 통해 잡아준다. 로컬에서 돌리기엔 무거운 빌드나, 특정 서버 환경에서만 재현되는 작업을 원격 에이전트에게 맡길 때 쓴다. 로컬과 원격 워크스페이스를 같은 사이드바에서 나란히 관리할 수 있다는 점이 편하다.
Claude Code와 엮기: 훅과 teams 모드

cmux는 Claude Code를 위한 네이티브 연동을 갖추고 있다. 알림 훅을 걸어 세션이나 서브태스크가 끝날 때 자동으로 알림을 띄우고, cmux claude-teams 명령으로 Claude Code의 teammate 모드를 바로 실행한다. Claude Code를 주력으로 쓴다면 이 연동이 cmux를 고르는 가장 큰 이유가 된다.
훅 연동은 알림 스크립트를 하나 두고 Claude Code 설정에 등록하는 방식이다. ~/.claude/hooks/에 알림 스크립트를 만들고 ~/.claude/settings.json에 등록하면, 세션 완료나 서브태스크 완료 시점에 cmux 알림이 발생한다.
{
"hooks": {
"Stop": [
{
"hooks": [
{ "type": "command", "command": "~/.claude/hooks/cmux-notify.sh" }
]
}
]
}
}JSON위 설정은 Claude Code 세션이 멈추는 시점(Stop)에 지정한 스크립트를 실행한다. 스크립트 안에서 앞서 본 cmux notify를 호출하면, 에이전트가 작업을 마칠 때마다 해당 패널에 알림 링이 뜬다. Claude Code의 훅 체계를 더 알고 싶다면 Claude Code 실전 활용법을 참고하면 된다. 여러 Claude Code 인스턴스를 병렬로 굴리면서 각각의 완료를 알림으로 받는 구성이 cmux가 노리는 핵심 워크플로우다.
자주 묻는 질문(FAQ)
cmux는 무료인가?
cmux는 GPL-3.0-or-later 라이선스의 무료 오픈소스다. GPL 조건을 지킬 수 없는 조직을 위한 상용 라이선스도 별도로 제공된다. 우선 지원과 클라우드 VM, iOS 앱 등 부가 기능을 담은 Founder’s Edition 유료 옵션도 있으나, 핵심 터미널 기능은 무료로 전부 쓸 수 있다.
cmux는 Windows나 Linux에서도 쓸 수 있나?
아니다. cmux는 Swift/AppKit로 작성된 네이티브 macOS 전용 앱이다. Windows나 Linux에서 여러 AI 에이전트를 병렬로 굴리려면 tmux와 Git Worktrees를 조합하거나, 크로스 플랫폼 도구인 Orca 같은 대안을 검토해야 한다.
cmux와 Ghostty는 무슨 관계인가?
cmux는 Ghostty의 렌더링 엔진인 libghostty를 사용해 만든 별도의 앱이다. Ghostty 설정 파일(테마·폰트·색상)을 그대로 읽어오지만, 세로 탭 사이드바와 알림 시스템, 내장 브라우저는 cmux가 추가한 기능이다. Ghostty가 순수 터미널이라면, cmux는 그 위에 AI 에이전트 오케스트레이션을 얹은 셈이다.
cmux의 폰트나 테마는 어디서 바꾸나?
폰트·테마·색상·커서는 cmux가 아니라 ~/.config/ghostty/config에서 바꾼다. cmux가 이 파일을 그대로 읽기 때문에 Ghostty 설정을 손보면 cmux 화면에 반영된다. 반면 사이드바, 탭 바, 분할 패널 같은 cmux 고유 UI 동작은 ~/.config/cmux/cmux.json에서 따로 설정한다. 가독성을 높이려면 adjust-cell-height로 행간을, font-thicken으로 글자 두께를 조절하는 것을 권한다.
Claude Code 말고 다른 에이전트도 되나?
된다. cmux는 터미널 기반 에이전트라면 무엇이든 실행할 수 있다. Claude Code, Codex, Gemini CLI, OpenCode, Aider, Cline 등이 모두 동작하며, Claude Code teams와 oh-my-opencode 같은 일부 도구는 네이티브 연동까지 제공한다.
에이전트 세션이 앱을 껐다 켜도 유지되나?
유지된다. cmux는 세션 복원 기능을 갖춰 창 레이아웃, 작업 디렉터리, 스크롤백, 에이전트 세션을 저장했다가 앱을 다시 실행할 때 복원한다. cmux hooks setup으로 resume 훅을 설치해두면 종료됐던 에이전트도 이어서 작업할 수 있다.
마무리
Claude Code를 하나만 쓰던 시절엔 터미널 창 하나로 충분했다. 그런데 에이전트에게 맡길 수 있는 일이 늘면서, 자연스럽게 두세 개를 동시에 굴리게 됐고 그때부터 “지금 어느 창이 나를 기다리지”라는 감시 부담이 생겼다. tmux로 패널을 나눠봤지만, 결국 눈으로 계속 훑어야 한다는 점은 그대로였다. cmux를 며칠 써보니 이 감시 부담을 알림 링으로 넘긴다는 발상 하나가 생각보다 크게 다가왔다. 완성도로만 보면 아직 macOS 전용이라는 제약이 크고 초기 단계 도구다운 거친 부분도 있지만, “여러 에이전트를 놓치지 않고 부린다”는 문제를 정면으로 겨냥한 도구라는 점은 분명하다. Ghostty를 이미 쓰고 있고 Claude Code를 두 개 이상 병렬로 돌리는 습관이 생겼다면, tap 두 줄 추가하는 값은 충분히 한다고 본다.
