Claude Code 3개, Codex 2개, Gemini CLI 1개. 동시에 돌리다 보면 지금 어디서 뭐가 실행 중인지 진짜 모르게 됩니다. 터미널 탭이 8개 열려 있는데 어느 창에서 에이전트가 입력 대기 중인지 일일이 클릭해서 확인하고 있으면, 병렬 작업의 장점이 절반으로 줄어드는 느낌이에요.
cmux는 Ghostty 엔진을 기반으로 에이전트 병렬 작업에 특화된 macOS 네이티브 터미널입니다. 2026년 3월 기준 오픈소스로 공개되어 있으며, 알림 링·수직 탭·내장 브라우저·소켓 API 등 기능이 에이전트 관제 방식 자체를 바꿉니다.
터미널이 왜 지금 다시 진화하나
50년 가까이 터미널은 거의 안 바뀌었습니다. 셸이 바뀌고, tmux가 나오고, 폰트가 좋아졌지만 핵심 UX는 그대로였어요. 텍스트 입력받고, 출력 보여주고, 끝.
2025년 후반부터 상황이 달라집니다. Claude Code, Codex, Gemini CLI처럼 터미널 안에서 돌아가는 AI 에이전트가 실무 워크플로우에 들어오면서, 터미널이 단순 입출력 도구를 넘어 에이전트 관제실 역할을 해야 하는 상황이 된 겁니다.
에이전트는 사람이랑 다르게 씁니다.
- 에이전트는 한 번 명령 내리면 수십 분간 혼자 돌아갑니다
- 중간에 입력 대기 상태가 될 수 있는데, 그걸 사람이 눈치 못 채면 그냥 멈춰버립니다
- 여러 에이전트를 동시에 돌릴수록 어느 창에서 뭐가 일어나는지 추적하기가 힘들어집니다
- 에이전트가 웹 결과물을 만들었을 때 확인하러 브라우저를 켜야 하는 컨텍스트 전환 비용도 있습니다
사람이 코드를 직접 치는 흐름에서는 이게 큰 문제가 아니었습니다. 탭 전환이나 창 이동 정도야 금방 적응이 되니까요. 근데 에이전트가 비동기로 작업하기 시작하면 얘기가 달라집니다. 어디 에이전트가 완료됐는지, 어디 에이전트가 멈춰서 기다리는지, 이걸 계속 직접 확인해야 하는 오버헤드가 생깁니다.
cmux는 이 문제를 “터미널 앱 자체를 에이전트용으로 다시 만들자”는 방식으로 풀었습니다. Ghostty의 렌더링 엔진(libghostty)을 가져다 Swift/AppKit으로 네이티브 macOS 앱으로 빌드했고, 에이전트가 필요로 하는 기능들을 처음부터 설계에 넣었습니다. 2026년 3월 현재 GitHub에 오픈소스로 공개되어 있고, Product Hunt에서도 올라와 있습니다.
cmux 설치 방법
직접 앱을 받는 방법이 가장 간단합니다.
방법 1: 공식 사이트에서 직접 다운로드
cmux.com → Download for macOS
.dmg 파일을 받아서 Applications 폴더에 드래그하면 됩니다.
방법 2: GitHub에서 빌드
git clone https://github.com/manaflow-ai/cmux
cd cmux
# Xcode로 빌드하거나 빌드 스크립트 사용
CLI 심링크 설정 (선택)
앱 내부 CLI를 터미널 어디서나 쓰고 싶다면 심링크를 만들어야 합니다:
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
이걸 해야 cmux notify, cmux browser, cmux workspace 같은 명령어를 외부 스크립트에서 호출할 수 있습니다. cmux 안에서 실행하는 터미널에서는 자동으로 환경변수(CMUX_WORKSPACE_ID, CMUX_SURFACE_ID)가 설정되어 CLI가 바로 동작합니다.
Ghostty 설정 연동
기존 Ghostty를 쓰고 있다면 ~/.config/ghostty/config가 있을 겁니다. cmux를 열면 이 파일을 자동으로 읽어서 같은 테마, 폰트, 색상이 적용됩니다. 별도 설정 없이 바로 익숙한 환경이 나옵니다.
Ghostty를 안 써봤다면 cmux 기본 설정으로 시작하면 됩니다. 나중에 Ghostty 설정 파일을 만들어서 테마를 조정하면 cmux에도 자동 반영됩니다.
1. 수직 탭 사이드바 — 에이전트마다 컨텍스트가 붙는다
일반 터미널의 탭은 그냥 번호입니다. “탭 3” 이런 식. cmux의 사이드바는 다릅니다.
각 워크스페이스 탭에 이런 정보가 붙습니다:
- 현재 git 브랜치
- 연결된 PR 번호와 상태
- 작업 디렉터리
- 리스닝 중인 포트
- 마지막으로 발생한 알림 텍스트
탭 8개가 열려 있어도 사이드바만 보면 “아, 저 창은 PR #42 리뷰 중이고, 이 창은 dev 서버 포트 4321 열려 있구나”를 한눈에 파악할 수 있습니다.
에이전트가 여러 프로젝트를 동시에 작업하는 경우에 특히 효과적입니다. Claude Code로 A 프로젝트 기능 개발, Codex로 B 프로젝트 테스트 작성을 병렬로 돌릴 때, 탭 전환 없이 사이드바에서 각 에이전트의 현재 상태를 추적할 수 있어요.
사이드바가 수직으로 배치되는 것도 포인트입니다. 화면 폭을 확보하면서 탭 정보를 더 많이 보여줄 수 있어요. 수평 탭은 탭이 많아질수록 각 탭에 보여줄 수 있는 텍스트가 줄어드는데, 수직 배치는 이 문제에서 자유롭습니다.
2. 알림 링 — 에이전트가 기다릴 때 파란 테두리로 알려준다
이게 cmux에서 제일 실용적인 기능입니다.
에이전트가 입력 대기 상태에 들어가면:
– 해당 창 주변에 파란 링(ring)이 생깁니다
– 사이드바의 탭도 함께 밝아집니다
– macOS 데스크톱 알림이 뜹니다
다른 작업을 하다가도 시야 끝에 파란 링이 보이면 “어, 에이전트 입력 대기다”하고 바로 알 수 있습니다. 일일이 탭 클릭해서 확인할 필요가 없어요.
기술적으로는 터미널 이스케이프 시퀀스(OSC 9/99/777)를 감지하는 방식입니다. Claude Code나 Codex 같은 에이전트는 이미 이 시퀀스를 씁니다. 설정 없이 자동으로 동작해요.
CLI로 직접 트리거할 수도 있습니다:
# 알림 링 테스트
cmux notify --test
# 커스텀 알림 메시지
cmux notify "빌드 완료, 확인 필요"
Claude Code 훅에 연결하면 특정 단계 완료 시 자동 알림을 보낼 수도 있습니다. 예를 들어 에이전트가 PR을 생성했거나 테스트가 통과했을 때 cmux notify "PR 생성 완료"를 실행하도록 훅을 설정하면, 에이전트가 알아서 신호를 줍니다.
알림이 왔을 때 단순히 알림만 보이는 게 아니라, 어느 워크스페이스에서 온 알림인지 사이드바에서 바로 확인할 수 있다는 점이 실용적입니다. 알림 팝업에서 해당 창으로 바로 이동하는 것도 됩니다.
3. 내장 브라우저 — 터미널 떠나지 않고 결과를 확인한다
터미널에서 웹 서버 띄우고, 브라우저 켜서 localhost 확인하고, 다시 터미널로 돌아오는 흐름 아시죠? cmux는 이걸 내장 브라우저로 해결합니다.
WebKit 네이티브 렌더링으로 창 안에 브라우저가 들어가 있습니다. 스플릿 뷰로 왼쪽엔 터미널, 오른쪽엔 브라우저를 열어두면 에이전트가 코드를 수정하는 결과를 실시간으로 옆에서 볼 수 있습니다.
CLI로 브라우저를 제어할 수도 있습니다:
# 특정 URL 열기
cmux browser open https://localhost:4321
# 인터랙티브 스냅샷 (DOM 구조 캡처)
cmux browser snapshot --interactive
# 요소 클릭
cmux browser click "#submit-button"
# 폼 입력
cmux browser fill "#email" "test@example.com"
에이전트가 프런트엔드 작업을 할 때 이 조합이 특히 강력합니다. 에이전트가 컴포넌트 수정 → cmux 브라우저에서 즉시 확인 → 피드백 주기를 터미널 밖으로 나가지 않고 돌릴 수 있습니다.
내장 브라우저라서 일반 Chrome이나 Safari보다 기능이 제한적이기는 합니다. 확장 프로그램은 당연히 없고, 복잡한 웹앱에서 렌더링 차이가 날 수 있습니다. 최종 결과 확인은 별도 브라우저에서 하는 게 맞지만, 개발 중 빠른 피드백용으로 쓰기에는 충분합니다.
4. 소켓 API — 에이전트가 터미널을 직접 제어한다
cmux의 진짜 포텐셜은 여기에 있습니다.
Unix 소켓을 통해 외부에서 cmux를 제어할 수 있습니다. 즉, 오케스트레이터 에이전트가 cmux에 명령을 내려 하위 에이전트들의 창을 만들고, 명령을 보내고, 상태를 모니터링할 수 있습니다.
# 새 워크스페이스 생성
cmux workspace new --name "feature-auth"
# 특정 창에 키스트로크 전송
cmux send --workspace feature-auth "claude code ."
# 환경변수로 현재 워크스페이스 식별
echo $CMUX_WORKSPACE_ID
echo $CMUX_SURFACE_ID
실제 활용 시나리오:
- 오케스트레이터 에이전트가 작업 목록을 분석합니다
- 작업 수에 맞춰 cmux 워크스페이스를 자동으로 생성합니다
- 각 워크스페이스에 전문화된 에이전트를 배치합니다
- 에이전트들이 알림 링으로 완료 신호를 보내면 오케스트레이터가 결과를 취합합니다
현재 cmux는 MCP 서버도 제공합니다(cmux-agent-mcp). Claude Code에서 직접 cmux를 제어하는 MCP 도구로 연결할 수 있습니다.
MCP 서버를 연결하면 Claude Code가 직접 새 워크스페이스를 만들거나, 다른 에이전트 창에 명령을 보내는 것도 가능해집니다. 에이전트가 에이전트를 관리하는 구조가 실제로 터미널 레벨에서 동작하는 겁니다.
외부에서 cmux CLI를 쓰려면 심링크를 만들어야 합니다:
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
5. 기존 Ghostty 설정 그대로 — 마이그레이션 비용이 거의 없다
cmux는 libghostty를 써서 렌더링합니다. 이 말은 기존 Ghostty 사용자라면 테마, 폰트, 색상 설정을 그대로 가져올 수 있다는 뜻입니다.
~/.config/ghostty/config 파일을 건드리지 않아도 cmux가 그걸 읽어서 동일한 시각적 환경을 제공합니다. Ghostty 쓰다가 cmux로 전환할 때 설정 다시 맞출 필요가 없어요.
Ghostty를 안 쓰던 사람이라면 cmux 설치 후 기본 설정으로 바로 쓸 수 있습니다. 기본 테마도 작업 친화적으로 맞춰져 있습니다.
Ghostty의 장점 중 하나가 렌더링 성능입니다. GPU 가속으로 고해상도 화면에서도 스크롤이 부드럽고 폰트 렌더링이 깔끔합니다. cmux는 같은 엔진을 써서 이 성능을 그대로 가져옵니다. 에이전트 로그가 빠르게 스크롤될 때도 버벅임 없이 따라갑니다.
cmux, tmux, dmux — 뭐가 다른가
이름이 비슷해서 헷갈릴 수 있으니 정리합니다.
| 도구 | 분류 | 핵심 용도 | macOS 전용? |
|---|---|---|---|
| cmux | GUI 터미널 앱 | 에이전트 병렬 관제, 내장 브라우저, 알림 링 | macOS 전용 |
| tmux | 터미널 멀티플렉서 | 세션 분리/재연결, 원격 서버 | 크로스플랫폼 |
| dmux | tmux 래퍼 | git 워크트리 분리, 에이전트 격리 | 크로스플랫폼 |
| amux | TUI 도구 | 병렬 에이전트 실행, 큐 관리 | 크로스플랫폼 |
| smux | tmux 계열 | AI 에이전트 세션 관리 | 크로스플랫폼 |
cmux는 tmux와 기술적으로 전혀 관계없습니다. 이름만 비슷한 완전히 독립적인 앱입니다.
원격 서버에서 세션 유지가 필요하다면 여전히 tmux를 씁니다. 로컬 macOS에서 AI 에이전트 여러 개를 GUI로 관리하고 싶다면 cmux가 적합합니다.
둘을 같이 쓸 수도 있습니다. cmux 안에서 tmux를 실행해서 원격 세션 연결하는 방식은 충분히 가능합니다. cmux가 로컬 에이전트 관제를 담당하고, 내부에서 돌아가는 tmux가 원격 서버 세션을 유지하는 구조입니다.
실전 워크플로우 — Claude Code 병렬 작업 셋업
실제로 어떻게 쓰는지 구체적인 시나리오로 설명합니다.
시나리오: 3개 작업을 병렬로 처리하기
가정: 리팩터링, 테스트 작성, 문서화를 동시에 진행해야 한다.
- cmux를 열고 워크스페이스 3개를 만듭니다:
Cmd+T세 번으로 탭 추가- 각 탭에서 해당 프로젝트 디렉터리로 이동
- 각 워크스페이스에서 에이전트를 시작합니다:
“`bash
# 탭 1: 리팩터링
claude code “auth 모듈 리팩터링, 기존 테스트 통과 유지”
# 탭 2: 테스트
claude code “결제 모듈 테스트 커버리지 80% 이상 달성”
# 탭 3: 문서화
codex “API 엔드포인트 문서 업데이트”
“`
- 사이드바를 보면서 다른 작업을 합니다. 파란 링이 뜨면 해당 탭으로 전환해서 확인하고 계속 진행합니다.
- 탭 3(문서화)에서 웹 미리보기가 필요하면 스플릿으로 브라우저를 열어서 확인합니다.
이 흐름에서 cmux가 없으면 어떻게 됐을까요. 터미널 탭 3개를 직접 번갈아 확인해야 합니다. 에이전트 A가 멈춰서 기다리는지 모른 채 B, C만 진행되다가 나중에 발견하게 됩니다. 결과물 확인을 위해 Chrome을 별도로 열어야 합니다.
작은 차이처럼 보이지만 병렬 세션이 많아질수록 이 오버헤드가 실제로 쌓입니다.
실수 방지 포인트
1. Linux에서 쓰려고 하면 문제가 생긴다
cmux는 macOS 전용입니다. Apple의 AppKit 프레임워크를 씁니다. Linux 포크 프로젝트(cmux-linux)가 있기는 하지만 공식이 아니고 기능 차이가 있습니다. 내장 브라우저나 macOS 알림 같은 기능은 Linux 포크에서 동작하지 않을 수 있습니다.
2. Ghostty 설치가 선행 조건은 아니다
cmux가 libghostty를 내장하고 있어서 Ghostty 앱 자체를 설치할 필요가 없습니다. Ghostty 설정 파일이 있으면 읽어서 쓰지만, 없어도 동작합니다. Ghostty를 설치하지 않은 상태에서 cmux만 설치해도 됩니다.
3. tmux와 혼동하지 말 것
같은 이름 패턴이지만 전혀 다른 도구입니다. cmux는 tmux 기반이 아니고, tmux의 .tmux.conf 설정을 읽지도 않습니다. tmux 명령어가 cmux에서 동작한다고 기대하면 안 됩니다.
4. 소켓 API는 앱 실행 중에만 동작한다
cmux가 실행 중이 아닐 때 CLI로 소켓 API를 호출하면 실패합니다. 스크립트에서 쓴다면 cmux 실행 여부를 먼저 확인해야 합니다. 특히 CI/CD 환경이나 원격 서버에서 cmux CLI를 호출하는 실수를 하기 쉽습니다. cmux는 로컬 macOS 앱이라 해당 환경에서는 동작하지 않습니다.
5. MCP 연결은 별도 설정이 필요하다
cmux-agent-mcp를 Claude Code에 연결하려면 MCP 서버 설정을 .claude/mcp.json에 추가해야 합니다. 자동으로 연결되지 않습니다. MCP 설정 없이 cmux를 써도 알림 링, 사이드바, 브라우저는 모두 동작합니다. MCP는 Claude Code가 cmux를 프로그래밍 방식으로 제어하고 싶을 때 추가로 설정하는 옵션입니다.
6. 스플릿 뷰와 워크스페이스 개념을 구분해야 한다
cmux에서 “스플릿”은 하나의 워크스페이스 안에서 화면을 나누는 것입니다. “워크스페이스”는 탭 단위로 분리된 독립 공간입니다. 에이전트를 격리해서 돌리려면 같은 워크스페이스 안에서 스플릿하는 것보다 별도 워크스페이스를 만드는 게 맞습니다.
누가 쓰면 효과적인가
cmux가 실질적으로 유용한 상황은 명확합니다.
이런 상황이면 cmux가 맞습니다:
- 에이전트 2개 이상을 동시에 돌리는 게 일상화된 경우
- 에이전트가 수십 분씩 백그라운드에서 작업하는 경우
- 프런트엔드 에이전트 작업에서 결과를 빠르게 시각적으로 확인해야 하는 경우
- macOS 메인 개발 환경인 경우
- Ghostty를 이미 쓰고 있어서 마이그레이션 비용을 줄이고 싶은 경우
이런 상황이면 다른 도구가 나을 수 있습니다:
- 에이전트 없이 순수 코딩만 하는 경우 → 기존 터미널로 충분
- Linux나 원격 서버가 주 환경인 경우 → tmux 계열
- 에이전트를 주로 하나씩만 돌리는 경우 → 알림 링 장점이 줄어듦
- Windows 사용자 → 공식 지원 없음
핵심은 “에이전트 병렬 작업을 얼마나 자주 하느냐”입니다. 하루에 에이전트 1개를 순서대로 돌리는 경우라면 cmux가 주는 추가 편의가 크지 않습니다. 에이전트를 2개 이상 동시에 돌리고, 그러면서 다른 작업도 병행하는 상황이 일상이라면 알림 링 하나만으로도 쓸 가치가 있습니다.
FAQ
Q. cmux는 무료인가요?
오픈소스로 공개되어 있고 무료입니다. GitHub(manaflow-ai/cmux)에서 소스를 받거나 공식 사이트(cmux.com)에서 앱을 직접 받을 수 있습니다. 상업적 라이선스에 대한 별도 정책은 2026년 3월 기준 공개되어 있지 않습니다.
Q. M1/M2/M3 Mac에서 잘 동작하나요?
네, Apple Silicon 네이티브로 빌드되어 있습니다. ARM 최적화 바이너리를 제공합니다. Intel Mac도 지원되지만 Apple Silicon 기준으로 개발되고 있습니다.
Q. Claude Code 말고 다른 에이전트도 되나요?
됩니다. Codex, OpenCode, Gemini CLI, Kiro, Aider, Goose, Amp, Cline, Cursor Agent 등 터미널에서 실행되는 에이전트라면 모두 동작합니다. 알림 링도 표준 OSC 시퀀스(OSC 9/99/777)를 쓰는 에이전트면 자동으로 켜집니다. 에이전트 전용 설정이 따로 필요하지 않습니다.
Q. Ghostty를 이미 쓰고 있는데 cmux로 완전히 교체해야 하나요?
꼭 그럴 필요는 없습니다. Ghostty를 순수 터미널로 쓰면서 에이전트 병렬 작업이 필요한 세션만 cmux로 여는 방식으로 병행할 수 있습니다. 두 앱을 같이 설치해도 충돌하지 않습니다.
Q. Windows는 지원 예정이 있나요?
공식 로드맵에는 없습니다. AppKit(macOS) 기반이어서 Windows 포팅은 사실상 재작성 수준의 작업이 필요합니다. Windows에서 비슷한 니즈가 있다면 WSL2 환경에서 tmux+amux 조합을 대안으로 볼 수 있습니다.
Q. cmux가 무거워서 렌더링이 느려지지 않나요?
Ghostty 엔진을 쓰는 만큼 렌더링 성능 자체는 Ghostty와 동일합니다. 내장 브라우저(WebKit)가 추가 메모리를 씁니다. 에이전트 6~8개 동시 실행 시 RAM 사용량이 체감될 수 있습니다. M2 Pro 기준으로 에이전트 4~5개와 브라우저 1개 동시 사용 시 큰 문제는 없습니다.
Q. cmux-agent-mcp를 어떻게 Claude Code에 연결하나요?
.claude/mcp.json 파일에 cmux-agent-mcp 서버를 추가하면 됩니다. 구체적인 설정은 Glama의 cmux-agent-mcp 페이지에서 확인할 수 있습니다. 연결 후 Claude Code에서 cmux 워크스페이스 생성, 창 제어 같은 동작을 직접 실행할 수 있습니다.