본문 바로가기
  • AI 시대에 적응하는 현대인을 위한 지식 공간
  • AI를 위한 데이터를 과학으로 역어본다
AI 코딩

cmux - AI 코딩 에이전트 시대의 새로운 터미널

by 피크나인 2026. 3. 22.

2026년 현재, AI 코딩 에이전트는 더 이상 실험적 도구가 아닙니다. Claude Code, OpenAI Codex, Gemini CLI, Aider 같은 도구들이 개발자의 일상 속에 깊이 자리 잡았고, 하나의 프로젝트에서 여러 에이전트를 동시에 실행하는 것이 흔한 작업 방식이 되었습니다. 그런데 여기서 한 가지 문제가 발생합니다. 기존의 터미널 환경은 이러한 멀티 에이전트 워크플로우를 위해 설계되지 않았다는 것입니다. 여러 개의 Claude Code 세션과 Codex 세션을 동시에 실행하면, 어떤 에이전트가 입력을 기다리고 있는지, 어떤 작업이 완료되었는지, 어떤 세션에서 오류가 발생했는지를 파악하기 위해 일일이 패널을 확인해야 합니다.

 

cmux는 바로 이 문제를 해결하기 위해 탄생한 macOS 네이티브 터미널 애플리케이션입니다. Ghostty의 고성능 렌더링 엔진인 libghostty 위에 구축되었으며, 수직 탭, 알림 링, 내장 브라우저, 소켓 API 등 AI 에이전트 시대에 필요한 기능들을 갖추고 있습니다.

 

이 글에서는 cmux가 무엇인지, 기존 터미널 도구와 어떻게 다른지, 그리고 실제로 설치하고 활용하는 방법까지 단계별로 안내해 드리겠습니다. AI 코딩 에이전트를 본격적으로 활용하고 있는 개발자뿐만 아니라, 터미널 환경의 최신 흐름에 관심 있는 분들이라면 끝까지 읽어보시기를 권장합니다.

여러 AI 코딩 에이전트가 하나의 터미널에서 동시에 실행되며, 알림 링을 통해 각 에이전트의 상태를 실시간으로 보여주는 cmux의 모습
여러 AI 코딩 에이전트가 하나의 터미널에서 동시에 실행되며, 알림 링을 통해 각 에이전트의 상태를 실시간으로 보여주는 cmux의 모습



1. cmux란 무엇인가

cmux의 정의와 탄생 배경

cmux는 2026년 2월에 출시된 macOS 전용 네이티브 터미널 애플리케이션입니다. SwiftAppKit으로 개발되었으며, Ghostty의 터미널 렌더링 라이브러리인 libghostty를 기반으로 GPU 가속 렌더링을 제공합니다. 여기서 중요한 점은, cmux가 Ghostty의 포크(fork)가 아니라는 것입니다. cmux는 앱들이 웹 뷰를 렌더링하기 위해 WebKit을 사용하는 것과 같은 방식으로, 터미널 렌더링을 위해 libghostty를 라이브러리로 활용하는 완전히 독립적인 애플리케이션입니다. Ghostty는 범용 독립 터미널이고, cmux는 그 렌더링 엔진 위에 AI 에이전트 워크플로우에 특화된 기능들을 구축한 별도의 앱입니다.

 

cmux를 만든 개발자들은 그 탄생 배경을 다음과 같이 설명합니다. 여러 Claude Code와 Codex 세션을 병렬로 실행하던 중, Ghostty에서 분할 패널을 열어놓고 macOS 기본 알림에 의존했는데, 알림 내용이 항상 동일한 메시지뿐이었고 탭이 많아지면 어떤 에이전트가 입력을 기다리는지 알 수 없었다고 합니다. 여러 코딩 오케스트레이터를 시도해 봤지만 대부분 Electron이나 Tauri 기반이라 성능이 만족스럽지 않았고, GUI 오케스트레이터는 특정 워크플로우에 갇히게 만든다는 문제도 있었습니다. 이러한 불편함을 직접 해결하기 위해 Swift/AppKit 기반의 네이티브 앱으로 cmux를 개발하게 된 것입니다.

cmux의 핵심 철학

cmux 프로젝트의 공식 설명에서 반복적으로 등장하는 문구가 있습니다. "cmux는 솔루션이 아닌 프리미티브(Primitive)입니다." 이 말은 cmux가 특정한 워크플로우를 강제하지 않고, 터미널과 브라우저, 알림, 워크스페이스, 분할 패널, 탭, 그리고 이 모든 것을 제어하는 CLI라는 기본 구성 요소를 제공한다는 뜻입니다. 개발자가 이 프리미티브들을 조합하여 자신만의 최적 워크플로우를 구축하는 것이 cmux의 설계 철학입니다. 아직 아무도 AI 에이전트와 함께 작업하는 최선의 방법을 찾지 못했으며, 폐쇄적인 제품을 만드는 팀보다는 자신의 코드베이스에 가장 가까운 개발자가 먼저 그 방법을 찾아낼 것이라는 믿음이 cmux의 근간을 이루고 있습니다.

 

cmux는 AGPL-3.0 라이선스로 공개된 무료 오픈소스 프로젝트이며, 출시 한 달 만에 GitHub에서 7,700개 이상의 스타를 획득하며 빠르게 성장하고 있습니다. Sparkle을 통한 자동 업데이트를 지원하며, Nightly 빌드를 별도의 앱으로 제공하여 안정 버전과 함께 실행할 수도 있습니다.

[참고] libghostty는 Ghostty 터미널의 창시자인 Mitchell Hashimoto(HashiCorp 창립자)가 만든 터미널 에뮬레이션 라이브러리입니다. GPU 가속을 통해 빠르고 부드러운 터미널 렌더링을 제공하며, cmux 외에도 여러 프로젝트에서 활용되고 있습니다.

cmux 아키텍처
cmux 아키텍처

cmux 아키텍처 요약:

