출처
- source_url: https://discuss.pytorch.kr/t/serve-sim-ios-ai-cli/11091
- author: 9bow
- published: Mon, 06 Jul 2026 08:30:41 +0000
- raw: raw source:
web-2026-07-06-pytorchkr-topic-11091-serve-sim-ios-simulator-browser-agent-cli
개요
serve-sim은 macOS iOS 시뮬레이터의 화면을 브라우저로 MJPEG 스트리밍하고, AI 코딩 에이전트(Codex, Cursor, Claude Desktop)가 WebSocket 제어 채널을 통해 시뮬레이터를 직접 조작할 수 있게 해주는 CLI 도구다. npx serve-sim 한 줄로 http://localhost:3200에서 미리보기가 열리며, simctl io로 프레임버퍼를 캡처하는 Swift 헬퍼 위에 React 미리보기 UI를 얹은 구조다. Expo 프레임워크 개발자 Evan Bacon이 만들었으며 React Native와 무관하게 모든 iOS 시뮬레이터(iPhone, iPad, Apple Watch)에서 동작한다.
핵심 포인트
- 동작 구조: simctl io로 프레임버퍼 캡처 → Swift 헬퍼(per-device) → MJPEG 스트림 + WebSocket 제어 채널 → 브라우저 미리보기 UI. Xcode 플러그인이나 앱 계측 불필요.
- 브라우저 기능: 60 FPS 영상 스트리밍, 핀치 줌/홈 스와이프 제스처, 키보드 입력 전달, 이미지/영상 드래그 앤 드롭 추가 지원.
- 에이전트 연동: 저장소 내 skills/serve-sim 디렉토리에 Agent Skill 표준 구성 포함. Claude Code, Cursor, Codex CLI, Gemini CLI에서 탭/제스처/버튼/회전/카메라 주입 등을 CLI로 조작 가능.
- 카메라 주입: serve-sim camera
로 DYLD_INSERT_LIBRARIES 방식의 dylib이 AVFoundation을 스위즐링해 앱 재시작 없이 애니메이션/이미지/영상/호스트 웹캠을 카메라 입력으로 대체. - CLI 하위 명령: gesture(터치), button(하드웨어 버튼), type(텍스트), rotate(회전), 메모리 경고 시뮬레이션 등.
- 개발 서버 통합: Expo 프로젝트는 metro.config.js에 serve-sim/middleware를 끼워 npx expo start와 자동 연동. Vite/Next/Express에도 적용 가능.
- 설치 조건: Xcode CLI 도구(xcrun simctl), Node.js 20+, Apple Silicon 전용(번들 Swift 헬퍼가 arm64 바이너리). npx serve-sim 또는 npx serve-sim “iPhone 16 Pro”로 특정 기기 지정 가능.
왜 중요한가
AI 코딩 에이전트가 iOS 앱을 개발할 때 자신이 만든 UI를 직접 보고 조작할 방법이 없던 문제를 해결한다. 브라우저-에이전트 연동 파이프라인을 통해 시뮬레이터 화면 스트림과 로그, 제어 채널을 한 곳에 모아 에이전트가 iOS 앱 검증을 자동화할 수 있는 기반을 제공한다.
후속 링크 / 키워드
- 저장소: https://github.com/EvanBacon/serve-sim (Apache-2.0)
- PhoneAgent: OpenAI GPT-4.1로 iOS 앱 조작
- mobile-use: 자연어로 Android/iOS 조작 오픈소스
- DroidRun: 자연어 명령 모바일 제어 에이전트
- Paseo: Claude Code/Codex를 모바일/데스크톱에서 쓰는 셀프 호스팅 도구
- 키워드: simctl, MJPEG stream, Agent Skill, DYLD_INSERT_LIBRARIES, AVFoundation swizzling, Expo middleware
원문 보존 위치
원문 전체는 raw source: web-2026-07-06-pytorchkr-topic-11091-serve-sim-ios-simulator-browser-agent-cli에 source_url 및 HTML 원문과 함께 저장되어 있습니다.