cmux: AI 코딩 에이전트를 위한 세로형 탭 및 알림 기능이 포함된 Ghostty 기반 macOS 터미널
요약
cmux는 AI 코딩 에이전트 활용에 최적화된 Ghostty 기반의 macOS 전용 터미널입니다. 세로형 탭, 알림 기능, 브라우저 분할 및 Claude Code와의 네이티브 통합을 통해 에이전트 중심의 개발 워크플로우를 지원합니다.
핵심 포인트
- AI 에이전트의 요청을 시각적 알림(파란색 링)으로 즉시 확인 가능
- Claude Code의 팀메이트 모드를 단일 명령으로 실행 및 통합
- Swift와 AppKit 기반의 네이티브 macOS 앱으로 낮은 메모리 점유율 제공
- 원격 세션 브라우징 및 스크립트 가능 API 지원
English | 日本語 | Tiếng Việt | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | ភាសាខ្មែរ | Українська
▶ 데모 영상 · cmux의 Zen
| 코딩 에이전트(coding agents)가 사용자의 주의를 필요로 할 때 창(Panes)에 파란색 링이 생기고 탭이 밝게 빛납니다 |
| 모든 대기 중인 알림을 한곳에서 확인하고, 가장 최근의 읽지 않은 알림으로 바로 이동합니다 |
| agent-browser에서 포팅된 스크립트 가능 API(scriptable API)를 사용하여 터미널 옆에 브라우저를 분할하여 배치합니다 |
| 사이드바(Sidebar)에는 git 브랜치, 연결된 PR 상태/번호, 작업 디렉토리(working directory), 리스닝 포트(listening ports), 그리고 최신 알림 텍스트가 표시됩니다. 가로 및 세로로 분할할 수 있습니다. |
cmux ssh user@remote 명령은 원격 머신을 위한 워크스페이스(workspace)를 생성합니다. 브라우저 창(Browser panes)은 원격 네트워크를 통해 라우팅되므로 localhost가 그대로 작동합니다. 이미지를 원격 세션으로 드래그하면 scp를 통해 업로드됩니다.|
cmux claude-teams는 단 한 번의 명령으로 Claude Code의 팀메이트 모드(teammate mode)를 실행합니다. 팀메이트는 사이드바 메타데이터와 알림을 갖춘 네이티브 분할 창(native splits)으로 생성됩니다. tmux가 필요하지 않습니다.|
브라우저 가져오기 (Browser import)— Chrome, Firefox, Arc 및 20개 이상의 브라우저에서 쿠키, 히스토리, 세션을 가져와 브라우저 창이 인증된 상태로 시작됩니다. 사용자 정의 명령 (Custom commands)— 커맨드 팔레트(command palette)에서 실행되는 프로젝트별 동작을 cmux.json에 정의합니다.
스크립트 가능 (Scriptable)— 워크스페이스 생성, 창 분할, 키 입력 전송 및 브라우저 자동화를 위한 CLI 및 소켓 API(socket API)를 제공합니다. 네이티브 macOS 앱 (Native macOS app)— Electron이 아닌 Swift와 AppKit으로 구축되었습니다. 빠른 시작과 낮은 메모리 점유율을 자랑합니다. Ghostty 호환 (Ghostty compatible)— 테마, 글꼴, 색상을 위해 기존의 ~/.config/ghostty/config를 읽어옵니다. GPU 가속 (GPU-accelerated)— 부드러운 렌더링을 위해 libghostty를 사용합니다.