cmux (Swift/AppKit 네이티브 macOS 앱)
|
|-- libghostty -----> GPU 가속 터미널 렌더링
|-- WebKit ---------> 내장 브라우저 (WKWebView)
|-- Unix Socket ----> CLI/API를 통한 프로그래밍 제어
|-- OSC 시퀀스 ------> 에이전트 알림 시스템
|-- Sparkle --------> 자동 업데이트

2. cmux vs tmux - 무엇이 다른가

tmux  |  검증된 터미널 멀티플렉서의 강점

cmux를 이해하려면 먼저 tmux와의 차이를 명확히 알아야 합니다. tmux는 2007년부터 활발하게 유지보수되어 온 터미널 멀티플렉서(Terminal Multiplexer)로, 하나의 터미널 창 안에서 여러 세션을 관리할 수 있게 해주는 도구입니다. tmux의 가장 강력한 기능은 세션의 분리(detach)와 재연결(reattach)입니다. SSH 연결이 끊어져도 세션이 유지되므로, 원격 서버에서 장시간 실행되는 작업을 안전하게 관리할 수 있습니다. 이러한 특성 때문에 tmux는 서버 관리자와 원격 개발 환경에서 필수적인 도구로 자리 잡아 왔습니다.

 

tmux는 macOS, Linux, BSD, Solaris 등 거의 모든 Unix 계열 운영체제에서 동작하며, TPM(Tmux Plugin Manager)을 통한 플러그인 생태계와 tmuxinator, tmuxp 같은 YAML 기반 세션 관리자도 갖추고 있습니다. 오랜 역사만큼 커뮤니티가 크고, 문제 해결을 위한 자료도 풍부합니다. 하지만 tmux는 텍스트 기반 인터페이스에서 동작하기 때문에, 시각적 알림이나 GUI 요소를 제공하지 않으며, AI 에이전트와의 통합을 위한 별도의 메커니즘도 없습니다.

cmux  |  AI 에이전트 시대를 위한 새로운 접근

cmux는 tmux와는 근본적으로 다른 목적을 가진 도구입니다. tmux가 "어떤 터미널 안에서든 실행되는 터미널 멀티플렉서"라면, cmux는 "GUI를 갖춘 독립적인 macOS 네이티브 앱"입니다. cmux에는 수직 탭, 분할 패널, 내장 브라우저, 소켓 API가 모두 내장되어 있으며, 설정 파일이나 접두사 키(prefix key) 없이도 바로 사용할 수 있습니다. 가장 큰 차별점은 AI 에이전트 알림 시스템입니다. 에이전트가 입력을 기다리면 해당 패널 주변에 파란색 알림 링이 나타나고, 사이드바 탭이 강조되어 여러 패널과 탭 사이에서 어디로 주의를 기울여야 하는지 즉시 알 수 있습니다.

핵심 비교표

비교 항목 tmux cmux

비교항목 tmux cmux
플랫폼 macOS, Linux, BSD, Solaris 등 크로스 플랫폼 macOS 전용 (Apple Silicon 및 Intel)
유형 터미널 안에서 실행되는 멀티플렉서 독립적인 네이티브 macOS 터미널 앱
렌더링 텍스트 기반 libghostty 기반 GPU 가속
세션 관리 detach/reattach 지원 (원격 세션 유지) 레이아웃 복원만 지원 (프로세스 상태 미복원)
알림 없음 (외부 도구 필요) 알림 링, 사이드바 배지, macOS 알림 내장
브라우저 없음 WebKit 기반 내장 브라우저 (스크립팅 가능)
API tmux 명령어 체계 CLI + Unix Socket JSON-RPC
설정 .tmux.conf Ghostty config 호환 (~/.config/ghostty/config)
플러그인 TPM 기반 플러그인 생태계 CLI/Socket API를 통한 확장
AI 에이전트 통합 직접적 지원 없음 에이전트 알림, 훅, 브라우저 자동화 내장
라이선스 ISC (매우 자유로운 라이선스) AGPL-3.0
가격 무료 무료

둘은 공존할 수 있습니다

tmux와 cmux는 서로 대체 관계가 아니라 상호 보완 관계에 가깝습니다. 원격 서버에서 장시간 실행되는 작업을 관리해야 한다면 tmux의 detach/reattach 기능은 여전히 대체 불가능합니다. 반면, 로컬 macOS 환경에서 여러 AI 코딩 에이전트를 동시에 실행하며 시각적으로 관리해야 한다면 cmux가 훨씬 적합합니다. 실제로 많은 개발자들이 원격 서버에는 tmux를, 로컬 에이전트 작업에는 cmux를 함께 사용하는 방식을 채택하고 있습니다. cmux 내부에서 tmux를 실행하는 것도 물론 가능합니다.

flowchart TD
    subgraph 개발자["개발자의 작업 환경"]
        direction TB
        A["로컬 macOS 환경"] --> B["cmux"]
        C["원격 서버 환경"] --> D["tmux"]
    end
    
    subgraph cmux_영역["cmux 활용 영역"]
        B --> B1["AI 에이전트 병렬 실행"]
        B --> B2["에이전트 상태 알림 모니터링"]
        B --> B3["내장 브라우저로 웹앱 테스트"]
        B --> B4["CLI/Socket API 자동화"]
    end
    
    subgraph tmux_영역["tmux 활용 영역"]
        D --> D1["SSH 세션 유지"]
        D --> D2["원격 빌드 및 배포"]
        D --> D3["서버 모니터링"]
        D --> D4["세션 공유"]
    end
    
    B1 -.->|"cmux 안에서 tmux 실행 가능"| D
    
    style B fill:#4A90D9,stroke:#333,color:#fff
    style D fill:#6B7B8D,stroke:#333,color:#fff

3. cmux의 핵심 기능 살펴보기

cmux가 일반 터미널이나 tmux와 차별화되는 핵심 기능들을 하나씩 살펴보겠습니다. 각 기능은 독립적으로도 유용하지만, 서로 조합될 때 AI 에이전트 워크플로우에서 진정한 시너지를 발휘합니다.

수직 탭과 사이드바  |  Vertical Tabs and Sidebar

cmux의 왼쪽에는 수직 탭 형태의 사이드바가 위치합니다. 이 사이드바는 단순한 탭 목록이 아니라, 각 워크스페이스의 핵심 정보를 한눈에 보여주는 대시보드 역할을 합니다. 각 탭에는 현재 작업 중인 Git 브랜치 이름, 연결된 Pull Request의 상태와 번호, 작업 디렉토리 경로, 수신 대기 중인 포트 번호, 그리고 해당 워크스페이스의 최근 알림 텍스트가 표시됩니다. 이 정보들이 실시간으로 업데이트되기 때문에, 여러 프로젝트를 동시에 진행하더라도 각 프로젝트의 현재 상태를 사이드바만으로 파악할 수 있습니다.

 

수직 탭 방식은 최근 Firefox 등의 웹 브라우저에서 인기를 끌고 있는 UI 패턴인데, cmux는 이를 터미널에 도입한 것입니다. 기존 터미널의 수평 탭은 탭이 많아지면 제목이 잘리거나 스크롤이 필요해지는 반면, 수직 탭은 더 많은 텍스트 정보를 표시할 수 있어 여러 워크스페이스를 관리하기에 훨씬 효율적입니다. 특히 AI 에이전트를 여러 개 실행하는 환경에서는 각 에이전트의 상태를 빠르게 파악하는 것이 중요하므로, 수직 탭의 장점이 더욱 두드러집니다.

분할 패널과 UI 계층 구조  |  Split Panes and UI Architecture

cmux는 수평 분할(Cmd+Shift+D)과 수직 분할(Cmd+D)을 모두 지원하며, 하나의 워크스페이스 안에서 여러 개의 패널을 자유롭게 배치할 수 있습니다. 여기서 cmux의 UI 계층 구조를 이해하는 것이 중요합니다. cmux는 Window(macOS 창) > Workspace(사이드바의 탭 항목) > Pane(분할된 영역) > Surface(패널 안의 터미널 또는 브라우저 세션)라는 4단계 계층 구조로 구성되어 있습니다. 이 구조 덕분에 하나의 윈도우 안에서 여러 워크스페이스를 만들고, 각 워크스페이스에서 패널을 분할하며, 각 패널 안에서 터미널 세션이나 브라우저 세션을 독립적으로 실행할 수 있습니다.

 

각 서피스(Surface)에는 고유한 참조 ID(예: surface:4)가 부여되며, 이 ID를 통해 CLI나 소켓 API에서 특정 서피스에 명령을 보내거나 화면 내용을 읽을 수 있습니다. 이러한 프로그래밍 가능한 구조가 cmux를 단순한 GUI 터미널이 아닌, AI 에이전트가 제어할 수 있는 자동화 플랫폼으로 만들어 줍니다.

알림 시스템  |  Notification System

cmux의 알림 시스템은 이 도구를 다른 터미널과 가장 뚜렷하게 구분 짓는 기능입니다. AI 코딩 에이전트를 여러 개 동시에 실행할 때 가장 큰 불편함은, 어떤 에이전트가 사용자의 입력을 기다리고 있는지 알기 어렵다는 점입니다. cmux는 이 문제를 다층적 알림 시스템으로 해결합니다. 에이전트가 사용자의 입력을 기다리면 해당 패널 주변에 파란색 알림 링(ring)이 나타나고, 작업이 완료되면 녹색, 경고 상황에서는 노란색, 오류 발생 시에는 빨간색 링이 표시됩니다. 동시에 사이드바 탭에도 읽지 않은 알림 배지가 나타나며, 알림 팝오버와 macOS 데스크톱 알림도 함께 전송됩니다.

 

이 알림 시스템은 두 가지 방식으로 작동합니다.

  • 첫째, 표준 터미널 이스케이프 시퀀스인 OSC 9, OSC 99, OSC 777을 자동으로 감지합니다. 이는 별도의 설정 없이도 대부분의 터미널 기반 도구와 호환된다는 뜻입니다.
  • 둘째, cmux CLI의 cmux notify 명령어를 통해 커스텀 알림을 직접 발생시킬 수 있습니다. 이를 Claude Code의 훅(Hook) 시스템과 연결하면, 에이전트의 작업 완료, 입력 대기, 오류 발생 등의 이벤트를 정밀하게 모니터링할 수 있습니다.

Cmd+Shift+U 단축키를 누르면 가장 최근의 읽지 않은 알림으로 즉시 이동할 수 있어, 여러 에이전트 세션 사이를 빠르게 전환하는 것이 가능합니다.

# cmux CLI를 통한 알림 발생 예시
cmux notify --title "빌드 완료" --body "프로젝트 배포 준비 완료"
cmux notify --title "Claude Code" --subtitle "입력 대기" --body "에이전트가 사용자 입력을 기다리고 있습니다"

# OSC 777 (RXVT 프로토콜)을 통한 알림
printf '\e]777;notify;빌드 알림;컴파일이 완료되었습니다\a'

내장 브라우저  |  Embedded Browser

cmux에는 WebKit(WKWebView) 기반의 내장 브라우저가 포함되어 있습니다. 이 브라우저는 단순히 웹 페이지를 보여주는 것이 아니라, CLI를 통해 프로그래밍 방식으로 제어할 수 있는 스크립팅 가능한 브라우저입니다. agent-browser 프로젝트에서 포팅된 API를 제공하며, 접근성 트리(Accessibility Tree) 스냅샷 촬영, 요소 참조를 통한 클릭, 폼 입력, JavaScript 실행 등이 모두 가능합니다.

 

