본문으로 건너뛰기

Remodex: iPhone에서 OpenAI Codex를 원격 제어하는 로컬 우선 브리지

정석

Remodex

OpenAI Codex는 강력한 AI 코딩 도구지만, 데스크톱에 묶여 있습니다. 자리를 비우면 진행 상황을 확인하거나 방향을 조정할 수 없죠.

Remodex는 이 문제를 iPhone에서 Codex를 원격 제어하는 방식으로 해결합니다. 핵심은 모든 실행은 Mac에서, 제어만 iPhone에서 한다는 점입니다.


1) 아키텍처: 로컬 우선 설계

┌──────────────┐       Paired session   ┌───────────────┐       stdin/stdout       ┌─────────────┐
│  Remodex iOS │ ◄────────────────────► │ remodex (Mac) │ ◄──────────────────────► │ codex       │
│  app         │    WebSocket bridge    │ bridge        │    JSON-RPC              │ app-server  │
└──────────────┘                        └───────────────┘                          └─────────────┘

핵심 원칙:

원칙설명
로컬 우선Codex, git, 작업공간 작업은 Mac에서 실행
iPhone은 리모컨제어만 담당, 실제 실행은 Mac
E2E 암호화프롬프트, 응답, git 출력 모두 암호화
자체 호스팅릴레이 서버 직접 운영 가능

2) 보안: End-to-End 암호화

Remodex는 단순한 WebSocket 프록시가 아닙니다. 완전한 E2E 암호화 채널을 구축합니다.

2.1 암호화 핸드셰이크

// secure-transport.js
const HANDSHAKE_TAG = "remodex-e2ee-v1";
const SECURE_SENDER_MAC = "mac";
const SECURE_SENDER_IPHONE = "iphone";

핸드셰이크 과정:

  1. 브리지 키 페어 생성: Mac이 장기 identity 키페어 생성
  2. QR 페어링: 연결 URL, 세션 ID, identity 공개키 포함
  3. 키 교환: X25519 ephemeral 키와 nonce 교환
  4. 서명 검증: Ed25519으로 핸드셰이크 서명 검증
  5. 세션 키 도출: HKDF-SHA256으로 AES-256-GCM 키 도출
// 암호화 래핑
function queueOutboundApplicationMessage(payloadText, sendWireMessage) {
  const encrypted = encryptEnvelope(payloadText, sessionKey);
  // monotonic counter로 replay protection
}

2.2 프라이버시

볼 수 있는 것볼 수 없는 것
연결 메타데이터프롬프트 내용
세션 ID, 디바이스 IDCodex 응답
공개키, noncegit 출력
핸드셰이크 결과작업공간 RPC

3) Git 통합

