onehumanbeing/esp32-iphone-agent는 AI 비전 모델이 실제 아이폰 화면을 보고 직접 터치·입력하도록 만드는 파이썬 기반 오픈소스 프로젝트다. 지난 11일 저장소가 만들어졌고, 14일 기준 GitHub 스타 2,064개를 기록했다. 라이선스는 MIT다.

무엇을 하나

기존 아이폰 자동화는 XCTest나 WebDriverAgent를 쓴다. 이 방식은 맥과 엑스코드(Xcode), 서명된 보조 앱, 애플 개발자 계정이 필요하다. README에 따르면 무료 계정은 서명이 7일마다 만료된다. 이 프로젝트는 사람이 쓰는 경로인 화면과 포인터만 이용하므로 폰에 아무것도 설치할 필요가 없다. 화면 픽셀만 보기 때문에 게임을 포함한 모든 앱에서 쓸 수 있다는 것이 개발자 설명이다. 컴퓨터는 맥뿐 아니라 리눅스도 지원한다.

작동 방식

구조는 눈, 손, 두뇌로 나뉜다.

  • 눈: 아이폰이 에어플레이(AirPlay) 미러링으로 컴퓨터의 UxPlay에 화면을 보내면, GStreamer 파이프라인이 이를 JPEG 프레임으로 바꿔 에이전트와 웹 페이지에 전달한다.
  • 손: 아이폰 USB 포트에 꽂은 ESP32-S3 보드가 표준 마우스·키보드로 인식된다. iOS의 '어시스티브터치'를 켜면 마우스 클릭은 탭, 드래그는 스와이프가 된다. 보드는 와이파이로 컴퓨터와 연결돼 move, click, type 같은 한 줄 명령만 실행하고, 판단 로직은 모두 컴퓨터에 둔다.
  • 두뇌: 플래너 모델이 목표와 현재 화면으로 짧은 계획을 세우고, 액터 모델이 화면마다 탭·스와이프·경로 그리기·입력·홈 이동·종료 중 다음 동작을 고른다. 두 역할에 같은 모델을 써도 된다. OpenAI 호환 이미지 입력 API라면 클라우드든 자체 구축 모델이든 쓸 수 있다.

포인터가 상대 좌표로 움직이기 때문에 서버가 위치를 추적한다. 탭 전에 포인터를 흔들어 화면에서 위치를 찾아 오차를 보정하고, 동작 뒤에는 화면이 실제로 바뀌었는지 확인해 모델에 알려 실패한 탭을 재시도하게 한다.

써보면

보드는 Seeed Studio XIAO ESP32S3로 시험했으며 약 7달러다. hardware/flash.sh로 펌웨어를 올리고 서버를 설치해 실행한다.

cd server
python3 -m venv .venv && .venv/bin/pip install -e .
cp .env.example .env   # LLM_BASE_URL / LLM_MODEL / LLM_API_KEY 설정
set -a && . ./.env && set +a && .venv/bin/python -m hidagent

이후 http://<컴퓨터 IP>:8890에서 웹 UI를 열고, 폰에서 어시스티브터치를 켠 뒤 화면 미러링으로 연결해 보정(Calibrate)을 하면 된다. 웹 UI는 실시간 화면, 로그, 단계별 스크린샷 모음, 비상 정지를 제공한다. README는 '화이트보드 앱에서 웃는 얼굴 그리기', '매일 오전 7시 알람 설정' 같은 예시를 든다.

로컬 모델 구성도 소개한다. 엔비디아 DGX Spark 두 대에서 Qwen3.8-Flash 계열 모델을 돌리면 사고 모드를 끈 상태에서 동작당 약 1.3초, 계획당 약 2초가 걸렸다고 개발자는 밝혔다.

의의와 한계

비슷한 프로젝트로 VersaiOS, glassbox, phone-agent 등이 있으며, README는 HDMI 캡처 장비나 폰용 앱 설치, 엑스코드 서명이 필요 없다는 점을 차이로 꼽는다.

제약도 분명하다. 암호 입력, 애플페이, DRM 영상 등 미러링되지 않는 화면은 볼 수 없고, 폰이 잠기면 미러링이 끊긴다. 키보드 입력은 ASCII만 되므로 한글 입력은 아직 어렵고, 가로 모드 앱도 지원하지 않는다. 개발자는 본인이 소유하거나 사용 권한이 있는 기기·계정에만 쓰라고 당부했다. 한국어 입력 지원 여부는 국내 사용자에게 실사용의 관건이 될 전망이다.