이 기능이 특히 유용한 시나리오는 웹 애플리케이션을 개발하면서 AI 에이전트를 사용하는 경우입니다. 터미널 패널 옆에 브라우저 패널을 분할하여 개발 서버(예: localhost:3000)를 띄운 후, Claude Code 같은 에이전트가 코드를 수정할 때마다 브라우저를 통해 결과를 직접 확인하고 상호작용할 수 있습니다. 브라우저가 별도의 앱이 아닌 같은 워크스페이스 안에 있으므로, Alt+Tab으로 앱을 전환하는 불편함 없이 개발과 테스트를 하나의 화면에서 수행할 수 있습니다.

# 브라우저 패널 열기 및 제어
cmux browser open https://localhost:3000
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux browser surface:7 click "button[type='submit']"
cmux browser surface:7 fill "input[name='email']" "test@example.com"

CLI와 소켓 API  |  CLI and Socket API

cmux의 모든 기능은 CLI(Command Line Interface)와 Unix 도메인 소켓을 통해 프로그래밍 방식으로 제어할 수 있습니다. 이것이 cmux를 단순한 GUI 터미널이 아닌 "AI 에이전트를 위한 프로그래밍 가능한 로컬 제어 플레인(Control Plane)"으로 만들어 주는 핵심 요소입니다. CLI 명령어와 소켓 API는 동일한 기능을 제공하므로, 사람이 직접 명령어를 입력하거나 스크립트에서 자동화하거나 AI 에이전트가 제어하는 것이 모두 같은 인터페이스로 가능합니다.

 

Unix 도메인 소켓은 같은 머신에서 실행되는 프로그램들 간에 매우 낮은 지연 시간으로 데이터를 교환할 수 있는 IPC(Inter-Process Communication, 프로세스 간 통신) 메커니즘입니다. cmux의 CLI가 명령어를 실행하면, 실제로는 JSON 형식의 메시지를 Unix 소켓을 통해 cmux 앱에 전송하고, cmux 앱이 이를 수신하여 UI를 업데이트합니다. 이 구조 덕분에 에이전트가 실행하는 CLI 명령이 거의 즉시 GUI에 반영되는 반응성 높은 경험을 제공합니다.

# CLI를 통한 워크스페이스 관리
cmux list-workspaces --json
cmux new-workspace
cmux rename-workspace "feature-auth"

# 소켓을 통한 직접 통신 (JSON-RPC)
SOCK="$HOME/Library/Application Support/cmux/cmux.sock"
printf '{"id":"1","method":"workspace.list","params":{}}\n' | nc -U "$SOCK"

# 서피스에 명령 전송 및 화면 읽기
cmux send --surface surface:4 "npm run dev\n"
cmux read-screen --surface surface:4
cmux send-key --surface surface:4 enter

[참고] cmux 터미널 내부에서는 CMUX_WORKSPACE_ID, CMUX_SURFACE_ID 같은 환경 변수가 자동으로 설정되므로 CLI가 즉시 동작합니다. cmux 외부의 셸에서 CLI를 사용하려면, 별도의 심볼릭 링크 설정이 필요합니다. 이에 대해서는 설치 섹션에서 자세히 다루겠습니다.

cmux의 핵심 기능 - 수직 탭 사이드바, 알림 링, 내장 브라우저가 하나의 워크스페이스에서 조화롭게 동작하는 모습


4. cmux 설치 및 초기 설정

시스템 요구 사항

cmux를 설치하기 전에 먼저 시스템 요구 사항을 확인해야 합니다. cmux는 macOS 14(Sonoma) 이상을 요구하며, Apple Silicon(M1, M2, M3, M4) 및 Intel Mac 모두를 지원합니다. macOS 전용 네이티브 앱이므로 Windows나 Linux에서는 사용할 수 없습니다. 다만, cmux-windows라는 별도의 커뮤니티 프로젝트가 Windows용 대안을 제공하고 있으며, 이에 대해서는 경쟁 도구 비교 섹션에서 다루겠습니다.

 

cmux는 기존 Ghostty 설정 파일(~/.config/ghostty/config)을 그대로 읽어올 수 있습니다. 이미 Ghostty를 사용하고 있다면 테마, 폰트, 색상, 키 바인딩 설정을 별도로 옮기지 않아도 됩니다. Ghostty를 사용하지 않는 경우에도 cmux는 기본 설정으로 바로 사용 가능하며, 나중에 Ghostty 설정 파일을 생성하여 커스터마이징할 수 있습니다.

설치 방법

cmux를 설치하는 방법은 크게 두 가지입니다. Homebrew를 통한 설치와 DMG 파일 직접 다운로드입니다. 두 방법 모두 설치 후 Sparkle을 통해 자동 업데이트가 지원되므로, 최초 설치 이후에는 별도의 업데이트 작업이 필요하지 않습니다.

방법 1  |   Homebrew를 통한 설치 (권장)

Homebrew가 설치되어 있는 macOS 환경에서는 다음 두 줄의 명령어로 cmux를 설치할 수 있습니다. 공식 Homebrew tap을 추가한 후 cask로 설치하는 방식입니다.

# cmux 공식 Homebrew tap 추가 및 설치
brew tap manaflow-ai/cmux
brew install --cask cmux

 

또는 tap을 별도로 추가하지 않고 한 줄로 설치하는 것도 가능합니다.

# 한 줄로 설치
brew install --cask manaflow-ai/cmux/cmux

방법 2  |  DMG 직접 다운로드

