cmux: AI 코딩 에이전트를 위해 설계된, Ghostty 기반의 네이티브 macOS 터미널 앱

cmux 소개

AI 기반 코딩 에이전트를 활발히 사용하는 개발자라면 한 번쯤 이런 상황을 경험해본 적이 있을 것입니다. Claude Code나 Codex 같은 에이전트를 여러 세션 병렬로 실행하다 보면, 어떤 에이전트가 언제 입력을 기다리는지 파악하기 어렵고, macOS의 네이티브 알림은 항상 "Claude is waiting for your input"이라는 동일한 문구만 표시해 문맥을 전혀 알 수 없습니다. 탭이 많아질수록 탭 제목조차 읽기 어렵고, 스플릿 화면이 늘어날수록 상황 파악은 더 복잡해집니다. cmux는 바로 이 문제를 해결하기 위해 탄생한 도구입니다.

cmuxGhostty를 기반으로 한 네이티브 macOS 터미널 앱으로, AI 코딩 에이전트 워크플로우에 특화된 사이드바와 알림 시스템을 제공합니다. manaflow.ai 팀의 개발자가 여러 개의 Claude Code와 Codex 세션을 병렬 실행하면서 직접 느낀 불편함을 해소하기 위해 제작한 도구로, Electron이나 Tauri 기반의 기존 AI 코딩 오케스트레이터가 가진 성능 문제를 피하고자 Swift와 AppKit을 사용해 완전한 네이티브 앱으로 구현되었습니다. 덕분에 빠른 시작 속도와 낮은 메모리 사용량을 자랑하며, Ghostty 설정 파일(~/.config/ghostty/config)의 테마, 폰트, 색상을 그대로 읽어들여 기존 Ghostty 사용자라면 추가 설정 없이 바로 사용할 수 있습니다.

기존에 AI 코딩 에이전트를 사용하는 방식은 크게 두 가지로 나뉩니다. 하나는 Ghostty나 iTerm2 같은 일반 터미널에서 스플릿 화면을 나눠 여러 에이전트를 실행하는 방식이고, 다른 하나는 Cursor, Windsurf 같은 GUI 기반 AI IDE를 사용하는 방식입니다. 전자는 단순하지만 에이전트 상태 추적이 어렵고, 후자는 특정 워크플로우에 종속되는 단점이 있습니다.

cmux는 두 방식의 중간 지점을 지향합니다. 터미널 기반이어서 워크플로우 자유도를 그대로 유지하면서도, AI 에이전트 특화 기능(알림 시스템, 에이전트 상태 표시, 인앱 브라우저)을 추가로 제공합니다. 또한 일반적인 GUI 오케스트레이터들과 달리 Electron이나 Tauri를 사용하지 않고 Swift/AppKit으로 네이티브하게 구현되어 성능 면에서도 우수합니다.

cmux의 주요 기능

알림 링 (Notification Rings)

cmux의 핵심 기능 중 하나는 에이전트 상태를 시각적으로 즉시 파악할 수 있는 알림 링 시스템입니다. 에이전트가 사용자 입력을 기다리는 상태가 되면, 해당 터미널 창(pane) 주위에 파란색 링이 나타나고, 사이드바의 해당 탭이 밝게 강조됩니다. 이를 통해 여러 에이전트를 병렬 실행하더라도 어느 에이전트가 대기 중인지 즉각적으로 확인할 수 있습니다. 알림은 터미널 시퀀스(OSC 9/99/777)를 기반으로 감지되며, cmux notify CLI 명령으로 Claude Code 등의 에이전트 훅에 연결할 수 있습니다.

알림 패널 (Notification Panel)

알림 패널은 현재 미확인 알림을 한눈에 모아 보여주는 기능입니다. 사이드바에서 알림 배지를 통해 몇 개의 에이전트가 대기 중인지 바로 확인할 수 있으며, Cmd+Shift+U 단축키로 가장 최근의 미확인 알림이 있는 창으로 즉시 이동할 수 있습니다. 이 기능은 여러 세션을 동시에 관리하는 개발자에게 특히 유용하며, 응답 지연을 최소화해 에이전트 활용 효율을 높여줍니다.

인앱 브라우저 (In-app Browser)

cmux에는 터미널 옆에 브라우저 창을 분할 배치할 수 있는 인앱 브라우저가 내장되어 있습니다. 이 브라우저는 agent-browser 프로젝트에서 포팅한 스크립터블 API를 제공하여, 에이전트가 접근성 트리 스냅샷 조회, 요소 참조 획득, 클릭, 폼 입력, JavaScript 실행 등의 작업을 수행할 수 있습니다. 예를 들어, Claude Code가 개발 서버와 직접 상호작용해야 하는 경우 터미널 옆에 브라우저를 분할하고 에이전트가 직접 작업할 수 있습니다.

수직 + 수평 탭 (Vertical + Horizontal Tabs)

cmux의 사이드바는 각 워크스페이스와 탭에 대해 다음 정보를 표시합니다.

  • 현재 git 브랜치
  • 연결된 PR 상태 및 번호
  • 현재 작업 디렉토리
  • 리스닝 중인 포트
  • 최근 알림 텍스트