브리지가 git/* JSON-RPC 호출을 가로채 로컬에서 실행합니다.

// git-handler.js
async function handleGitMethod(method, params) {
  const cwd = await resolveGitCwd(params);

  switch (method) {
    case "git/status":    return gitStatus(cwd);
    case "git/commit":    return gitCommit(cwd, params);
    case "git/push":      return gitPush(cwd);
    case "git/pull":      return gitPull(cwd);
    case "git/branches":  return gitBranches(cwd);
    case "git/checkout":  return gitCheckout(cwd, params);
    // ...
  }
}

지원 Git 작업:

명령설명
git/status브랜치, 추적 정보, 변경 파일
git/commit스테이징 변경 커밋
git/push리모트에 푸시
git/pull리모트에서 풀 (충돌 시 자동 중단)
git/branches브랜치 목록
git/checkout브랜치 전환
git/createBranch새 브랜치 생성 및 전환
git/stash / stashPop스태시
git/resetToRemote하드 리셋 (확인 필요)

4) 주요 기능

4.1 실시간 스트리밍

iPhone에서 Codex가 실행되는 동안 실시간으로 응답을 스트리밍합니다.

// rollout-live-mirror.js
// JSONL rollout 파일을 감시해서 실시간 미러링

4.2 Plan Mode & Fast Mode

모드설명
Fast Mode낮은 지연 시간 우선
Plan Mode실행 전 구조화된 계획

4.3 Steer & Queue

4.4 사진 첨부

카메라나 라이브러리에서 사진을 첨부해 Codex에 전달할 수 있습니다.

4.5 알림

턴 완료나 주의 필요 시 인앱 알림을 받습니다.

5) Codex 데스크톱 앱 통합

Remodex는 Codex CLI와 데스크톱 앱 모두와 작동합니다.

// bridge.js
const codex = createCodexTransport({
  endpoint: config.codexEndpoint,
  env: process.env,
});

동작 방식:

알려진 제한:

# 데스크톱 새로고침 워크어라운드
REMODEX_REFRESH_ENABLED=true remodex up

6) 연결 복원력

// 브리지가 일시적 연결 끊김에도 Codex 프로세스 유지
let codexHandshakeState = "cold";
let reconnectAttempt = 0;
기능설명
Auto-reconnect지수 백오프 (1초 → 최대 5초)
Secure catch-up놓친 암호화 메시지 재전송
Codex persistence일시적 연결 끊김에도 Codex 프로세스 유지
Graceful shutdownSIGINT/SIGTERM으로 깔끔한 종료

7) 설치 및 사용

브리지 설치

npm install -g remodex@latest

시작

remodex up

QR 코드가 터미널에 표시되고, iPhone 앱으로 스캔하면 페어링 완료.

CLI 명령어

명령설명
remodex up브리지 시작
remodex reset-pairing페어링 상태 초기화
remodex resume마지막 활성 스레드 열기
remodex watch [threadId]이벤트 로그 실시간 확인

환경 변수

변수설명
REMODEX_RELAY커스텀 릴레이 URL
REMODEX_CODEX_ENDPOINT기존 Codex 인스턴스 연결
REMODEX_REFRESH_ENABLED데스크톱 새로고침 활성화
REMODEX_PUSH_SERVICE_URL푸시 알림 서비스 URL

8) 자체 호스팅

Remodex는 자체 호스팅이 기본 설계입니다.

# 로컬 릴레이 실행
./run-local-remodex.sh

# 또는 커스텀 릴레이 지정
REMODEX_RELAY="ws://localhost:9000/relay" remodex up

릴레이 코드relay/ 폴더에 공개되어 있어 직접 운영 가능.

# Traefik 뒤에 릴레이 배치 예시
REMODEX_RELAY="wss://api.example.com/remodex/relay" remodex up

9) iOS 앱 빌드

cd CodexMobile
open CodexMobile.xcodeproj

Xcode 16+에서 물리 기기 또는 시뮬레이터에 빌드. 타겟은 iOS 18.6.


마치며: 진정한 로컬 우선 원격 제어

Remodex는 “클라우드에서 실행”하는 방식이 아닙니다. Mac이 여전히 진실의 원천이고, iPhone은 안전한 리모컨입니다.

“모든 실행은 로컬, 제어만 원격”

특히 인상적인 점:

  1. E2E 암호화: 릴레이조차 프롬프트/응답을 볼 수 없음
  2. Git 통합: 커밋, 푸시, 브랜치 전환까지 iPhone에서
  3. 자체 호스팅: 릴레이 서버 직접 운영 가능
  4. 연결 복원력: 일시적 끊김에도 작업 유지

이 패턴은 다른 AI 도구에도 적용할 수 있습니다. 로컬 실행 + 원격 제어 + E2E 암호화 조합은 프라이버시와 편의성을 모두 만족시키는 방향입니다.


🔗 관련 정보

이전
Hyperspace AGI: 완전히 분산된 P2P AGI 시스템의 시작
다음
GitNexus: AI 에이전트를 위한 코드베이스 지식 그래프 구축