cmux 공식 웹사이트(https://cmux.com/) 또는 GitHub 릴리즈 페이지에서 최신 DMG 파일을 다운로드한 후, DMG를 열고 cmux를 응용 프로그램(Applications) 폴더로 드래그하면 됩니다. 처음 실행할 때 macOS에서 확인되지 않은 개발자의 앱이라는 팝업이 나타날 수 있으며, "열기(Open)"를 클릭하면 정상적으로 실행됩니다.

초기 설정

cmux를 설치하고 처음 실행하면, cmux CLI 도구가 자동으로 설치됩니다. cmux 터미널 내부에서는 CLI가 즉시 동작하지만, 외부 셸(예: 기본 Terminal.app이나 iTerm2)에서 cmux CLI를 사용하려면 심볼릭 링크를 생성해야 합니다.

# 외부 셸에서 cmux CLI를 사용하기 위한 심볼릭 링크 생성
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux

# cmux CLI가 정상 설치되었는지 확인
cmux --help

 

cmux 내부에서 현재 환경이 cmux인지 확인하려면, 다음과 같이 환경 변수를 체크할 수 있습니다.

# cmux 환경 확인
[ -n "${CMUX_WORKSPACE_ID:-}" ] && echo "cmux 내부에서 실행 중입니다"

# cmux CLI 사용 가능 여부 확인
command -v cmux &>/dev/null && echo "cmux CLI를 사용할 수 있습니다"

소켓 접근 모드 설정

cmux의 소켓 API는 보안을 위해 접근 모드를 설정할 수 있습니다. 이 설정은 cmux 앱의 Settings 메뉴에서 변경합니다. 기본값은 "cmux processes only"로, cmux 프로세스에서만 소켓에 접근할 수 있습니다. AI 에이전트가 소켓을 직접 사용해야 하는 경우에는 "Allow all"로 변경할 수 있으며, 보안이 민감한 공유 머신 환경에서는 "Off"로 설정하여 소켓 접근을 완전히 차단할 수도 있습니다.

환경설정 UI에서 Socket Control Mode를 변경할 수 있습니다.
환경설정 UI에서 Socket Control Mode를 변경할 수 있습니다.

cmux 소켓 접근 모드 (Settings에서 설정):

Off                  : 소켓 접근 완전 차단
cmux processes only  : cmux 프로세스에서만 접근 가능 (기본값)
Allow all            : 모든 프로세스에서 접근 가능

 

소켓이 정상적으로 사용 가능한지 확인하려면, 다음과 같이 소켓 파일의 존재 여부를 체크할 수 있습니다.

# 소켓 사용 가능 여부 확인
SOCK="${CMUX_SOCKET_PATH:-/tmp/cmux.sock}"
[ -S "$SOCK" ] && echo "소켓을 사용할 수 있습니다"

Ghostty 설정 활용

cmux는 Ghostty의 설정 파일을 그대로 읽어오므로, 기존 Ghostty 사용자라면 별도의 설정 작업 없이 자신에게 익숙한 테마와 폰트, 키 바인딩을 그대로 사용할 수 있습니다. Ghostty를 사용하지 않았더라도, 아래와 같이 기본 설정 파일을 생성하여 cmux의 외관을 커스터마이징할 수 있습니다.

# Ghostty 설정 디렉토리 및 파일 생성
mkdir -p ~/.config/ghostty
cat > ~/.config/ghostty/config << 'EOF'

# 폰트 설정
font-family = "JetBrains Mono"
font-size = 14

# 테마 설정
theme = catppuccin-mocha

# 창 설정
window-padding-x = 8
window-padding-y = 8

# 커서 설정
cursor-style = block
cursor-style-blink = true
EOF

[참고] cmux 고유의 단축키(워크스페이스, 분할, 브라우저, 알림 관련)는 cmux 앱의 Settings에서 별도로 설정할 수 있습니다. Ghostty 설정 파일에서 관리하는 것은 터미널 자체의 키 바인딩(복사, 붙여넣기, 탭 전환 등)입니다.


5. 실전 활용  |  Claude Code와 함께 사용하기

기본 워크플로우 구성

cmux의 진정한 가치는 AI 코딩 에이전트와 함께 사용할 때 드러납니다. 여기서는 가장 대표적인 에이전트인 Claude Code를 예시로, cmux에서 효율적인 개발 워크플로우를 구성하는 방법을 단계별로 안내하겠습니다. 먼저 프로젝트 작업을 위한 워크스페이스를 생성하고, 패널을 분할하여 에이전트 세션과 개발 도구를 배치합니다. 아래의 CLI 명령어를 참조하여 UI상에서 직접 아이콘을 선택하여 설정하거나 변경할 수 있습니다.

# 1단계: 새 워크스페이스 생성 및 이름 지정
cmux new-workspace
cmux rename-workspace "my-project"

# 2단계: 패널 분할 - 오른쪽에 새 터미널 패널 생성
cmux new-split right

# 3단계: 현재 워크스페이스의 서피스 구조 확인
cmux tree --json

# 4단계: 왼쪽 패널에서 Claude Code 실행
# (왼쪽 패널이 surface:1이라고 가정)
cmux send --surface surface:1 "claude\n"

# 5단계: 오른쪽 패널에서 개발 서버 실행
cmux send --surface surface:2 "npm run dev\n"

# 6단계: 하단에 브라우저 패널 추가 (선택 사항)
cmux new-split down
# 브라우저로 개발 서버 열기
cmux browser open https://localhost:3000

 

이렇게 구성하면 왼쪽에는 Claude Code 에이전트, 오른쪽에는 개발 서버 로그, 하단에는 웹 브라우저가 배치된 완전한 개발 환경이 하나의 워크스페이스 안에 구성됩니다. Claude Code가 입력을 기다리면 왼쪽 패널에 알림 링이 나타나므로, 다른 작업을 하다가도 즉시 알아챌 수 있습니다.

Claude Code 알림 훅(Hook) 연동

cmux와 Claude Code를 더 긴밀하게 연동하려면, Claude Code의 훅(Hook) 시스템을 활용하여 에이전트 이벤트 발생 시 cmux 알림을 자동으로 발생시킬 수 있습니다. 이를 위해 먼저 알림 스크립트를 생성하고, Claude Code 설정에 훅을 등록합니다.

알림 스크립트 생성

다음은 Claude Code의 이벤트를 감지하여 cmux 알림을 발생시키는 셸 스크립트입니다. 이 스크립트는 Claude Code의 Stop(작업 완료) 및 PostToolUse(도구 사용 후) 이벤트에 반응합니다.

# 알림 스크립트 생성
mkdir -p ~/.claude/hooks
cat > ~/.claude/hooks/cmux-notify.sh << 'SCRIPT'


#!/bin/bash
# cmux 환경이 아닌 경우 종료
[ -S /tmp/cmux.sock ] || exit 0

# Claude Code에서 전달된 이벤트 정보 읽기
EVENT=$(cat)
EVENT_TYPE=$(echo "$EVENT" | jq -r '.hook_event_name // "unknown"')
TOOL=$(echo "$EVENT" | jq -r '.tool_name // ""')

# 이벤트 유형에 따른 알림 발생
case "$EVENT_TYPE" in
  "Stop")
    cmux notify --title "Claude Code" --body "세션이 완료되었습니다"
    ;;
  "PostToolUse")
    [ "$TOOL" = "Task" ] && cmux notify --title "Claude Code" --body "에이전트 작업이 완료되었습니다"
    ;;