수직 탭과 수평 탭 모두 지원하며, 창을 가로 및 세로로 자유롭게 분할할 수 있습니다. 탭이 많아지더라도 사이드바를 통해 각 탭의 상태를 한눈에 파악할 수 있어 멀티 에이전트 환경에서 특히 효과적입니다.

┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ Sidebar  │ │ Workspace "dev"                     │ │
│ │          │ │                                     │ │
│ │          │ │ ┌───────────────┬─────────────────┐ │ │
│ │ > dev    │ │ │ Pane 1        │ Pane 2          │ │ │
│ │   server │ │ │ [S1] [S2]     │ [S1]            │ │ │
│ │   logs   │ │ │               │                 │ │ │
│ │          │ │ │  Terminal     │  Terminal       │ │ │
│ │          │ │ │               │                 │ │ │
│ │          │ │ └───────────────┴─────────────────┘ │ │
│ └──────────┘ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

스크립터블 CLI 및 소켓 API

cmux는 터미널을 완전히 자동화할 수 있는 CLI와 소켓 API를 제공합니다. 이를 통해 다음 작업들을 프로그래밍 방식으로 제어할 수 있습니다.

  • 워크스페이스 및 탭 생성
  • 창 분할
  • 키 입력 전송
  • 브라우저 URL 열기

이 스크립터블 인터페이스를 활용하면 개발자가 자신만의 에이전트 워크플로우를 구축할 수 있으며, cmux가 지향하는 "primitive, not a solution" 철학과도 일치합니다.

cmux 설치 방법

DMG로 설치 (권장)

GitHub 릴리즈 페이지에서 최신 DMG 파일을 다운로드하여 설치할 수 있습니다.

cmux 다운로드

.dmg 파일을 열고 cmux를 Applications 폴더로 드래그하면 설치가 완료됩니다. cmux는 Sparkle을 통해 자동 업데이트를 지원하므로 최초 설치 후 업데이트를 따로 관리할 필요가 없습니다.

Homebrew로 설치

brew tap manaflow-ai/cmux
brew install --cask cmux

업데이트 시:

brew upgrade --cask cmux

cmux의 주요 키보드 단축키

cmux는 직관적인 키보드 단축키를 제공합니다. 주요 단축키는 다음과 같습니다.

워크스페이스:

단축키 동작
⌘ N 새 워크스페이스
⌘ 1–8 워크스페이스 1–8로 이동
⌘ ⇧ W 워크스페이스 닫기
⌘ ⇧ R 워크스페이스 이름 변경
⌘ B 사이드바 토글

분할 화면:

단축키 동작
⌘ D 오른쪽으로 분할
⌘ ⇧ D 아래로 분할
⌥ ⌘ ← → ↑ ↓ 방향키로 창 포커스 이동

알림:

단축키 동작
⌘ I 알림 패널 표시
⌘ ⇧ U 최근 미확인 알림으로 이동

브라우저:

단축키 동작
⌘ ⇧ L 브라우저를 분할로 열기
⌘ L 주소 표시줄 포커스

세션 복원 동작

cmux는 재시작 시 다음 정보를 복원합니다.

  • 윈도우/워크스페이스/창 레이아웃
  • 작업 디렉토리
  • 터미널 스크롤백 (최선 노력)
  • 브라우저 URL 및 탐색 기록

다만, 터미널 앱 내의 실행 중인 프로세스 상태(Claude Code, tmux, vim 세션 등)는 현재 복원되지 않습니다. 이는 향후 업데이트에서 개선될 예정입니다.

"cmux의 선(禅)" — 설계 철학

cmux는 특정 워크플로우를 강요하지 않습니다. 개발자에게 터미널, 브라우저, 알림, 워크스페이스, 분할, 탭, CLI를 제공하고, 그 이후는 개발자 몫입니다. 이를 "primitive, not a solution"이라는 철학으로 표현합니다.

AI 에이전트와 함께 작업하는 최적의 방법은 아직 누구도 완전히 파악하지 못했습니다. 폐쇄적인 제품을 만드는 팀도 마찬가지입니다. 자신의 코드베이스를 가장 잘 아는 개발자들이 조합 가능한 기본 요소들을 가지고 각자의 효율적인 워크플로우를 스스로 발견하는 것이 가장 빠른 길이라는 믿음이 cmux의 개발 철학의 핵심입니다.

라이선스

cmux 프로젝트는 듀얼라이선스로 제공되어 있습니다. 일반적인 오픈소스 사용의 경우 GNU AGPL(Affero General Public License) v3.0으로 공개 및 배포되고 있습니다. 만약 AGPL 라이선스를 적용할 수 없는 조직이라면 별도의 상업적 라이선스 구매가 가능합니다. 상업적 라이선스 구매는 founders@manaflow.com 으로 연락해주세요.

:house: cmux 공식 홈페이지

:books: cmux 문서 사이트

:github: cmux 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: