목록으로
제품2026년 5월 2일 PM 06:03

Show HN 'Loopsy' 공개, 폰에서 노트북 Claude Code·Cursor·Codex 원격 제어… Cloudflare Workers 릴레이 자체호스팅·HMAC 페어 토큰, 폰↔데몬 E2EE v1.1 로드맵

해커뉴스에 'Show HN: Loopsy, a way for terminals and AI agents on different machines to talk' 글로 자체 호스팅 가능한 터미널 원격 제어 도구 Loopsy가 공개됐다. 폰에서 노트북의 Claude Code·Cursor·Codex 등 AI 코딩 에이전트나 임의의 셸을 그대로 제어하도록 설계됐다.

설치는 노트북에 'npm install -g loopsy'로 데몬을 깐 뒤 'npx @loopsy/deploy-relay'를 실행해 약 30초 만에 본인 Cloudflare 계정으로 워커 릴레이를 배포한다. 'loopsy init', 'loopsy relay configure <URL>', 'loopsy start'로 데몬을 워커에 연결하고, 'loopsy mobile pair'로 출력되는 QR과 4자리 코드를 폰 카메라로 스캔해 페어링한다. 폰에서 '<릴레이>.workers.dev/app'에 접속하면 사용 준비가 끝난다.

아키텍처는 데몬이 Cloudflare 워커의 Durable Object로 아웃바운드 웹소켓을 열고, 폰도 같은 워커에 접속하면 워커가 두 연결을 스플라이스하는 방식이다. 포트 포워딩, 공인 IP, VPN이 모두 필요 없다.

보안 면에서 페어 토큰은 HMAC으로 서명되고 비밀값은 보관 시 SHA-256으로 해시되며, 베어러 토큰은 쿼리 스트링이 아닌 Sec-WebSocket-Protocol 헤더로 전달된다. 'npx @loopsy/deploy-relay' 실행 시 워커명·선택적 커스텀 도메인을 묻고, 32바이트 무작위 PAIR_TOKEN_SECRET를 생성한 뒤 wrangler 배포(첫 실행 시 브라우저로 OAuth)를 수행하고 stdin으로 시크릿을 주입(클립보드·프로세스 인자에 노출되지 않음)한다. 릴레이 URL은 '~/.loopsy/relay.json'에 저장된다.

모바일 클라이언트 '/app'은 iOS Safari·Android Chrome에서 설치 없이 동작하며, iOS·iPadOS·안드로이드 네이티브 앱은 각각 앱스토어·플레이스토어 심사 중이다. 풀 PTY와 ANSI·스크롤백·리사이즈를 지원해 TUI도 정상 렌더링되고, 탭 전환·화면 잠금·신호 손실 후에도 세션이 유지된다. Web Speech API 기반 음성 입력과 세션별 auto-approve 옵션('--dangerously-skip-permissions', '-y', '--full-auto' 확인 프롬프트 스킵)도 제공한다(기본값 off, 첫 실행 시 macOS 확인 다이얼로그).

CLI는 데몬 제어용 'loopsy init/start/stop/status', 헬스체크 'loopsy doctor', 자동 시작 'loopsy enable/disable'(launchd·systemd·작업 스케줄러), 감사 로그 'loopsy logs [-f]', API 키 'loopsy key show/generate'를 제공한다. 폰 페어링용으로는 'loopsy mobile pair [--ttl <초>]', 'loopsy phone list', 'loopsy phone revoke <id>', 'loopsy relay configure <URL>'을 지원한다.

머신 간 연동에서는 모든 머신에 데몬을 띄우면 mDNS로 서로 발견하고, 'loopsy pair'로 한 쪽이 6자리 코드를 출력하면 다른 쪽이 'loopsy pair 192.168.1.50' 형태로 입력해 ECDH(P-256) 기반의 6자리 짧은 인증 문자열을 시각 비교 방식으로 페어링한다. 페어링 후 데몬을 재시작하면 'loopsy_*' MCP 도구가 AI 코딩 에이전트(Claude Code·Codex CLI·Gemini CLI·Opencode)에 자동 노출된다. mDNS가 막히는 환경에서는 'loopsy peers add 192.168.1.50'으로 수동 등록이 가능하다.

MCP 도구로는 'loopsy_list_peers', 'loopsy_peer_status', 원격 명령 실행 'loopsy_execute', 장기 PTY 세션 'loopsy_session_start/_stop/_list/_remove', 파일 푸시·풀 'loopsy_transfer_file', 허용 경로 내 원격 파일 탐색 'loopsy_list_remote_files', 공유 키/값 저장소 'loopsy_context_set/_get/_list/_delete', 전체 온라인 피어 동시 기록 'loopsy_broadcast_context', 메시지 송수신 'loopsy_send_message'·'loopsy_check_inbox', 수신 확인 'loopsy_check_ack/_ack_message' 등이 포함된다.

에이전트 간 메시지 프로토콜은 컨텍스트 저장소를 매개로 동작한다. 수신 측 머신에 'inbox:<recipient>:<msg_id>', 송신 측에 'outbox:<msg_id>', 송신 측의 'ack:<sender>'에 마지막 처리 메시지 ID를 두는 컨벤션으로 전송 보장·ACK·재시도를 갖췄다. LAN 에이전트 간 트래픽은 릴레이를 거치지 않고 데몬끼리 직접 통신하며, 데몬을 LAN에 노출하려면 'loopsy start --lan' 옵트인이 필요하고 기본값은 localhost 한정이다.

릴레이는 폰↔데몬 연결의 TLS 종단 지점이라 운영자(자체 호스팅 시 본인의 Cloudflare 워커, 기본값 사용 시 'relay.loopsy.dev')가 PTY 입출력을 모두 볼 수 있다는 점이 한계로 명시됐다. sudo 프롬프트나 스크립트가 출력하는 시크릿이 그대로 노출될 수 있으며, 폰↔데몬 종단간 암호화는 v1.1 로드맵으로 잡혀 있다. Cloudflare Workers 무료 티어와 SQLite 기반 Durable Objects 무료 티어가 개인 사용을 커버한다고 안내한다.

AI인사이트 편집팀

이 기사는 AI 기술을 활용해 작성되었으며, 편집팀이 검수했습니다.

관련 기사