클로드 코드 핸드폰 원격 제어 — 폰을 메인으로, tmux 없이, 모델을 갈아타도 같은 조작감
목차
결론부터
- 공식 Remote Control(Claude Code)과 Codex 모바일은 설정이 간단하지만, PC 쪽 세션이 주인공이고 핸드폰은 그걸 들여다보고 승인하는 보조 화면입니다. 이 글은 핸드폰을 메인 조작 기기로 쓰는 구성을 다룹니다.
- SSH Term의 유지 셸을 쓰면 tmux 없이도 앱이나 탭을 닫은 뒤 셸과 에이전트가 호스트에서 계속 돕니다.
- Tailscale을 쓰면 포트 개방·DDNS 없이 붙습니다. macOS라면 연결 준비에 터미널 명령이 거의 필요 없습니다.
- Claude냐 GPT냐는 한 달이면 바뀝니다. 터미널 하나로 묶어 두면 모델·하네스를 갈아타도 같은 조작감으로 계속 쓸 수 있습니다.
- 한국어 사용자는 한글 입력을 따로 챙겨야 합니다. 입력창에서 완성한 뒤 터미널로 보내는 방식이 기본입니다.
PC 앞에 앉을 수 있는 시간은 생각보다 짧습니다. 출퇴근길, 점심시간, 아이를 재운 뒤. 그런데 Claude Code에 맡기고 싶은 일은 그 시간에도 계속 떠오릅니다. 저는 바로 이 이유로, 밖에서 핸드폰으로 Claude Code를 다루기 위해 모바일 SSH 앱 SSH Term을 직접 만들었습니다(개발자 본인입니다). 이 글은 그 과정에서 정리한 구성이고, 다른 도구와 무엇이 다른지도 솔직하게 적었습니다.
전체 구조는 이렇습니다.
핸드폰 (SSH Term)
│ Tailscale (포트를 열지 않고 집 PC에 연결)
▼
집 PC / 서버
└─ 유지 셸 (앱이 넣는 작은 보조 프로그램이 셸을 붙잡아 둠)
├─ 탭 1: Claude Code (worktree 작업: feature-a)
├─ 탭 2: Codex (worktree 작업: fix-b)
└─ 탭 3: 다른 CLI 에이전트 / 일반 셸
핸드폰에서 연결하는 방법들
| 방법 | 대상 | 필요한 것 | 특징 |
|---|---|---|---|
| Claude Code Remote Control | Claude Code | Pro·Max·Team·Enterprise 구독(API 키 불가), Claude 앱 또는 claude.ai/code | QR 코드로 바로 연결. PC에서 claude가 계속 돌고 있어야 함 |
| Codex 원격 연결(모바일) | Codex | Mac·Windows에서 실행 중인 ChatGPT 데스크톱 앱, ChatGPT 모바일 앱 | 데스크톱 앱에서 QR로 페어링. 작업 시작·승인·diff 확인·알림 |
| SSH(+ SSH Term) | 터미널에서 도는 CLI 전반 | PC의 SSH 서버, Tailscale, 핸드폰 SSH 앱 | 호스트의 셸을 그대로 조작. 구독·벤더와 무관 |
공식 기능은 편합니다. 다만 Remote Control은 Anthropic 서비스를 거쳐 대화를 중계하고, Codex 모바일은 OpenAI의 릴레이를 거칩니다. 둘 다 PC 쪽에서 claude 프로세스나 ChatGPT 데스크톱 앱이 계속 돌아야 하고, 각각 자기 회사 에이전트 전용입니다. SSH 방식은 내 네트워크(SSH / Tailscale) 안에서 끝납니다.
ADE(에이전트 개발 환경)와 무엇이 다른가 — 네 가지 축
요즘 여러 코딩 에이전트를 나란히 돌리는 도구를 ADE(Agentic/Agent Development Environment) 라고 부르기 시작했습니다. Warp, Orca, ade-app.dev 모두 모바일 기능을 갖고 있지만, 공식 문서를 읽어 보면 데스크톱이 중심이고 핸드폰은 보조라는 설계입니다(Orca는 스스로 “read-mostly view”라고 씁니다). 아래 표는 2026년 10월 19일에 각 공식 문서를 확인해 정리한 것입니다.
| SSH Term | Claude Code Remote Control | Codex(모바일) | Orca | ADE (ade-app.dev) | Warp Remote Control | |
|---|---|---|---|---|---|---|
| 핸드폰이 메인 기기인가 | 메인 조작 기기: SSH 터미널, 한글 입력 모드, 파일 탐색기, 작업 만들기, 에이전트 실행 | PC 세션을 들여다보는 창. 새 세션도 만들 수 있음 | 작업 시작·승인·diff 확인 | 보조 앱(공식 표현 “read-mostly”) | 데스크톱을 조작하는 클라이언트(iOS) | 공유 링크로 보고 지시 |
| 멀티플렉서(tmux 등) 필요 여부 | 불필요. 앱이 넣는 작은 보조 프로그램이 셸을 유지 | 불필요. 대신 PC에서 claude를 계속 실행 | 불필요. 대신 PC에서 ChatGPT 데스크톱 앱을 계속 실행 | 데스크톱 Orca 또는 orca serve | 상주 서비스(brain) | Warp 데스크톱에서 실행 중일 때만 |
| 연결 준비 | Tailscale + OS의 SSH 서버 켜기. 공개 키 등록은 직접 | /login, /rc, QR | 데스크톱 앱에서 설정, QR, 같은 계정 | 페어링 코드(Relay 또는 LAN) | 페어링. LAN 또는 Tailscale | 원클릭 공개 |
| 통신 경로 | 내 네트워크(SSH / Tailscale). 알림만 ntfy 등을 경유 | Anthropic 경유 | OpenAI 릴레이 | Orca Relay 또는 LAN | LAN / tailnet 또는 계정 디렉터리 | Warp 클라우드 |
| 지원 하네스·벤더 종속 | 상태 표시·채팅·알림은 claude·codex·omp. 그 밖의 CLI도 셸로는 사용 가능(상태 표시 등은 없음) | Claude Code 전용 | Codex 전용 | 모든 CLI. 프리셋이 많음(SSH Term보다 넓음) | 6종 | Claude Code·Codex·OpenCode 등 |
| 가격 | 한 번 구매 | Pro 이상(API 키 불가) | Codex를 쓸 수 있는 ChatGPT 플랜 | 무료·오픈 소스 | 무료(공식 사이트 표기) | 공식 사이트 참조 |
SSH Term이 부족한 점도 적어 둡니다. 채팅 화면은 아직 베타이고, 상태 목록·알림을 인식하는 하네스는 3종뿐입니다(이 점은 Orca가 훨씬 넓습니다). 알림을 받으려면 ntfy 앱(또는 Slack·Discord·Telegram)이 따로 필요하고, Tailscale도 별도 앱이며 공개 키 등록은 직접 해야 합니다. GUI로 diff를 넓게 보고 싶거나 데스크톱 IDE 기능이 필요하다면 제품형 ADE가 맞습니다.
반대로 “핸드폰을 메인으로”, “tmux 없이”, “연결 준비는 최소로”, “특정 벤더에 묶이지 않게”를 원한다면 이 글의 구성이 맞습니다. 하나씩 보겠습니다.
1. 핸드폰을 메인 조작 기기로
공식 Remote Control은 문서에 “웹·모바일 화면은 로컬 세션을 들여다보는 창”이라고 적혀 있습니다. Codex 모바일, Orca, ade-app.dev, Warp도 PC 쪽 데스크톱 앱이나 그 상주 프로세스가 전제입니다. 핸드폰에서 할 수 있는 일이 적다는 뜻은 아닙니다(Codex는 핸드폰에서 작업을 시작할 수 있고, Orca는 에이전트를 실행할 수 있습니다). 다만 주인공은 PC입니다.
SSH Term은 SSH로 호스트의 셸 자체를 조작합니다. 그래서 PC 쪽에 전용 데스크톱 앱을 띄워 둘 필요가 없고, 처음 설정만 끝내면 이런 일이 핸드폰에서 끝납니다.
- 접속, 에이전트 실행, 대화 목록에서 이어서 하기
- Issue / PR을 골라 이름 붙은 worktree 작업 만들기
- 승인·질문에 답하기, 알림 받기
- SFTP 파일 탐색기로 파일 보기(문법 강조 미리보기, 태블릿에서는 2분할)
- 키 툴바로 Ctrl+C·Tab·Esc·방향키·F1~F12 보내기
PC(호스트)의 전원은 켜 둬야 합니다. 또 PC 터미널에서 직접 띄운 에이전트까지 핸드폰에 보이게 하려면, 앱의 “이 호스트 준비”로 셸 설정에 래퍼를, 에이전트 설정에 훅을 추가한 뒤 PC에서 터미널을 새로 열어야 합니다(바꾸는 파일은 적용 전에 화면에서 확인할 수 있습니다).
2. Tailscale로 연결하기 — 명령어는 거의 필요 없다
밖에서 접속하려면 SSH 포트를 인터넷에 여는 대신 Tailscale을 씁니다. 포트 개방·DDNS·고정 IP가 필요 없고, LTE·5G에서도 집 Wi-Fi와 똑같이 붙습니다. 최소 절차는 이렇습니다.
- Tailscale 계정을 만듭니다. PC와 핸드폰은 같은 로그인 방식(Google 등)으로 로그인해야 합니다.
- PC에서 SSH 서버를 켭니다.
- macOS: 시스템 설정 → 일반 → 공유 → 원격 로그인을 켭니다. 명령어는 필요 없습니다.
- Windows: 설정의 선택적 기능에서 OpenSSH 서버를 추가하고, sshd 서비스를 시작해 자동 시작으로 둡니다(PowerShell로 해도 됩니다).
- Linux (Ubuntu 등):
sudo apt install openssh-server후sudo systemctl enable --now ssh.
- PC에 Tailscale을 설치하고 로그인합니다.
- (선택) 관리 화면에서 MagicDNS를 켜면
100.x.x.x대신 머신 이름으로 접속할 수 있습니다. - 핸드폰에 Tailscale 앱을 설치하고 로그인해 VPN을 허용합니다.
- SSH Term에 호스트 이름(머신 이름 또는
100.x.x.x)과 사용자 이름을 넣습니다. - 앱에서 Ed25519 키를 만들고 공개 키를 복사해 PC의
~/.ssh/authorized_keys에 등록합니다. 그다음 비밀번호 로그인을 끄는 것을 권합니다.
tailscale up --ssh 같은 명령은 필요 없습니다. Tailscale SSH를 쓰고 싶다면 SSH Term은 그것도 지원합니다(check 모드의 인증 URL을 연결 중에 보여 줍니다). Tailscale은 SSH Term에 내장된 것이 아니라 별도 앱이고, 호스트를 자동으로 찾아 주지도 않습니다. 그래도 tmux 설정이나 포트 포워딩 명령까지 생각하면, 연결 준비의 손은 크게 줄어듭니다.
3. tmux 없이 병렬로 돌리기 — 유지 셸 × 이름 붙은 worktree 작업
모바일 연결은 반드시 끊깁니다. 지하철이 터널에 들어가거나, 앱을 백그라운드로 보내거나, 화면이 꺼질 때입니다. 중요한 것은 끊겨도 PC 쪽의 에이전트가 살아 있느냐입니다.
SSH Term에서 유지 셸을 켠 탭은 셸을 SSH 연결에 직접 붙이지 않고, 호스트의 작은 보조 프로그램 안에서 돌립니다. 세션마다 유지 역할의 프로세스가 화면과 최근 출력을 디스크(~/.ssh-term/agent/)에 남겨 두므로, 연결이 끊기거나 폰이 잠들거나 앱을 닫아도 셸과 에이전트는 계속 돕니다. 다시 연결하면 놓친 출력만 받아 오거나 화면을 다시 그립니다.
- tmux·screen을 직접 설치하고 단축키를 외울 필요가 없습니다.
- 보조 프로그램은 앱이 자동으로 설치하고, 앱에 고정된 sha256으로 검증합니다. 네트워크 포트는 열지 않고, 앱 메뉴에서 삭제할 수 있습니다.
- 호스트 OS는 Linux / macOS / Windows(기본 셸이 cmd 또는 PowerShell인 경우).
여러 에이전트를 동시에 돌릴 때 핵심은 작업 폴더를 나누는 것입니다. 같은 폴더에서 두 에이전트가 같은 파일을 고치면 서로의 변경을 덮어씁니다. SSH Term에서는 Issue나 PR을 고르면 worktree와 브랜치를 만들어 이름 붙은 작업으로 등록하고, 그 작업에서 바로 에이전트를 실행할 수 있습니다. 폴더를 골라 시작해도 됩니다. 탭을 닫아 둔 유지 셸도 목록에서 다시 열 수 있습니다.
참고로 공식 Remote Control도 서버 모드(claude remote-control)에 --spawn worktree를 주면 세션마다 git worktree를 따로 만들고, --capacity로 동시 세션 수를 정할 수 있습니다(공식 문서). 다만 PC에서 이 프로세스가 계속 돌아야 하고, 서버 모드는 약 10분 동안 네트워크에 닿지 못하면 종료됩니다.
다른 SSH 앱을 쓴다면 — tmux로 같은 일 하기
Termius 같은 다른 SSH 클라이언트를 쓴다면 tmux가 유지 역할을 대신합니다. SSH Term에서도 원하면 열기 방식을 tmux·zellij·screen 중에서 고를 수 있습니다.
cd ~/projects/my-app
# 작업마다 worktree(별도 작업 폴더 + 브랜치)를 만든다
git worktree add ../my-app-feature-a -b feature-a
git worktree add ../my-app-fix-b -b fix-b
# tmux 세션 하나에 창을 나눠 에이전트를 하나씩
tmux new -s agents -n feature-a -c ../my-app-feature-a
# (세션 안에서) claude
# Ctrl-b c 로 새 창 → cd ../my-app-fix-b && codex
핸드폰에서는 tmux attach -t agents로 들어간 뒤 Ctrl-b n(다음 창), Ctrl-b w(창 목록)로 오갑니다. 접속 후 자동 실행 명령에 tmux attach -t agents || tmux new -s agents를 넣어 두면 편합니다. 모바일 SSH 앱을 고르는 기준은 안드로이드 SSH 앱 비교에 정리해 두었습니다.
4. 모델·하네스를 갈아타도 같은 조작감
Claude가 좋은지 GPT가 좋은지, 아니면 다른 모델이 앞서는지는 한 달이면 바뀝니다. 새 모델이 나올 때마다 에이전트도 Claude Code, Codex, 그 밖의 CLI로 옮겨 다니게 됩니다. 그런데 Remote Control은 Claude Code 전용이고, Codex 모바일은 Codex 전용입니다. 갈아탈 때마다 핸드폰 쪽 앱과 조작법까지 바뀌는 셈입니다.
SSH Term은 터미널에서 도는 CLI를 하나의 화면으로 묶습니다.
- 어떤 CLI든 유지 셸, 한글 입력 모드, 파일 탐색기, 키 툴바, 자동 재연결을 같은 조작으로 씁니다.
- Claude Code·Codex·Oh My Pi(omp) 는 여기에 더해 상태 목록(작업 중 / 입력 대기 / 승인 필요), 채팅 화면(베타), 알림까지 지원합니다. 그 밖의 CLI는 상태 표시·알림이 없는 일반 셸로 씁니다.
- 모델과 프로바이더는 호스트 설정(API 키, Bedrock 등) 그대로입니다. 대화 기록도 호스트에 있고 제3자 서비스를 거치지 않습니다(알림을 쓰면 ntfy 등을 경유).
그래서 다음 달에 주력 모델이 바뀌어도, 핸드폰에서 하는 일은 그대로입니다. 탭을 열고, 에이전트를 실행하고, 승인하고, 결과를 봅니다.
5. 승인과 알림 — 핸드폰을 계속 보고 있을 필요는 없다
병렬로 돌리면 “어느 탭이 지금 내 승인을 기다리는지”가 가장 큰 문제가 됩니다.
- SSH Term: 호스트별 카드에 claude·codex·omp의 상태가 나오고, 채팅 화면(베타)에서 승인·선택에 답할 수 있습니다. 승인 대기·입력 대기·완료 알림은 앱을 닫아 둬도 받을 수 있는데, 받으려면 ntfy 앱(또는 Slack·Discord·Telegram)이 필요합니다. 이때 프로젝트 이름과 도구 이름이 ntfy 서버를 거칩니다(직접 운영하는 서버도 지정 가능).
- Remote Control:
/config에서 Push when actions required와 Push when Claude decides를 켜면 Claude 앱으로 푸시가 옵니다. 연결된 터미널에 포커스가 있으면 푸시를 건너뜁니다(공식 문서). - Codex 모바일: ChatGPT 앱에서 승인, diff·테스트 결과 확인, 완료 알림을 받을 수 있습니다(공식 문서).
지시하는 요령도 있습니다. 한 번에 확인할 수 있는 크기로 나눠 맡기고, “끝나면 npm test를 돌려서 전부 통과하는지 확인해 줘”처럼 확인 조건을 지시에 넣어 두면 알림을 받은 뒤 결과만 보면 됩니다.
6. 한글로 지시하기
한국어 사용자에게만 생기는 벽이 하나 있습니다. 터미널에 한글을 직접 치면 자모가 분리되거나 글자가 사라지는 경우가 많습니다. 한글 조합(미확정 상태)을 터미널이 제대로 다루지 못해서 생기는 문제로, 원인과 앱별 대처법은 따로 정리해 두었습니다.
짧게 말하면 입력창에서 문장을 완성한 뒤 터미널로 한 번에 보내면 됩니다. 메모 앱에서 써서 붙여넣어도 되고, 입력창 방식을 내장한 SSH 앱을 써도 됩니다. SSH Term의 입력 모드는 입력창에서 한글을 완성한 뒤 터미널로 한 번에 보내고, 한글 폴백 글꼴도 넣었습니다. Claude 앱이나 ChatGPT 앱으로 원격 연결하는 경우에는 일반 채팅 입력창이라 이 문제가 생기지 않습니다.
제가 만든 앱: SSH Term
이 글의 네 가지 축을 핸드폰 하나로 하려고 만든 앱이 SSH Term입니다.
iPhone · iPad · Android를 지원하며, 한 번 구매하면 모든 기능을 쓸 수 있습니다(App Store ₩7,700 / Google Play ₩8,500, 구독·광고 없음). 자세한 소개는 SSH Term 한국어 페이지에 있습니다.
물론 반드시 이 앱이어야 하는 것은 아닙니다. tmux + worktree 구성은 다른 SSH 앱에서도 똑같이 쓸 수 있고, Claude Code만 쓰면서 구독 플랜이 맞는다면 공식 Remote Control이 가장 손이 덜 갑니다. 여러 CLI를 데스크톱 GUI에서 넓게 다루고 싶다면 Orca도 좋은 선택입니다.
정리
- 핸드폰을 메인으로: 호스트의 셸을 SSH로 직접 조작하면, 실행·작업 만들기·승인·파일 확인까지 핸드폰에서 끝난다
- tmux 없이: 유지 셸이면 앱을 닫아도 셸과 에이전트가 호스트에서 계속 돈다
- Tailscale: 포트 개방 없이 연결. macOS라면 명령어 없이 준비 가능, 공개 키 등록만 직접
- 모델을 갈아타도 같은 조작감: CLI는 같은 화면에서, claude·codex·omp는 상태·알림까지
- 한글은 입력창에서 완성해서 보낸다

