Claude Code를 동시에 여러 개 돌리는 멀티 세션 셋업 — tmux와 cmux
2026.04.17
한 작업에 한 터미널이면 손해다
Claude Code를 한 세션만 띄워놓고 작업하면 답답한 순간이 자주 온다. AI가 뭔가 5분짜리 작업을 하는 동안 나는 그저 기다린다. 그동안 다른 일을 같이 하면 처리량이 두 배가 된다.
처음에는 Warp 탭을 여러 개 열었다. 탭이 5개 넘어가면 어디에 뭐가 떠 있는지 잊어버린다. 그래서 cmux로 옮겼고, 그 위에 tmux를 얹는 구성을 알아봤다.
이 글은 한 화면에서 Claude Code 인스턴스 셋과 dev 서버를 같이 돌리는 셋업이다. 끝에는 이 중 어디까지가 실제로 필요했는지도 적어뒀다.
왜 tmux와 cmux를 같이 쓰는가
둘 다 터미널 관련 도구라서 헷갈릴 수 있다. 역할이 다르다.
- cmux: 터미널 에뮬레이터(앱). Warp, iTerm 같은 것의 대체재. GPU 가속, 색감, 폰트 렌더링이 좋다.
- tmux: 터미널 멀티플렉서. 한 터미널 안에서 패널 분할, 세션 관리, 백그라운드 유지를 한다.
cmux가 "창"이라면 tmux는 "그 창 안의 격자"다. 둘은 충돌하지 않고 자연스럽게 합쳐진다.
기본 셋업
설치는 brew 한 줄이다.
brew install tmux~/.tmux.conf에 최소 설정:
# prefix를 Ctrl+A로 (Ctrl+B는 다른 도구와 자주 충돌)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 마우스 지원 (패널 클릭, 리사이즈)
set -g mouse on
# 패널 분할을 직관적으로
bind | split-window -h
bind - split-window -v
# 패널 이동을 vim 키로
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 패널 리사이즈
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# 색상 지원
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
# 창 번호 1부터 시작
set -g base-index 1tmux source ~/.tmux.conf로 적용한다.
4분할 작업 화면
제일 많이 쓰이는 레이아웃이다. 한 창을 4분할해서 각각 다른 일을 시킨다.
┌─────────────────┬─────────────────┐
│ │ │
│ Claude Code 1 │ Claude Code 2 │
│ (frontend) │ (backend) │
│ │ │
├─────────────────┼─────────────────┤
│ │ │
│ Dev Server │ Logs / Tests │
│ │ │
└─────────────────┴─────────────────┘수동으로 만들 수도 있지만, 매번 같은 레이아웃이면 스크립트로 만든다.
#!/bin/bash
# ~/bin/start-dev-layout.sh
cd ~/joowonkoh-dev
tmux new-session -d -s dev
# 4분할
tmux split-window -h
tmux split-window -v
tmux select-pane -t 0
tmux split-window -v
# 각 패널에 명령
tmux send-keys -t dev:0.0 'claude' C-m # 좌상: Claude Code 1
tmux send-keys -t dev:0.1 'npm run dev' C-m # 좌하: dev server
tmux send-keys -t dev:0.2 'claude' C-m # 우상: Claude Code 2
tmux send-keys -t dev:0.3 'npm test --watch' C-m # 우하: tests
tmux attach -t dev./start-dev-layout.sh 한 번 실행하면 4분할이 자동으로 만들어진다.
Claude Code 인스턴스 분리하기
Claude Code 인스턴스 두 개를 띄우면 중요한 게 있다. 각 인스턴스가 다른 디렉토리에서 작업해야 한다. 안 그러면 같은 파일을 두 인스턴스가 동시에 수정해서 충돌이 난다.
흔한 분리 방법:
- 좌상 인스턴스:
frontend/폴더에서 작업 - 우상 인스턴스:
backend/폴더에서 작업
또는 git worktree로 같은 레포의 다른 브랜치를 두 폴더에 펼쳐서 각각 다른 인스턴스가 본다. Git Worktree 글에서 더 자세히 다룬다.
세션 자동 복원
작업하다가 노트북을 닫고 다시 열면 tmux 세션이 그대로 살아 있다. 그게 tmux의 진짜 매력이다.
tmux ls로 살아있는 세션 확인.
$ tmux ls
dev: 4 panes (created Mon Apr 17 09:00:00 2026)
blog: 2 panes (created Mon Apr 17 11:30:00 2026)tmux attach -t dev로 다시 붙는다. 모든 패널 상태가 그대로다. 실행 중이던 dev 서버도 죽지 않았다.
리부팅하면 세션이 사라진다. 리부팅에도 살리려면 tmux-resurrect 플러그인을 쓴다.
# ~/.tmux.conf
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
run '~/.tmux/plugins/tpm/tpm'prefix + Ctrl+s로 저장, prefix + Ctrl+r로 복원. 노트북 재부팅 후에도 4분할 레이아웃과 디렉토리 위치가 그대로 돌아온다.
자주 쓰는 키바인딩
prefix(Ctrl+A)를 누른 다음 입력하는 키들이다.
Ctrl+A세로 분할
가로 분할
패널 이동
패널 리사이즈
패널 줌 (한 패널을 전체화면)
새 창
창 이름 변경
세션에서 분리(detach)
세션 목록에서 선택
패널 닫기
prefix + z(줌)는 자주 쓴다. Claude Code 출력을 자세히 보고 싶을 때 한 패널만 키운 다음, 다시 prefix + z로 원래 레이아웃으로 돌아온다.
cmux와 합치는 팁
cmux 자체에도 분할 기능이 있다. tmux와 어떤 걸 쓸지 헷갈릴 수 있다.
기준은 이렇게 갈린다:
- 로컬 단일 머신 작업: cmux 분할로 충분
- 여러 SSH 세션, 백그라운드 유지, 리부팅 복원이 필요: tmux
대부분의 경우 tmux 한 가지만 깊게 익히는 게 효율적이다. cmux는 GPU 렌더링 좋은 "호스트 창"으로 쓰고, 그 안에서 tmux로 세션을 관리한다.
흔한 함정
함정 1: 두 인스턴스가 같은 파일을 건드린다
가장 자주 만나는 사고다. 좌상 Claude Code가 App.tsx를 수정하는 동안 우상도 같은 파일을 수정하면 한쪽 변경이 사라진다. 디렉토리를 분리하거나, 같은 디렉토리에서는 한 명만 쓰기 작업을 하게 한다.
함정 2: 너무 많은 패널
4분할이 기능적 최대다. 6분할쯤 가면 글자 크기가 작아져서 가독성이 떨어진다. 화면이 좁아진 만큼 한 패널에서 보는 정보도 줄어든다. 한 화면 4분할이 안전한 한계다.
함정 3: 세션 이름을 안 짓는다
tmux new-session을 그냥 치면 세션 이름이 0, 1처럼 숫자가 된다. 며칠 후 tmux ls로 보면 어떤 세션이 뭐였는지 모른다. 항상 -s 옵션으로 이름을 짓는다.
tmux new -s blog # 블로그 작업용
tmux new -s api-fix # API 버그 수정용이 한 가지 습관만 들어도 세션 관리가 한결 깔끔해진다.
직접 겪은 일: 결국 tmux를 안 얹었다
셋업을 길게 적어놨지만 실토하면, 지금 내 맥에는 tmux가 없다. cmux만 쓴다.
위에 「로컬 단일 머신이면 cmux 분할로 충분」이라고 적어뒀는데, 내 경우가 정확히 거기였다. SSH로 원격에 붙어 일하지 않고, 리부팅을 넘겨서 살려둬야 하는 장기 프로세스도 없다. 그러면 tmux가 주는 것 중에 내가 받는 게 거의 없다. 세션 복원도, 분리된 백그라운드 세션도 필요가 없었다.
더 중요한 건 따로 있었다. 여러 개를 동시에 돌릴 때의 진짜 병목이 화면이 아니라 작업 공간이었다는 것이다. 위에도 적었듯 인스턴스 두 개가 같은 파일을 건드리면 한쪽 변경이 사라진다. 이 문제는 창을 아무리 잘 나눠도 안 풀린다.
풀린 방법은 git worktree였다. 같은 레포를 여러 폴더에 펼치면 각 인스턴스가 서로 안 겹치는 자리에서 일한다. 그 뒤로는 창이 몇 개든 상관없어졌고, 그러자 창을 정교하게 나눌 이유도 같이 사라졌다.
배운 건 이거다. 병목을 잘못 짚으면 맞는 도구를 깔고도 안 쓰게 된다. 화면 분할 도구를 찾고 있었는데 필요한 건 작업 공간 분리 도구였다. 둘은 겉보기에 같은 문제를 푸는 것처럼 보인다.
정리
AI 에이전트를 여러 개 동시에 돌리면 기다리는 시간이 줄어든다. 한쪽에서 5분 작업하는 동안 다른 쪽에서 다른 일을 한다. 이 방향 자체는 분명하다.
다만 그 방향으로 가는 길이 하나가 아니다. tmux를 얹는 구성은 세션을 나누는 접근이고, 아래에 적을 것처럼 작업 공간을 나누는 접근으로도 같은 곳에 도착한다.
시작점을 하나만 고른다면 이렇다. tmux conf 위 예시를 복사하고 4분할 스크립트를 하나 만들어 본다. 며칠 써보면 자기에게 필요한 게 화면 분할인지 작업 공간 분리인지가 갈린다.
같이 읽으면 좋은 글
cmux 터미널 내 취향대로 꾸미기 — 따라 하는 설정 가이드
AI 코딩 에이전트를 병렬로 돌리는 macOS 터미널 cmux를 내 취향대로 꾸미는 법. 설정 파일 두 개의 역할을 나눠서 이해하고, 폰트·테마·투명도·사이드바·워크스페이스 색까지 복붙으로 따라 할 수 있게 정리했다.
cmux터미널개발환경2026.05.02zsh에서 fish로 갈아탄 이유, 그리고 다시 zsh로 돌아간 이유
fish의 자동완성과 기본 설정의 매력에 빠져 zsh를 떠났다가 6개월 후 다시 돌아왔다. 두 셸 사이에서 무엇을 얻고 무엇을 잃었는지 솔직하게 정리한다.
터미널2026.04.172026년 개발자 터미널 생산성 도구 세팅
cd, ls, cat을 대체하는 모던 CLI 도구 8가지를 소개한다. Starship, zoxide, fzf, ripgrep, bat, eza, lazygit, Atuin까지 한 번에 세팅하는 방법.
터미널생산성2026.04.08