esac
SCRIPT

# 스크립트에 실행 권한 부여
chmod +x ~/.claude/hooks/cmux-notify.sh

Claude Code 설정에 훅 등록

생성한 스크립트를 Claude Code의 설정 파일에 훅으로 등록합니다. 이 설정은 ~/.claude/settings.json 파일에 추가하면 됩니다.

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/cmux-notify.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Task",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/cmux-notify.sh"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "permission_prompt|idle_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/cmux-notify.sh"
          }
        ]
      }
    ]
  }
}

설정을 저장한 후 Claude Code를 재시작하면, 에이전트가 작업을 완료하거나 입력을 기다릴 때 cmux의 알림 시스템을 통해 실시간으로 통보를 받을 수 있습니다.

멀티 에이전트 오케스트레이션

cmux의 가장 강력한 활용 사례 중 하나는 하나의 에이전트가 오케스트레이터(Orchestrator) 역할을 하면서 다른 에이전트들을 관리하는 멀티 에이전트 패턴입니다. 오케스트레이터 에이전트는 cmux CLI를 통해 새로운 워크스페이스를 생성하고, 각 워크스페이스에서 워커(Worker) 에이전트를 실행하며, read-screen 명령으로 워커의 진행 상황을 모니터링하고, 필요시 추가 지시를 전송할 수 있습니다.

# 오케스트레이터가 워커 워크스페이스를 생성하는 예시
cmux new-workspace
cmux rename-workspace "worker-auth"
cmux send "claude --prompt 'docs/auth.md 스펙에 따라 인증 미들웨어를 구현해 주세요'\n"
cmux send-key enter

# 두 번째 워커 워크스페이스 생성
cmux new-workspace
cmux rename-workspace "worker-test"
cmux send "claude --prompt '인증 라우트에 대한 통합 테스트를 작성해 주세요'\n"
cmux send-key enter

# 워커의 진행 상황 모니터링
cmux read-screen --workspace <WORKSPACE_ID>

# 특정 워커에게 추가 지시 전송
cmux send-surface <SURFACE_ID> "테스트에 에지 케이스도 추가해 주세요\n"
sequenceDiagram
    participant O as 오케스트레이터 에이전트
    participant C as cmux
    participant W1 as 워커 1 (인증)
    participant W2 as 워커 2 (테스트)
    
    O->>C: new-workspace "worker-auth"
    C->>W1: Claude Code 세션 시작
    O->>C: new-workspace "worker-test"
    C->>W2: Claude Code 세션 시작
    
    loop 모니터링 루프
        O->>C: read-screen (worker-auth)
        C-->>O: 워커 1 화면 내용 반환
        O->>C: read-screen (worker-test)
        C-->>O: 워커 2 화면 내용 반환
    end
    
    W1->>C: 알림 - "인증 구현 완료"
    C->>O: notify "워커 1 완료"
    
    O->>C: send-surface (worker-test) "인증 모듈 완성. 통합 테스트 진행"
    
    W2->>C: 알림 - "테스트 작성 완료"
    C->>O: notify "워커 2 완료"
    
    O->>O: 결과 통합 및 최종 검토

브라우저 자동화 통합

cmux의 내장 브라우저와 AI 에이전트를 결합하면, 코드 작성과 웹 테스트를 하나의 워크플로우로 통합할 수 있습니다. 에이전트가 코드를 수정한 후, 브라우저 명령을 통해 결과를 직접 확인하고 추가 수정 사항을 결정하는 피드백 루프를 구성할 수 있습니다. 이 과정에서 핵심이 되는 것은 "스냅샷 -> 액션 -> 검증" 패턴입니다.

# 1. 브라우저 열기 및 로딩 대기
cmux browser open https://localhost:3000
cmux browser surface:7 wait --load-state complete --timeout-ms 15000

# 2. 페이지 접근성 트리 스냅샷 (요소 참조 ID 획득)
cmux browser surface:7 snapshot --interactive

# 3. 스냅샷에서 획득한 요소 참조로 액션 수행
cmux browser surface:7 fill e11 "테스트 입력값"
cmux browser surface:7 click e5 --snapshot-after

# 4. 변경된 페이지 상태 재확인
cmux browser surface:7 snapshot --interactive

# 5. 페이지 텍스트 또는 URL 확인
cmux browser surface:7 get url
cmux browser surface:7 get text body

[참고] cmux의 내장 브라우저는 WKWebView 기반이므로, Chrome DevTools Protocol(CDP)에 의존하는 일부 고급 기능(예: 네트워크 감시, 퍼포먼스 프로파일링)은 지원되지 않습니다. 기본적인 페이지 탐색, 요소 상호작용, JavaScript 실행에 초점을 맞추고 있으며, 복잡한 브라우저 자동화가 필요한 경우에는 Playwright나 Puppeteer 같은 전용 도구와 병행하는 것이 좋습니다.


6. cmux 주요 CLI 명령어 치트시트

cmux CLI는 워크스페이스 관리, 패널 제어, 입출력, 알림, 사이드바 커스터마이징, 브라우저 제어까지 다양한 영역을 아우르는 명령어 체계를 갖추고 있습니다. 아래 표에 자주 사용하는 핵심 명령어들을 정리하였습니다.

