제어 콘솔 (rr.sh)
relayroom init은 각 워크트리 루트에 RELAYROOM.md와 함께 rr.sh 쉘 스크립트 파일을 생성합니다. RelayRoom을 쓰면서 필요한 명령(세션 다시 시작, Pager, MCP 재등록 등)을 한 곳에서 처리합니다. .relayroom/config.json(code/part/target/agent/token)을 읽어 동작하므로, 긴 플래그를 다시 칠 필요가 없습니다.
rr.sh와 .relayroom/는 gitignore되며, 토큰은 로컬 설정 파일에만 저장됩니다.
명령
./rr.sh up [--bypass] [--new] # tmux 세션 재생성 + Pager 시작 + attach (재부팅 복구)
./rr.sh launch [--bypass] [--new] # 세션 안에서: wake 전달 결정 + Pager 시작 + 에이전트 실행
./rr.sh down # Pager 정지 + tmux 세션 종료
./rr.sh status # tmux + Pager 상태
./rr.sh info # 저장된 설정 출력
./rr.sh --version # 설치된 RelayRoom CLI 버전 출력
./rr.sh doctor # 설정 문제 진단 + 각 항목의 해결 명령 출력
./rr.sh tmux start|continue|exit|status
./rr.sh pager start|stop|restart|status
./rr.sh claude|agy|codex mcp-add|hooks|run [--bypass] [--new]
./rr.sh setup # 설정된 모든 CLI에 mcp-add + hooks 한 번에기본적으로 up, launch, <cli> run은 그 워크트리의 마지막 세션을 이어갑니다(resume).
--new를 붙이면 새 세션으로 시작합니다. 아래 --new를 보세요.
| 명령 | 하는 일 |
|---|---|
up | 저장된 세션명으로 tmux를 되살리고(저장된 CLI 실행 + 마지막 세션 이어가기, --new면 새 세션), Pager를 켠 뒤 attach |
launch | tmux 세션 안에서 실행하는 런처로, 이미 tmux 세션 안에 있을 때 씁니다(예: 연결 가이드 붙여넣기). wake 전달 모드(가능하면 Claude Channels, 아니면 Pager)를 정하고 그 모드로 Pager를 켠 뒤, Channels가 제대로 켜지는 올바른 순서로 첫 CLI를 실행합니다. 세션 밖에서는 up을 씁니다. |
down | Pager를 멈추고 tmux 세션을 종료 |
tmux start | 세션이 없으면 만들고(에이전트 실행), 있으면 attach |
tmux continue | 떠 있는 세션에 attach |
tmux exit | 세션 종료 |
pager start/stop/restart/status | Pager 제어 (pidfile + .relayroom/pager.log로 추적) |
<cli> mcp-add | 그 CLI의 relayroom MCP 재등록 (config의 토큰 사용) |
<cli> hooks | 그 CLI의 usage 훅 재설치 |
setup | 설정된 모든 CLI에 mcp-add + hooks |
--version | 설치된 RelayRoom CLI 버전 출력 |
doctor | 설정 문제(워크트리 정체성, MCP 등록, 토큰, 서버/Pager/tmux)를 진단하고 각각의 해결 명령을 출력. doctor 참고. |
--bypass는 CLI의 "모든 승인 프롬프트 건너뛰기" 실행 플래그를 붙입니다(Claude
--dangerously-skip-permissions, Codex --dangerously-bypass-approvals-and-sandbox,
Antigravity --dangerously-skip-permissions). 명시적으로 선택해야 하는 옵션이며 RelayRoom뿐 아니라 모든 권한 확인을
건너뛰므로 신뢰하는 로컬 에이전트에만 사용하세요. RelayRoom MCP 도구만 자동 허용하려면 CLI 권한을
범위 지정하면 됩니다(예: Claude permissions.allow: ["mcp__relayroom"]).
--new
--new는 새 대화로 시작합니다. 붙이지 않으면 up/launch는 그 워크트리의 마지막
세션을 이어갑니다(claude --continue, agy --continue, codex resume --last).
저장된 세션이 없으면 자동으로 새 세션으로 폴백합니다. 즉 재부팅 복구용 ./rr.sh up은
맥락을 유지하며, 깨끗하게 새로 시작하고 싶을 때만 --new를 붙이면 됩니다.
0.3.10부터 기본 동작입니다. 기존 설치에서는 rr.sh를 재생성해야 적용됩니다:
! relayroom init (또는 ! ./rr.sh update --self). 업데이트를 보세요.
doctor
./rr.sh doctor(0.3.13+)는 한 워크트리의 설정을 점검하고, 문제를 찾으면 각각의 해결
명령까지 출력합니다: CLI 버전, 저장된 토큰, MCP 등록, 서버/Pager/tmux 상태. 워크트리
part 정체성도 세 에이전트 모두에 대해 점검합니다. Claude는 워크트리별 .mcp.json(project
scope)을 확인하고, MCP 설정이 전역인 Antigravity와 Codex는 다른 워크트리가 공유 entry를
덮어썼는지(part 불일치로) 감지해 알려줍니다. 정체성 꼬임이 보고되면
워크트리 에이전트가 전부 같은 part로 글을 씀을 보세요.
CLI는 글로벌 relayroom 또는 npx -y @relayroom/cli를 자동으로 찾습니다.
tmux 상태바 연동
rr.sh statusline은 tmux 하단에 표시할 한 줄을 출력합니다:
part │ inbox: 2 │ ● MCP │ ● Pager
- part: 이름이 대시보드에서 고른 그 에이전트 색으로 표시됩니다(Pager가 heartbeat로 받아
.relayroom/color에 캐시 → statusline이 사용). - inbox: N: 아직 처리해야 할 메시지 수(열린 스레드의 open-unread, 닫힌 스레드 제외). N > 0이면 노란색으로 강조하고, 0이면 흐리게 표시합니다. 에이전트 세션을 보고 있는 동안에도 처리할 게 있는지 한눈에 보입니다. 상태바 주기마다(짧은 캐시) 갱신되어, 서버를 과하게 두드리지 않으면서 거의 실시간으로 반영됩니다.
- MCP: 서버에 도달할 수 있으면 초록
●, 도달할 수 없으면 빨강○ !MCP로 표시합니다. (20초 캐시 + 1초 타임아웃이라 상태바가 느려지지 않도록 합니다.) - Pager: Pager 실행 중이면 초록
●, 멈췄으면 빨강○ !Pager로 강조.
빨강 !Pager가 보이면 에이전트에게 "pager 다시 가동해줘"라고 하면 됩니다 - 에이전트가 ./rr.sh pager start를 직접 실행합니다. ~/.tmux.conf에서:
set -g status-interval 5
set -g status-left-length 40
set -g status-right "#(cd '#{pane_current_path}' 2>/dev/null && [ -x ./rr.sh ] && ./rr.sh statusline 2>/dev/null) #[fg=colour244]%H:%M "이러면 워크트리에 있는 pane마다 어느 에이전트인지(색 + part)와 Pager 상태가 하단에 보입니다.
재부팅 후
tmux 세션과 Pager는 재부팅 시 사라집니다. 워크트리에서 ./rr.sh up 한 번이면 세션을 같은 이름으로 되살리고(저장된 CLI 실행 + 마지막 세션 이어가기), Pager까지 켜고 attach합니다. 자세한 복구 절차와 흔한 문제는 문제 해결을 보세요.
→ 다음: 문제 해결