codex-mobile
무엇인가
codexapp은 Codex app-server 워크플로를 브라우저에서 조작하게 하는 경량 브리지다. Codex 데스크톱 앱 UI를 웹 서버로 노출하는 계열에 속하며, 터미널·데스크톱 앱에 묶여 있던 접근 경로를 HTTP 엔드포인트로 바꾼다.
어떻게 동작하나
실행하면 Node.js 프로세스가 로컬 웹 서버를 띄우고 기본 포트 18923에서 UI를 제공한다. 기본 동작으로 터널을 함께 시작해 터널 URL, 터미널 QR 코드, 비밀번호를 시작 출력에 함께 인쇄하며 --no-tunnel로 터널을 끈다. 브라우저는 로컬, LAN, 리버스 프록시, 터널 경로로 접속한다. composer의 hold-to-dictate 음성 입력은 전사 결과를 작성 중인 초안에 추가한다. 프로젝트 ZIP 내보내기는 Codex 채팅 JSONL 기록을 .codex-project/chats/ 아래에 포함하고, 가져온 채팅은 대상 CODEX_HOME, 프로젝트 경로, 선택한 provider/model에 맞게 다시 쓴다.
무엇과 다른가
Codex 데스크톱 앱이나 터미널 전용 실행과 달리 UI를 웹으로 분리한다. 서버 머신에서 Codex app-server를 돌리고 다른 기기 브라우저로 접속하는 원격·헤드리스 구성이 가능하다. Tailscale Serve로 tailnet 내부에 HTTPS로 게시할 수 있다. 선택적 Telegram 봇 브리지는 Telegram 메시지를 매핑된 Codex 스레드로 전달하고 assistant 응답을 Telegram으로 되돌린다. UI에는 검색 가능한 프로젝트 선택기, Create Project, 모바일 드로어 사이드바, Skills Hub가 포함된다.
어떻게 쓰나
설치는 npx codexapp로 전역 설치 없이 실행한다. Linux, Windows PowerShell, Termux에서 같은 명령을 쓰며 기본 접속 주소는 http://localhost:18923이다. Android Termux에서는 세션을 유지하고 배터리 최적화를 끄며 지속 알림을 켜야 한다. iPhone/iPad는 Tailscale Serve로 HTTPS URL을 열고 홈 화면에 추가한다. Telegram 브리지는 TELEGRAM_ALLOWED_USER_IDS를 설정해야 하며 /start, /threads, /newthread, /thread, /current, /history, /status, /whoami, /help 명령을 쓴다.
전제와 한계
Node.js 18+와 Codex app-server 환경이 필요하다. Telegram 브리지는 allowlist user ID가 없으면 수신 메시지를 거부한다. Android에서 Termux 프로세스가 종료되면 npx codexapp를 다시 실행해야 한다. ZIP 가져오기는 브라우저 업로드 특성상 선택한 ZIP을 한 번 버퍼링하고, 내보내기는 생성·gitignore 폴더를 건너뛰며 스트리밍한다. iOS Safari는 HTTPS 보안 컨텍스트가 필요하고 일부 CSS 문제가 있을 수 있으며, 인증 동작은 프록시 구성에 따라 달라질 수 있다.