워크스페이스 관리

명령어 설명
cmux list-workspaces 모든 워크스페이스 목록을 표시합니다. --json 플래그를 추가하면 JSON 형식으로 출력합니다.
cmux new-workspace 새로운 워크스페이스를 생성합니다. 사이드바에 새 탭이 추가됩니다.
cmux select-workspace <ID> 지정한 ID의 워크스페이스로 전환합니다.
cmux rename-workspace "<이름>" 현재 워크스페이스의 이름을 변경합니다.
cmux current-workspace 현재 활성화된 워크스페이스 정보를 반환합니다.

패널 및 서피스 관리

명령어 설명
cmux new-split <방향> 새 패널을 분할합니다. 방향은 right, down, left, up 중 선택합니다.
cmux tree --json 현재 워크스페이스의 전체 레이아웃 트리를 JSON으로 출력합니다. 서피스 참조(surface:N)를 확인할 때 사용합니다.
cmux focus-pane --pane <참조> 지정한 패널에 포커스를 이동합니다.
cmux identify --json 현재 컨텍스트(워크스페이스, 서피스 등) 정보를 반환합니다.

입출력 제어

명령어 설명
cmux send --surface <참조> "<텍스트>" 지정한 서피스에 텍스트를 입력합니다. \n을 포함하면 Enter가 전송됩니다.
cmux send-key --surface <참조> <키> 지정한 서피스에 특수 키를 전송합니다. enter, tab, escape, backspace 등을 사용할 수 있습니다.
cmux read-screen --surface <참조> 지정한 서피스의 현재 터미널 화면 내용을 텍스트로 반환합니다.

알림 및 사이드바

명령어 설명
cmux notify --title "<제목>" --body "<내용>" 커스텀 알림을 발생시킵니다. --subtitle 옵션으로 부제를 추가할 수 있습니다.
cmux list-notifications 모든 알림 목록을 표시합니다.
cmux clear-notifications 알림을 모두 지웁니다.
cmux set-status <ID> "<텍스트>" 사이드바에 상태 필(pill)을 표시합니다. --icon과 --color 옵션을 사용할 수 있습니다.
cmux set-progress <값> 사이드바에 진행률 바를 표시합니다. 값은 0.0에서 1.0 사이입니다. --label 옵션으로 레이블을 추가합니다.
cmux log "<메시지>" 사이드바에 로그 항목을 추가합니다. --level 옵션으로 info, success, warning, error를 지정합니다.

브라우저 제어

명령어 설명
cmux browser open <URL> 내장 브라우저에서 URL을 엽니다. --workspace로 대상 워크스페이스를 지정할 수 있습니다.
cmux browser <surface> snapshot --interactive 브라우저 페이지의 접근성 트리 스냅샷을 촬영합니다. 요소 참조 ID를 반환합니다.
cmux browser <surface> click <요소참조> 스냅샷에서 획득한 요소 참조를 클릭합니다.
cmux browser <surface> fill <요소참조> "<텍스트>" 입력 필드에 텍스트를 채웁니다.
cmux browser <surface> wait --load-state complete 페이지 로딩이 완료될 때까지 대기합니다. --timeout-ms로 타임아웃을 설정합니다.
cmux browser <surface> get url 현재 브라우저의 URL을 반환합니다.

소켓 API 직접 통신

CLI 명령어 대신 Unix 소켓을 통해 직접 JSON-RPC 요청을 보내는 것도 가능합니다. 스크립트나 프로그램에서 cmux를 자동화할 때 유용합니다.

# 소켓 경로
SOCK="$HOME/Library/Application Support/cmux/cmux.sock"

# 워크스페이스 목록 요청
printf '{"id":"1","method":"workspace.list","params":{}}\n' | nc -U "$SOCK"

# 새 워크스페이스 생성
printf '{"id":"2","method":"workspace.create","params":{}}\n' | nc -U "$SOCK"

# 사용 가능한 소켓 메서드 목록 확인
printf '{"id":"3","method":"system.listMethods","params":{}}\n' | nc -U "$SOCK"

7. cmux의 경쟁 도구와 비교

AI 코딩 에이전트의 급부상과 함께, 터미널 시장에서도 새로운 접근 방식을 가진 도구들이 등장하고 있습니다. cmux와 함께 고려할 만한 주요 도구들을 비교해 보겠습니다.

주요 터미널 도구 비교

항목 cmux Calyx Warp iTerm2 Ghostty
플랫폼 macOS 전용 macOS 26+ 전용 macOS, Linux, Windows macOS 전용 macOS, Linux
렌더링 엔진 libghostty (GPU 가속) libghostty (GPU 가속) Rust 기반 (GPU 가속) 자체 엔진 libghostty (GPU 가속)
AI 에이전트 통합 알림 링, 훅, CLI/소켓 API, 브라우저 MCP 기반 IPC, 브라우저 AI 명령 팔레트 없음 없음
내장 브라우저 WebKit (WKWebView) 스크립팅 가능 WebKit 스크립팅 가능 없음 없음 없음
라이선스 AGPL-3.0 MIT 프리미엄 (유료) GPL-2.0 MIT
세션 관리 레이아웃 복원만 지원 Git 소스 제어 뷰 내장 AI 기반 명령 제안 프로파일, 세션 복원 기본 탭/분할
고유 특징 에이전트 알림 링, 소켓 API Liquid Glass UI, MCP IPC AI 명령 자동완성 안정성, 풍부한 기능 고성능 렌더링

Calyx와의 비교

