블로그
제로 클라우드 아키텍처: Tactic Remote가 코드를 사용자 기기에 보관하는 방법
Tactic Remote는 제로 클라우드 아키텍처로 동작하며, 모든 코드 실행, 세션 데이터, 파일 접근이 개발자의 Mac에 유지됩니다. iPhone과 Mac 간의 직접 암호화 연결은 당사 인프라를 완전히 우회합니다.
이 카테고리의 제품 및 엔지니어링 업데이트를 확인하세요.
카테고리 보기매주 AI 도구가 소스 코드를 클라우드 서비스에 업로드했거나, 동의 없이 독점 데이터로 학습했거나, 잘못 구성된 API를 통해 개발 환경 자격 증명이 노출되었다는 새로운 사례가 보도됩니다. 개발자가 코드베이스에 접근하는 도구를 의심하는 것은 당연합니다.
Tactic Remote는 처음부터 단순한 원칙을 기반으로 설계되었습니다. 코드는 절대 사용자의 기기를 떠나지 않습니다. 이 글에서는 그 작동 방식, 신뢰 경계의 위치, 그리고 당사가 볼 수 있는 것과 볼 수 없는 것을 정확하게 설명합니다.
"제로 클라우드"의 의미
Tactic Remote에는 클라우드 백엔드가 없습니다. 개발 데이터를 중계, 저장 또는 처리하는 서버를 당사는 운영하지 않습니다. iPhone과 Mac 간의 연결은 직접적입니다.
로컬 네트워크 모드에서 "직접"이란 말 그대로의 의미입니다. iPhone은 로컬 Wi-Fi 네트워크를 통해 Mac과 통신합니다. 트래픽은 네트워크 밖으로 나가지 않습니다. DNS 확인도 외부 서버에 접근하지 않습니다. 연결은 동일 서브넷의 두 기기 사이에서 이루어집니다.
Cloudflare Tunnel 모드에서는 로컬 네트워크 밖에 있을 때 트래픽이 Cloudflare의 엣지 네트워크를 경유하여 Mac에 도달합니다. Cloudflare가 전송 계층을 제공하지만, 애플리케이션 계층 페이로드는 iPhone과 Mac companion 앱 사이에서 종단 간 암호화됩니다. Cloudflare는 암호화된 바이트만 봅니다. 당사는 아무것도 보지 않습니다.
"제로 클라우드"가 구체적으로 다루는 범위:
- 소스 코드 — 당사에 전송되지 않습니다. Claude Code가 읽는 파일 내용은 Mac에 유지됩니다. iPhone 앱의 승인 뷰에서 파일 diff가 표시될 때, 이는 Mac에서 iPhone으로 직접 전달됩니다.
- 세션 기록 — 사용자와 Claude Code 간의 대화는 Mac에 유지됩니다. iPhone은 표시용으로 터미널 출력 스트림을 수신하지만, 이 스트림은 당사가 제어하는 중개자 없이 Mac에서 iPhone으로 직접 전달됩니다.
- Shell 명령 출력 — Mac에 유지됩니다. 표시용으로 iPhone에 스트리밍되지만, 다른 곳에 저장되지 않습니다.
- 승인 결정 — iPhone에서 Mac으로 전달됩니다. 사용자가 무엇을 승인하거나 거부했는지에 대한 기록은 당사에 없습니다.
- 푸시 알림 페이로드 — 당사가 Apple의 인프라와 상호 작용하는 유일한 영역입니다. 자세한 내용은 아래를 참조하세요.
iPhone과 Mac 간의 인증
iPhone을 Mac companion과 페어링할 때, 기기는 다음 두 가지 방법 중 하나로 공유 비밀을 설정합니다:
QR 코드 페어링. Mac companion이 일회용 페어링 토큰과 Mac의 로컬 네트워크 주소가 포함된 QR 코드를 생성합니다. iPhone 앱으로 스캔합니다. 기기는 초기 연결에서 암호화 키를 교환하고, 이후 연결에서는 이 키를 사용하여 인증합니다. 페어링 토큰은 일회용이며 60초 후 만료됩니다.
수동 코드 입력. QR 스캔이 실용적이지 않은 상황에서는 Mac companion이 6자리 코드를 표시합니다. iPhone에서 입력합니다. 이 코드는 QR 토큰과 동일한 역할, 즉 키 교환 부트스트랩을 수행합니다.
페어링 이후 인증은 자동으로 이루어집니다. iPhone은 연결할 때마다 저장된 키를 제시하고, Mac companion은 승인된 기기 목록과 대조하여 검증합니다. 비밀번호, 갱신할 토큰, OAuth 흐름이 필요 없습니다.
페어링 데이터는 Mac에서는 macOS Keychain에, iPhone에서는 iOS Keychain에 저장됩니다. 둘 다 Apple의 Secure Enclave가 제공하는 하드웨어 암호화 저장소입니다.
신뢰 경계
모든 보안 모델에는 신뢰 경계가 있습니다. 외부의 무언가를 신뢰해야 하는 지점입니다. 당사의 신뢰 경계를 명확히 하겠습니다:
Anthropic의 Claude Code를 신뢰합니다
Tactic Remote는 Claude Code의 제어 계층입니다. Claude Code 자체는 Anthropic의 API와 통신하여 응답을 생성합니다. 사용자의 프롬프트와 Claude의 응답은 Anthropic의 서버를 경유합니다. 이는 Claude Code 사용에 본질적인 것이며, Tactic Remote가 추가하거나 제거할 수 있는 것이 아닙니다. Anthropic의 데이터 처리 정책이 이 트래픽에 적용됩니다.
Apple의 푸시 알림을 신뢰합니다
Mac companion이 승인 요청을 전달하기 위해 iPhone을 깨워야 할 때, Apple Push Notification service (APNs)를 통해 푸시 알림을 보냅니다. 알림 페이로드에는 최소한의 알림 — 세션 이름과 작업 유형(예: "Claude가 shell 명령을 실행하려고 합니다")만 포함됩니다. 실제 명령, 파일 내용 또는 소스 코드는 포함되지 않습니다.
알림 페이로드를 최대한 간소하게 설계했습니다. 상세한 승인 정보는 알림을 열 때 iPhone 앱이 Mac에서 직접 가져옵니다. Apple은 Tactic Remote로부터 알림을 수신했다는 사실을 알 수 있지만, Claude Code가 무엇을 하고 있는지는 알 수 없습니다.
Cloudflare를 신뢰합니다 (Tunnel 모드에서만)
원격 접근에 Cloudflare Tunnel을 사용하는 경우, 트래픽은 Cloudflare의 네트워크를 경유합니다. Cloudflare 통합 문서에서 설명한 대로, 전송 계층은 Cloudflare의 것이지만 애플리케이션 페이로드는 Cloudflare가 보유하지 않는 키로 암호화됩니다.
로컬 네트워크를 신뢰합니다 (로컬 모드에서만)
로컬 네트워크 모드에서 연결의 보안은 Wi-Fi 네트워크의 보안에 의존합니다. 신뢰할 수 있는 가정 또는 사무실 네트워크에서는 문제없습니다. 공용 Wi-Fi 네트워크에서는 로컬 모드 트래픽이 이론적으로 가로채질 수 있습니다. 네트워크 유형에 관계없이 WebSocket 연결에 TLS를 사용하지만, 신뢰할 수 없는 네트워크를 통해 연결할 때는 Cloudflare Tunnel 모드를 권장합니다.
당사가 볼 수 있는 것과 볼 수 없는 것
데이터 접근에 대한 투명성은 타협할 수 없다고 생각합니다. 다음은 정확한 내역입니다:
| 데이터 | 볼 수 있는가? | 설명 |
|---|---|---|
| 소스 코드 | 아니오 | Mac을 떠나지 않음 |
| 세션 기록 | 아니오 | Mac에서 iPhone으로만 |
| 실행된 명령 | 아니오 | Mac에서 iPhone으로만 |
| 승인 결정 | 아니오 | iPhone에서 Mac으로만 |
| 읽거나 쓴 파일 | 아니오 | Mac 로컬에서만 |
| 알림 전달 상태 | 예 | Apple이 전달 상태를 보고 |
| 앱 충돌 보고서 | 예 (옵트인) | 표준 iOS 충돌 보고 |
| 사용 분석 | 예 (옵트인) | 세션 수, 시간 — 콘텐츠 없음 |
옵트인 분석(활성화된 경우)에는 집계된 사용 지표만 포함됩니다: 시작된 세션 수, 평균 세션 시간, 연결 모드 분포. 콘텐츠, 파일 경로, 명령 텍스트는 포함되지 않습니다. 분석은 iPhone 앱 설정에서 완전히 비활성화할 수 있습니다.
네트워크 아키텍처
다음은 일반적인 Tactic Remote 세션 중 네트워크 수준에서 일어나는 일을 설명합니다:
로컬 네트워크 모드
라우터는 두 기기 간의 로컬 트래픽을 확인합니다. ISP는 Tactic Remote와 관련된 것을 전혀 보지 않습니다. 유일한 외부 트래픽은 Claude Code와 Anthropic API의 통신이며, 이는 Tactic Remote 사용 여부와 관계없이 발생합니다.
Cloudflare Tunnel 모드
Cloudflare가 보는 것은 암호화된 애플리케이션 트래픽입니다. Mac의 cloudflared 데몬이 Cloudflare 터널을 종료하고 트래픽을 localhost의 Mac companion으로 전달합니다. Cloudflare 엣지 네트워크 외에는 어떤 외부 주체도 트래픽을 처리하지 않으며, Cloudflare는 애플리케이션 계층 암호화를 복호화할 수 없습니다.
위협 모델
다음 공격 시나리오와 아키텍처의 대응 방식을 검토했습니다:
Wi-Fi 네트워크 침해. WebSocket 연결의 TLS가 수동적 도청을 방지합니다. TLS 가로채기(MITM) 공격을 수행하는 능동적 공격자는 iPhone 앱의 인증서 피닝을 무력화해야 하며, 이는 높은 복잡도의 공격입니다.
iPhone 도난. Tactic Remote 앱을 열려면 생체 인증(Face ID 또는 Touch ID)이 필요합니다. 페어링 키는 Secure Enclave에 저장되며, 탈옥된 기기에서도 추출할 수 없습니다. 도난된 iPhone으로는 소유자의 생체 정보 없이 작업을 승인하거나 세션 데이터를 볼 수 없습니다.
Mac 침해. 공격자가 Mac에 접근할 수 있다면, Claude Code가 접근할 수 있는 모든 것에 접근할 수 있습니다. 이는 Tactic Remote의 유무와 관계없이 동일합니다. Tactic Remote는 침해된 Mac의 공격 범위를 확대하지 않습니다.
악성 Mac companion 업데이트. Mac companion은 당사 웹사이트를 통해 서명된 바이너리로 배포됩니다. macOS Gatekeeper가 실행 전에 코드 서명을 검증합니다. 자동 업데이트를 푸시하는 기능은 없으며, 사용자가 수동으로 업데이트를 다운로드하고 설치해야 합니다.
이것이 중요한 이유
AI 지원 개발 도구의 추세는 샌드박스 환경에서 실행되고 리포지토리 통합을 통해 코드에 접근하는 클라우드 호스팅 에이전트를 향하고 있습니다. 이 모델은 일부 팀에게는 유효하지만, 도구 벤더에게 소스 코드, 자격 증명, 개발 워크플로를 맡겨야 합니다.
Tactic Remote는 반대의 접근법을 취합니다. Mac이 실행 환경입니다. 코드는 사용자의 디스크에 유지됩니다. 자격 증명은 Keychain에 유지됩니다. 관여하는 유일한 AI 서비스는 Claude Code와 Anthropic API의 기존 관계이며, 이는 Claude Code를 설치할 때 이미 동의한 것입니다.
이 아키텍처에는 비용이 있습니다. 전원이 켜진 상태의 Mac이 필요합니다. 네트워크 연결을 직접 관리해야 합니다. 아무 브라우저에서나 동작하는 클라우드 대시보드의 편의성은 없습니다.
이 트레이드오프는 가치가 있다고 생각합니다. 독점 소프트웨어를 개발하거나, 민감한 데이터를 다루거나, 규제 산업에서 일하는 개발자에게 "내 코드는 기기를 떠난 적이 없다"고 말할 수 있는 것은 기능이 아니라 요구 사항입니다.
보안 강화 권장 사항과 상세한 구성 가이드는 보안 및 네트워크 강화 문서를 참조하세요.