.dmg 파일을 열고
cmux를 Applications 폴더로 드래그하세요. cmux는 Sparkle을 통해 자동으로 업데이트되므로 한 번만 다운로드하면 됩니다.
brew tap manaflow-ai/cmux
brew install --cask cmux
나중에 업데이트하려면:
brew upgrade --cask cmux
처음 실행할 때, macOS에서 확인된 개발자의 앱을 열 것인지 확인을 요청할 수 있습니다. 계속하려면 **열기 (Open)**를 클릭하세요.
저는 많은 Claude Code 및 Codex 세션을 병렬로 실행합니다. 이전에는 Ghostty를 사용하며 수많은 분할 창 (split panes)을 띄워놓고, 에이전트가 저를 필요로 할 때 알 수 있도록 macOS 기본 알림 (native macOS notifications)에 의존했습니다. 하지만 Claude Code의 알림 본문는 문맥 없이 항상 "Claude is waiting for your input"라고만 표시되었고, 탭을 충분히 많이 열어두면 제목조차 읽을 수 없었습니다.
몇 가지 코딩 오케스트레이터 (coding orchestrators)를 시도해 보았지만, 대부분 Electron/Tauri 앱이었고 그 성능이 거슬렸습니다. 또한 GUI 오케스트레이터는 사용자를 자신들의 워크플로 (workflow)에 가두기 때문에 저는 터미널을 더 선호합니다. 그래서 저는 Swift/AppKit을 사용하여 네이티브 macOS 앱으로 cmux를 구축했습니다. 이 앱은 터미널 렌더링을 위해 libghostty를 사용하며, 테마, 글꼴, 색상을 위해 기존의 Ghostty 설정 (config)을 읽어옵니다.
주요 추가 기능은 사이드바 (sidebar)와 알림 시스템 (notification system)입니다. 사이드바에는 git 브랜치, 연결된 PR 상태/번호, 작업 디렉토리 (working directory), 리스닝 포트 (listening ports), 그리고 각 워크스페이스 (workspace)의 최신 알림 텍스트를 보여주는 세로형 탭이 있습니다. 알림 시스템은 터미널 시퀀스 (OSC 9/99/777)를 포착하며, Claude Code, OpenCode 등을 위한 에이전트 훅 (agent hooks)에 연결할 수 있는 CLI (cmux notify)를 제공합니다. 에이전트가 대기 중일 때는 해당 창에 파란색 링이 생기고 사이드바의 탭이 불이 들어오므로, 분할 창과 탭 사이에서도 어떤 창이 저를 필요로 하는지 즉시 알 수 있습니다. Cmd+Shift+U를 누르면 가장 최근의 읽지 않은 알림으로 이동합니다.
앱 내 브라우저 (in-app browser)에는 agent-browser에서 포팅된 스크립트 가능 API (scriptable API)가 포함되어 있습니다. 에이전트는 접근성 트리 (accessibility tree)를 스냅샷 찍고, 요소 참조 (element refs)를 가져오며, 클릭, 양식 채우기, JS 실행을 할 수 있습니다. 브라우저 창을 터미널 옆에 분할하여 배치하고 Claude Code가 개발 서버 (dev server)와 직접 상호작용하게 할 수 있습니다.
모든 것은 CLI 및 소켓 API (socket API)를 통해 스크립트 작성이 가능합니다 — 워크스페이스/탭 생성, 창 분할, 키 입력 전송, 브라우저에서 URL 열기 등이 가능합니다.
cmux는 개발자가 도구를 사용하는 방식에 대해 강요하지 않습니다. 이것은 CLI가 포함된 터미널이자 브라우저이며, 나머지는 여러분의 선택에 달려 있습니다.
cmux는 해결책이 아닌 원시 요소 (primitive)입니다. cmux는 터미널, 브라우저, 알림, 워크스페이스 (workspaces), 분할 (splits), 탭 (tabs), 그리고 이 모든 것을 제어할 수 있는 CLI를 제공합니다. cmux는 코딩 에이전트 (coding agents)를 사용하는 방식에 대해 특정한 의견을 강요하지 않습니다. 이러한 원시 요소들로 무엇을 구축하느냐는 여러분의 몫입니다.
최고의 개발자들은 언제나 자신만의 도구를 만들어 왔습니다. 아직 아무도 에이전트와 협업하는 최선의 방법을 찾아내지 못했으며, 폐쇄형 제품을 만드는 팀들 또한 분명히 그러합니다. 자신의 코드베이스에 가장 가까이 있는 개발자들이 가장 먼저 그 방법을 찾아낼 것입니다.
백만 명의 개발자에게 조합 가능한 원시 요소 (composable primitives)를 제공한다면, 그들은 어떤 제품 팀이 하향식 (top-down)으로 설계하는 것보다 더 빠르게 집단적으로 가장 효율적인 워크플로우 (workflows)를 찾아낼 것입니다.
cmux 설정 방법에 대한 자세한 정보는 공식 문서 (docs)를 참조하세요.
| 단축키 | 동작 |
|---|---|
| ⌘ N | 새 워크스페이스 (New workspace) |
| ... | |
| 단축키 | 동작 |
| --- | --- |
| ⌘ T | 새 서피스 (New surface) |
| ... | |
| 단축키 | 동작 |
| --- | --- |
| ⌘ D | 오른쪽 분할 (Split right) |
| ... |
브라우저 개발자 도구 단축키는 Safari의 기본 설정을 따르며 Settings → Keyboard Shortcuts에서 사용자 정의할 수 있습니다.
⌃ P를 포함한 커맨드 팔레트 (Command palette) 탐색 단축키 또한 사용자 정의가 가능하며, 키 입력이 활성 터미널에 전달되도록 설정을 해제할 수 있습니다.
| 단축키 | 동작 |
|---|---|
| ⌘ ⇧ L | 분할된 화면에서 브라우저 열기 |
| ... | |
| 단축키 | 동작 |
| --- | --- |
| ⌘ I | 알림 패널 표시 |
| ... | |
| 단축키 | 동작 |
| --- | --- |
| ⌘ F | 찾기 |
| ... | |
| 단축키 | 동작 |
| --- | --- |
| ⌘ K | 스크롤백 삭제 (Clear scrollback) |
| ... | |
| 단축키 | 동작 |
| --- | --- |
| ⌘ ⇧ N | 새 창 |
| ... |
cmux NIGHTLY는 별도의 번들 ID (bundle ID)를 가진 별개의 앱이므로, 안정화 버전 (stable version)과 함께 실행됩니다. 최신 main 커밋에서 자동으로 빌드되며 자체 Sparkle 피드를 통해 자동 업데이트됩니다.
나이틀리 (nightly) 버그는 GitHub Issues 또는 Discord의 #nightly-bugs 채널에 보고해 주세요.
cmux를 종료하면 현재 세션이 저장됩니다. 재실행 시 cmux는 앱 소유의 상태 (app-owned state)를 복구합니다:
- 창/워크스페이스/패인 레이아웃 (Window/workspace/pane layout)
- 작업 디렉토리 (Working directories)
- 터미널 스크롤백 (Terminal scrollback) (최선 노력 기준)
- 브라우저 URL 및 탐색 기록 (Browser URL and navigation history)
cmux는 임의의 라이브 프로세스 상태 (live process state)를 체크포인트로 저장하지 않습니다. tmux, vim, 쉘 (shells), 그리고 지원되지 않는 터미널 앱들은 일반 터미널로 다시 열립니다.
지원되는 에이전트 세션 (agent sessions)은 훅 (hooks)이 네이티브 세션 ID (native session ID)를 저장했을 때 재개할 수 있습니다. 에이전트 CLI를 설치한 후, 해당 바이너리가 PATH에 포함되도록 훅을 설치하세요.
:
cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode
cmux hooks setup은
찾을 수 있는 지원되는 에이전트들을 설치하며, 건너뛴 에이전트에 대한 요약을 출력합니다. 지원되는 재개 통합 (resume integrations)에는 Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Rovo Dev, Copilot, CodeBuddy, Factory, 그리고 Qoder가 포함됩니다. Claude Code는 설정 (Settings)에서 Claude 통합이 활성화된 경우 cmux Claude 래퍼 (wrapper)에 의해 처리됩니다.
고급 사용자 및 통합 환경에서는 현재 터미널 서피스 (terminal surface)에 커스텀 재개 명령 (custom resume command)을 연결할 수 있습니다. 이는 tmux 세션이나 커스텀 에이전트 CLI와 같이 자체적인 지속 가능한 상태 (durable state)를 가진 도구들에 유용합니다:
cmux surface resume set --kind tmux --checkpoint work --shell "tmux attach -t work"
cmux surface resume show --json
cmux surface resume clear --checkpoint work
바인딩 (binding)은 cmux 서피스에 연결된 상태로 유지됩니다. 공개 CLI 또는 소켓으로 생성된 바인딩은 자동 재개를 위한 서명된 명령 접두사 (signed command prefix)를 승인하지 않는 한, 검사 및 수동 복원을 위해 저장됩니다. 승인된 접두사는 존재하는 경우 작업 디렉토리 (working directory) 및 정확한 환경 값 (environment values)에도 바인딩됩니다. 승인 사항은 Settings > Terminal > Resume Commands에서 검토하거나 편집할 수 있습니다. cmux는 라이브 프로세스로 감지된 tmux 바인딩이나 사용자가 승인한 접두사와 같이 신뢰할 수 있다고 표시된 재개 바인딩만 자동으로 실행합니다. 토큰 (tokens), 비밀번호 (passwords), 시크릿 (secrets), API 키 (API keys)와 같은 민감한 환경 키 (environment keys)는 재개 바인딩이 저장되기 전에 삭제됩니다.
복구된 에이전트 터미널이 재개 명령을 자동으로 실행하는 대신 유휴 (idle) 상태를 유지하도록 하려면, Settings > Terminal > Resume Agent Sessions on Reopen을 끄거나 ~/.config/cmux/cmux.json에서 다음과 같이 설정하세요.
:
{
"terminal": {
"autoResumeAgentSessions": false
...
이 설정은 에이전트의 자동 재개 (automatic agent resume) 명령만 비활성화합니다. cmux는 여전히 저장된 레이아웃 (layout), 작업 디렉토리 (working directories), 스크롤백 (scrollback) 및 브라우저 히스토리 (browser history)를 복구합니다.
마지막으로 저장된 스냅샷 (snapshot)을 수동으로 다시 적용해야 하는 경우, 다음을 사용하세요:
File > Reopen Previous Session
⌘ ⇧ O
cmux restore-session
내부적으로 cmux는 다음 경로에 버전 관리되는 스냅샷을 작성합니다:
~/Library/Application Support/cmux/
그리고 에이전트 훅 (agent hooks)은 다음 경로에 세션 매핑 (session mappings)을 작성합니다:
~/.cmuxterm/
복구 시, cmux는 먼저 레이아웃을 재구축한 다음, 에이전트 자동 재개가 활성화되어 있으면 지원되는 에이전트의 네이티브 재개 명령을 실행합니다.
전체 가이드는 https://cmux.com/docs/session-restore 에서 확인하세요.
참여 방법:
- Discord에서 대화에 참여하기
- GitHub 이슈 (issues) 및 토론 (discussions) 생성 및 참여하기
- cmux로 무엇을 만들고 있는지 알려주기
cmux는 무료이며 오픈 소스(open source)이며, 앞으로도 항상 그럴 것입니다. 개발을 지원하고 다음 기능들을 미리 사용해 보고 싶다면:
우선순위 기능 요청/버그 수정
얼리 액세스 (Early access): 모든 워크스페이스, 탭 및 패널에 대한 컨텍스트를 제공하는 cmux AI
얼리 액세스 (Early access): 데스크톱과 휴대폰 간에 터미널이 동기화되는 iOS 앱
얼리 액세스 (Early access): 클라우드 VM (Cloud VMs)
얼리 액세스 (Early access): 음성 모드 (Voice mode)
개인적인 iMessage/WhatsApp
cmux는 GPL-3.0-or-later 라이선스 하에 오픈 소스로 제공됩니다.
귀하의 조직이 GPL을 준수할 수 없는 경우, 상용 라이선스 (commercial license)를 이용할 수 있습니다. 자세한 내용은 founders@manaflow.com으로 문의하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기