Calyx는 cmux와 마찬가지로 libghostty 기반의 macOS 네이티브 터미널이지만, 몇 가지 중요한 차이점이 있습니다. Calyx는 macOS 26의 Liquid Glass UI를 채택하여 시각적으로 세련된 외관을 제공하며, MIT 라이선스를 사용하여 기업 환경에서의 도입 장벽이 낮습니다. 또한 Calyx는 MCP(Model Context Protocol) 기반의 에이전트 간 통신 시스템을 내장하고 있어, cmux의 소켓 API와는 다른 방식으로 멀티 에이전트 협업을 지원합니다. 반면 cmux는 알림 링 시스템, 80개 이상의 브라우저 자동화 CLI 명령어, 그리고 더 성숙한 에이전트 통합 생태계를 갖추고 있습니다.

cmux-windows

cmux-windows는 cmux의 워크플로우에서 영감을 받아 Windows용으로 별도 개발된 프로젝트입니다. WPF와 ConPTY를 기반으로 구축되었으며, 워크스페이스, 분할 패널, OSC 알림, 명령어 기록 등 cmux의 핵심 개념들을 Windows 환경에 맞게 재구현하고 있습니다. 공식 cmux와는 별도의 프로젝트이므로 기능이나 업데이트 주기가 다를 수 있지만, Windows 환경에서 유사한 에이전트 워크플로우를 원하는 개발자에게 좋은 대안이 될 수 있습니다.


8. cmux 사용 시 알아두면 좋은 점

현재 제한 사항

cmux는 2026년 2월에 출시된 비교적 새로운 도구이므로, 몇 가지 알려진 제한 사항이 존재합니다. 가장 눈에 띄는 것은 세션 복원의 한계입니다. cmux를 재시작하면 앱 레이아웃과 메타데이터(워크스페이스 이름, 패널 배치 등)는 복원되지만, 터미널 앱 내부의 라이브 프로세스 상태는 복원되지 않습니다. 예를 들어, 활성 상태의 Claude Code 세션, tmux 세션, vim 편집기 등은 재시작 후 수동으로 다시 실행해야 합니다. 이는 향후 업데이트에서 개선될 것으로 예상됩니다.

 

또한 cmux는 macOS 전용이라는 점도 중요한 제한 사항입니다. Linux나 Windows에서 직접 사용할 수 없으며, 원격 서버의 세션을 유지하는 tmux의 detach/reattach 기능도 cmux에는 없습니다. 다만, cmux는 최근 원격 데몬(cmuxd-remote) 기능을 개발 중이며, SSH 리버스 포워딩을 통해 원격 서버의 cmux CLI를 로컬 앱과 연결하는 방식을 시도하고 있습니다.

소켓 샌드박스 이슈

일부 AI 에이전트는 보안을 위해 샌드박스(sandbox) 환경에서 명령을 실행합니다. 이 샌드박스가 cmux의 Unix 소켓 접근을 차단하는 경우가 있습니다. 소켓 연결 오류가 발생하면, 에이전트의 샌드박스 설정을 확인하고 필요 시 비활성화해야 할 수 있습니다. 이때 보안상의 의미를 충분히 이해한 후 진행하는 것이 좋습니다.

AGPL 라이선스 고려 사항

cmux는 AGPL-3.0 라이선스를 사용합니다. 이 라이선스는 소프트웨어를 네트워크 서비스로 제공하는 경우 소스코드를 공개해야 한다는 조건이 포함되어 있습니다. 개인 개발자가 로컬 환경에서 사용하는 데는 아무런 제약이 없지만, 기업 환경에서 cmux를 수정하여 사내 서비스로 제공하는 경우에는 라이선스 조건을 검토해야 합니다. 이러한 라이선스 제약이 걸리는 환경이라면, MIT 라이선스를 사용하는 Calyx 같은 대안을 고려할 수도 있습니다.

커뮤니티 및 지원

cmux는 GitHub Issues를 통한 버그 리포팅과 Discord 채널을 통한 커뮤니티 소통을 지원합니다. Nightly 빌드 관련 버그는 Discord의 #nightly-bugs 채널에서 보고할 수 있습니다. 프로젝트가 빠르게 성장하고 있는 만큼, 공식 문서(https://cmux.dev/docs)도 지속적으로 업데이트되고 있으므로 최신 정보는 공식 문서를 참고하는 것이 좋습니다.


9. AI 에이전트 시대의 터미널은 어디로 향하는가

cmux는 터미널이라는 도구가 AI 에이전트 시대에 어떻게 진화해야 하는지를 보여주는 선구적인 프로젝트입니다. 기존 터미널이 "사람이 명령어를 입력하고 결과를 확인하는 도구"였다면, cmux는 "사람과 AI 에이전트가 함께 작업하는 공유 워크스페이스"라는 새로운 패러다임을 제시합니다. 에이전트가 작업을 수행하는 동안 사람은 다른 일을 하고, 에이전트가 주의를 필요로 할 때만 돌아오는 비동기적 협업 모델이 cmux를 통해 자연스럽게 구현됩니다.

 

HashiCorp의 창립자이자 Ghostty의 제작자인 Mitchell Hashimoto가 cmux를 긍정적으로 언급한 것이나, Google DeepMind의 연구 디렉터인 Edward Grefenstette가 주말 내내 cmux를 사용하며 감탄했다는 반응은, 이 도구가 AI 개발 커뮤니티에서 실질적인 가치를 인정받고 있음을 보여줍니다. 출시 한 달 만에 GitHub 7,700개 이상의 스타를 획득한 성장세 역시, AI 에이전트 시대의 터미널에 대한 개발자들의 갈증이 얼마나 컸는지를 반증합니다.

 

cmux를 시작하려는 분들에게는 다음과 같은 단계를 추천합니다. 먼저 Homebrew로 cmux를 설치하고, 하나의 워크스페이스에서 Claude Code를 실행해 보는 것부터 시작하면 좋습니다. 알림 링과 사이드바 정보 표시에 익숙해지면, 패널 분할과 멀티 에이전트 실행으로 확장하고, CLI 명령어와 훅 시스템을 활용한 자동화까지 점진적으로 발전시켜 나갈 수 있습니다. cmux의 철학처럼, 최적의 워크플로우는 각자가 직접 구축하는 것이 가장 좋습니다.


참고 자료