cmux: 코딩 에이전트를 위한 터미널
Claude Code를 터미널에서 돌리다 보면 자연스럽게 여러 세션을 동시에 띄우게 됩니다. 하나는 프론트엔드 리팩토링을 시키고, 다른 하나는 API 테스트를 작성하게 하고, 또 다른 하나는 버그를 추적하게 하는 식이죠.
문제는 이 세션들을 관리하는 게 생각보다 귀찮다는 겁니다. Ghostty에서 분할 창을 여러 개 열어놓으면 어느 에이전트가 질문을 던지고 기다리는 중인지 눈으로 일일이 확인해야 해요. macOS 알림도 어떤 세션에서 온 건지 맥락이 부족하고요.
cmux는 이 문제를 해결하려고 만들어진 터미널입니다. Ghostty의 렌더링 엔진(libghostty)을 내장하면서도 AI 코딩 에이전트를 병렬로 관리하는 데 특화된 기능을 얹었어요. Swift와 AppKit으로 만든 네이티브 macOS 앱이라 Electron이나 Tauri 기반 도구보다 가볍고 빠릅니다. GitHub에서 AGPL 라이선스로 소스 코드가 공개되어 있고, 완전히 무료로 쓸 수 있습니다.
설치
Homebrew로 설치하는 게 가장 간편합니다.
$ brew tap manaflow-ai/cmux
$ brew install --cask cmux
또는 cmux 공식 사이트에서 DMG 파일을 다운로드해서 Applications 폴더에 드래그하면 됩니다. DMG로 설치하면 Sparkle 프레임워크를 통한 자동 업데이트가 지원돼요.
macOS 14.0 이상이 필요하고, Apple Silicon과 Intel Mac 모두 지원합니다.
CLI 설정
cmux를 터미널 앱으로만 쓸 수도 있지만, CLI를 통한 자동화가 이 도구의 진정한 강점입니다.
cmux 터미널 안에서는 cmux 명령이 바로 사용 가능한데, 외부 터미널에서도 쓰려면 심볼릭 링크를 만들어두면 편해요.
$ sudo ln -sf /Applications/cmux.app/Contents/MacOS/cmux-cli /usr/local/bin/cmux
이렇게 해두면 어디서든 cmux 명령으로 워크스페이스를 만들고, 패널을 분할하고, 알림을 보낼 수 있습니다.
Ghostty 설정 호환
cmux는 기존 Ghostty 설정 파일을 그대로 읽습니다.
~/.config/ghostty/config에 설정해둔 폰트, 테마, 색상이 cmux에서도 동일하게 적용돼요.
font-family = "Hack Nerd Font Mono"
font-size = 14
theme = catppuccin-mocha
Ghostty를 이미 쓰고 계신 분이라면 별도의 설정 없이 바로 익숙한 환경에서 시작할 수 있습니다. Ghostty를 안 쓰셨더라도 걱정 없어요. cmux의 기본 설정만으로도 충분히 깔끔합니다.
워크스페이스
cmux의 가장 큰 특징은 워크스페이스 개념입니다. tmux의 세션과 비슷하지만 GUI 기반이라 시각적으로 관리하기가 훨씬 편해요.
왼쪽 사이드바에 워크스페이스들이 세로 탭 형태로 나열되는데, 각 탭에는 단순한 이름만이 아니라 유용한 메타데이터가 표시됩니다. 현재 Git 브랜치, 연결된 PR 상태와 번호, 작업 디렉토리 경로, 리스닝 중인 포트, 그리고 가장 최근 알림 텍스트까지 한눈에 확인할 수 있어요.
워크스페이스를 만들고 관리하는 단축키는 이렇습니다.
⌘N— 새 워크스페이스 생성⌘1~⌘8— 번호로 워크스페이스 이동⌘⇧R— 워크스페이스 이름 변경⌘⇧W— 워크스페이스 닫기
프로젝트마다 워크스페이스를 하나씩 만들어두면 여러 프로젝트를 오가면서 작업하기 편합니다.
⌘1로 프론트엔드 프로젝트, ⌘2로 백엔드 프로젝트, ⌘3으로 인프라 작업으로 바로 전환하는 식이죠.
서피스와 패널
워크스페이스 안에서는 서피스(surface)와 패널(pane)로 화면을 구성합니다. 서피스는 브라우저의 탭과 비슷한 개념이고, 패널은 서피스 안에서 화면을 분할한 영역이에요.
서피스를 만들고 전환하는 단축키입니다.
⌘T— 새 서피스(탭) 생성⌘⇧]— 다음 서피스로 이동⌘⇧[— 이전 서피스로 이동⌘W— 서피스 닫기
패널을 분할하고 이동하는 단축키도 있습니다.
⌘D— 오른쪽으로 분할 (세로 분할)⌘⇧D— 아래로 분할 (가로 분할)⌥⌘←→↑↓— 패널 간 이동
tmux에서는 프리픽스 키(Ctrl+b)를 먼저 눌러야 하고, Zellij에서는 모드를 전환해야 하죠.
cmux는 macOS 네이티브 앱답게 ⌘ 기반 단축키로 통일되어 있어서 따로 외울 게 거의 없습니다.
⌘D로 분할, ⌘T로 탭 생성은 다른 macOS 앱에서도 익숙한 패턴이니까요.
알림 시스템
여러 AI 에이전트를 동시에 돌릴 때 가장 필요한 기능이 바로 알림입니다. Claude Code가 질문을 던지고 사용자 입력을 기다리고 있는데 다른 패널에서 작업 중이라 눈치를 못 챌 수 있거든요.
cmux는 여러 겹의 알림 시스템을 제공합니다. 에이전트가 입력을 기다리는 패널에는 파란색 링이 표시되고, 사이드바의 해당 워크스페이스 탭에도 읽지 않은 알림 뱃지가 붙어요. macOS 데스크톱 알림도 함께 뜨는데, 단순히 “터미널에서 알림”이 아니라 어떤 워크스페이스의 어떤 패널에서 발생한 건지 맥락을 같이 보여줍니다.
알림 관련 단축키도 간단합니다.
⌘I— 알림 패널 열기⌘⇧U— 가장 최근 읽지 않은 알림으로 이동
⌘⇧U가 특히 유용해요.
에이전트 5개를 돌리고 있을 때 어떤 패널에서 응답이 왔는지 찾으러 돌아다닐 필요 없이, 이 단축키 하나로 바로 해당 패널로 점프할 수 있습니다.
CLI로도 알림을 보낼 수 있어서 셸 스크립트에서 활용하기 좋습니다.
$ cmux notify --title "빌드 완료" --body "프론트엔드 빌드가 성공했습니다"
오래 걸리는 빌드나 테스트가 끝났을 때 알림을 띄우도록 스크립트를 작성해두면, 기다리는 시간에 다른 작업을 하다가도 놓치지 않을 수 있어요.
내장 브라우저
cmux에는 WebKit 기반 브라우저가 내장되어 있습니다. 터미널 패널 옆에 브라우저 패널을 나란히 띄울 수 있어요.
⌘⇧L
이 단축키를 누르면 현재 패널 옆에 브라우저가 열립니다. 개발 서버를 돌리면서 바로 옆에서 결과를 확인하거나, API 문서를 참조하면서 코드를 작성하는 워크플로우가 가능해지죠.
브라우저 내 단축키도 Safari와 동일합니다.
⌘L— 주소 바 포커스⌘[/⌘]— 뒤로/앞으로⌥⌘I— 개발자 도구 토글
단순히 웹 페이지를 보여주는 수준이 아니라, CLI를 통한 스크립팅도 지원합니다. 접근성 트리 스냅샷, 요소 클릭, 폼 입력, JavaScript 실행 같은 브라우저 자동화가 터미널에서 바로 되는 거예요. AI 에이전트가 개발 서버의 웹 페이지와 직접 상호작용할 수 있다는 뜻입니다.
CLI 자동화
cmux의 CLI는 터미널 환경을 프로그래밍 방식으로 제어할 수 있게 해줍니다. 워크스페이스 생성, 패널 분할, 텍스트 입력, 알림 전송 같은 조작을 전부 명령어로 할 수 있어요.
환경 변수로 현재 컨텍스트를 파악할 수 있습니다.
CMUX_WORKSPACE_ID— 현재 워크스페이스 IDCMUX_SURFACE_ID— 현재 서피스 IDCMUX_SOCKET_PATH— 소켓 통신 경로
실제 사용 예시를 보면 CLI의 활용도가 와닿을 거예요.
# 워크스페이스 목록 확인
$ cmux workspace list
# 새 워크스페이스 생성
$ cmux workspace create --name "backend"
# 패널을 오른쪽으로 분할
$ cmux pane split --direction right
# 특정 패널에 텍스트 전송
$ cmux pane send-keys --text "bun run dev"
# 터미널 출력 읽기
$ cmux pane read
이 명령어들을 조합하면 프로젝트별 개발 환경을 자동으로 세팅하는 스크립트를 만들 수 있습니다.
개발 환경 자동화 스크립트
매번 워크스페이스를 만들고 패널을 분할하고 명령어를 입력하는 건 번거롭죠. 셸 스크립트로 자동화해두면 한 번에 개발 환경이 준비됩니다.
#!/bin/bash
# 프로젝트용 워크스페이스 생성
cmux workspace create --name "my-project"
# 오른쪽에 패널 분할 — 개발 서버용
cmux pane split --direction right
# 왼쪽 패널에서 Claude Code 실행
cmux pane send-keys --text "claude"
# 오른쪽 패널에서 개발 서버 시작
cmux pane focus --direction right
cmux pane send-keys --text "bun run dev"
# 아래에 패널 하나 더 — 테스트 워쳐용
cmux pane split --direction down
cmux pane send-keys --text "bun run test --watch"
# 알림으로 환경 준비 완료 알림
cmux notify --title "개발 환경 준비 완료" --body "Claude Code + 개발 서버 + 테스트 워쳐가 실행 중입니다"
$ chmod +x dev-setup.sh
$ ./dev-setup.sh
이 스크립트를 실행하면 왼쪽에 Claude Code, 오른쪽 위에 개발 서버, 오른쪽 아래에 테스트 워쳐가 돌아가는 레이아웃이 한 번에 만들어집니다. 프로젝트마다 이런 스크립트를 하나씩 만들어두면 아침에 출근해서 스크립트 하나만 실행하면 바로 작업을 시작할 수 있어요.
멀티 에이전트 워크플로우
cmux가 가장 빛을 발하는 건 여러 AI 에이전트를 동시에 돌릴 때입니다.
실제로 어떤 식으로 쓸 수 있는지 시나리오를 하나 그려볼게요. 리팩토링 프로젝트를 진행한다고 가정하겠습니다.
워크스페이스 하나에 패널 세 개를 열어둡니다. 첫 번째 패널에서는 Claude Code로 API 엔드포인트를 리팩토링하고, 두 번째 패널에서는 다른 Claude Code 세션으로 테스트 코드를 업데이트하고, 세 번째 패널에서는 Codex나 다른 에이전트로 문서를 작성합니다.
세 에이전트가 각자 작업을 진행하다가 질문이 생기면 해당 패널에 파란색 링이 뜹니다.
사이드바 탭에도 읽지 않은 알림 수가 표시되고, ⌘⇧U를 누르면 가장 최근에 응답을 기다리는 패널로 바로 이동해요.
질문에 답하고 나면 다시 다른 패널로 넘어가서 진행 상황을 확인하면 됩니다.
tmux로도 비슷한 환경을 만들 수 있지만, 어떤 패널에서 에이전트가 기다리고 있는지를 시각적으로 알려주는 기능은 cmux만의 강점입니다. 터미널 멀티플렉서가 “여러 터미널을 한 화면에 보여주는 도구”였다면, cmux는 거기에 “AI 에이전트의 상태를 모니터링하는 대시보드” 역할을 더한 거예요.
세션 복원
cmux를 종료했다가 다시 켜면 이전 세션을 복원해줍니다. 윈도우와 워크스페이스 레이아웃, 각 패널의 작업 디렉토리, 터미널 스크롤백 버퍼, 브라우저의 URL과 네비게이션 히스토리가 복원 대상이에요.
다만 실행 중이던 프로세스(Claude Code 세션, vim, 개발 서버 등)까지 살려주지는 않습니다. 이건 tmux의 세션 유지와는 다른 부분이에요. tmux는 세션이 서버 프로세스로 백그라운드에서 돌아가기 때문에 터미널을 닫아도 프로세스가 살아있거든요. cmux는 레이아웃과 컨텍스트를 복원하는 방식이라, 프로세스 자체를 유지하지는 않습니다.
SSH 원격 서버에서 오래 걸리는 작업을 돌려놓고 연결을 끊었다 다시 붙어야 하는 상황이라면 여전히 tmux가 맞는 선택입니다. cmux는 로컬 개발 환경에서 AI 에이전트를 관리하는 데 특화된 도구라고 보면 됩니다.
tmux, Zellij과 뭐가 다른가요?
터미널 멀티플렉서로 tmux와 Zellij를 이미 잘 쓰고 계신 분이라면 “또 터미널이야?” 할 수 있겠죠. 세 도구의 성격이 꽤 다릅니다.
tmux는 원격 서버 작업의 필수 도구입니다. SSH 연결이 끊어져도 세션이 살아있는 게 핵심이에요. 거의 모든 리눅스 서버에 설치되어 있고, 설정의 자유도가 가장 높습니다. 대신 프리픽스 키 기반 인터페이스라 진입 장벽이 좀 있죠.
Zellij는 tmux의 학습 곡선을 낮춘 차세대 멀티플렉서입니다. 화면 하단 상태바에 단축키가 항상 표시되어서 외울 게 없고, Rust로 만들어 빠릅니다. KDL 형식의 레이아웃 파일로 복잡한 환경도 선언적으로 정의할 수 있어요.
cmux는 이 둘과 목적 자체가 좀 다릅니다. 터미널 안에서 돌아가는 프로그램이 아니라 독립된 macOS 앱이에요. AI 에이전트를 여러 개 동시에 돌리면서 어떤 에이전트가 응답을 기다리는지 한눈에 파악하는 게 주요 사용 사례입니다. 내장 브라우저, 스크립터블 API, 알림 시스템 같은 기능은 tmux나 Zellij에는 없는 것들이고요.
정리하면, 원격 서버 작업에는 tmux, 터미널 멀티플렉서 입문에는 Zellij, AI 에이전트 병렬 관리에는 cmux가 각자의 영역에서 강점이 있습니다. 물론 cmux 안에서 tmux 세션을 열 수도 있으니 꼭 하나만 골라야 하는 건 아닙니다.
마치며
cmux는 AI 코딩 에이전트 시대에 맞춰 터미널의 역할을 다시 정의한 도구입니다. 단순히 명령어를 입력하고 출력을 보는 공간이 아니라, 여러 에이전트를 동시에 관리하는 통합 환경으로 터미널을 확장했어요.
Ghostty의 GPU 가속 렌더링 위에 워크스페이스, 알림, 내장 브라우저, CLI 자동화를 얹어서 AI 에이전트와 함께 일하는 개발자의 워크플로우에 딱 맞는 도구가 됐습니다.
macOS 전용이고 프로세스 유지는 안 되니까 모든 상황에서 tmux를 대체할 수는 없지만, 로컬에서 Claude Code나 Codex 같은 에이전트를 적극적으로 활용하는 분이라면 한번 써보시길 추천합니다. 개발 환경이 확실히 정돈되는 느낌을 받으실 거예요.
더 자세한 정보는 GitHub 저장소에서 확인할 수 있습니다.
This work is licensed under
CC BY 4.0