내 책상 서랍에는 대략 열여덟 달 동안 나에게는 죽은 물건이나 다름없었던 Pixel 4a 한 대가 놓여 있었다. 배터리는 다 늙었고, 뒷유리는 금이 갔고, SIM 트레이 경첩도 살짝 물렁했다. 그런데 그 안에는 2.0 GHz 8코어 CPU와 6기가 램이 들어 있었다 — 말하자면, 작고 쓸 만한 리눅스 컴퓨터 한 대가 거기 앉아 있었던 셈이다.
지난주에 그 폰을 충전하고, Termux를 깔고, 거기에 Hermes Agent를 밀어 넣었다. 20분 뒤에는 내가 그날 실제로 들고 다니던 현역 폰의 텔레그램 앱에서 AI 어시스턴트와 대화를 하고 있었다. 이 글은 그게 어떻게 돌아가는지, 그리고 왜 "폰이라는 환경의 제약"이 오히려 Hermes라는 물건의 본모습을 잘 비춰 주는 렌즈가 되는지에 관한 이야기다.
안드로이드 폰 위에서 실제로 뭐가 돌아가는가
Hermes Agent는 파이썬 프로그램이다. Termux — 플레이스토어에 있는 오래 묵은 버전 말고, F-Droid 빌드 — 가 안드로이드 위에 진짜 리눅스 유저랜드를 깔아 준다. apt, Python 3, git, ssh, 셸. 이 정도면 Hermes 설치 과정 대부분이 VPS에서 돌아가던 것과 똑같이 통한다.
안드로이드에서 달라지는 건 Hermes 쪽이 아니다. Hermes를 둘러싼 OS 쪽이다.
오래 돌아가는 백그라운드 프로세스 입장에서 보면, 안드로이드는 적대적인 호스트다. systemd도 없고, 전통적인 init도 없고, 전원 관리자는 호전적이다 — 화면이 포그라운드에 없는 프로세스를 기꺼이 얼려 버리고, 화면을 잠그는 바로 그 순간에 그걸 실행한다. 아무 조치 없이 Hermes를 그냥 띄우면, 디스플레이가 꺼지자마자 텔레그램 봇은 답장을 멈춘다.
요령은 Termux에 내장된 wakelock 도우미(termux-wake-lock)다. 이 친구가 안드로이드한테 "이 프로세스는 건드리지 말아 달라"고 정중하게 부탁한다. 여기에 tmux나 screen을 얹어서 셸 연결이 끊겨도 세션이 살아남게 만들고, 폰을 충전기에 꽂아 두면 — 서랍 안쪽에서 조용히 돌아가는 작은 상시 서버가 한 대 완성된다.
왜 Hermes가 진짜로 폰에 들어가는가
"폰에 올리는 AI 어시스턴트" 부류의 프로젝트는 대개 둘 중 하나로 간다. 하나는 커다란 모바일 앱을 만들어서 API 호출 한 겹을 감싸는 것(결국 남의 에이전트한테 붙는 채팅 클라이언트에 지나지 않는다), 다른 하나는 기기 위에서 양자화된 작은 모델을 직접 돌려 보려다가 느리고 별로 똑똑하지도 않은 물건을 만나게 되는 것이다. Hermes는 둘 다 하지 않는다.
폰 위에서 실제로 돌아가는 건 Hermes의 게이트웨이다 — 텔레그램, 디스코드, 슬랙 같은 플랫폼에 달라붙어 메시지를 주고받고, 세션을 관리하고, 네가 고른 언어 모델 프로바이더와 이야기를 나누는 바로 그 부분 말이다. 언어 모델 본체가 폰 안에 살 필요는 없다. 폰이 HTTPS로 Nous Portal, OpenAI, Anthropic, 또는 아무 프로바이더하고나 대화하게 만들면 된다. 폰의 역할은 작고 싸고 항상 켜져 있는 조율자가 되는 거다. 무거운 일은 클라우드에서, 다른 서버에서, 또는 네가 원하는 아무 곳에서나 처리하게 두면 된다.
바로 이 지점에서, v0.2.0에서 내려진 아키텍처 결정들이 — Hermes를 염두에 두고 설계된 적이 전혀 없는 장비 위에서 — 조용히 값을 한다. 중앙 프로바이더 라우터 덕분에 폰은 기본적으로 싼 모델(예컨대 Nous Portal의 무료 티어 MiMo)로 굴리다가, 정말 어려운 작업일 때만 더 강한 모델로 올려 쓸 수 있다. 스킬 매니페스트 시스템은 전제 조건이 실제로 기기에 갖춰진 스킬만 로드한다 — 헤드리스 크롬도 없는 폰 위에서 브라우저 자동화 스킬이 혼자 크롬을 띄우려 들 일은 없다. 파일시스템 체크포인트와 롤백 장치도 그대로 동작한다. 아래에 깔린 기기가 얼마나 힘이 없는지에는 신경 쓰지 않는 구조이기 때문이다.
무엇을 내주고, 무엇을 돌려받는가
폰 위에서 돌아가지 않는 것들은 대체로 예상대로다. systemd 서비스로 설치할 수 없다(그래서 tmux로 대체하고, 재부팅 한 번이 곧 게이트웨이를 수동으로 다시 띄우는 걸 의미한다는 걸 받아들여야 한다), 무거운 로컬 추론은 무리고, 도커 기반 툴 샌드박스도 무리고, 로컬 브라우저 자동화도 제한적이다. 브라우저 스킬은 다른 머신의 헤드리스 크롬을 가리키게 해 주면 여전히 쓸 수 있지만, 안드로이드 자체가 Playwright를 대신 띄워 주지는 않는다.
대신 돌려받는 건, 작은 상시 서버가 매력적으로 느껴지는 요소 전부다. 기본 LTE(폰 자체가 자기 네트워크다), 내장 UPS(정전이 나도 배터리가 몇 시간은 버텨 준다), 내장 모니터링(폰의 배터리 표시창이 이 서버가 지금 뭘 하고 있는지 정확히 말해 준다), 그리고 완전한 무소음. 팬 소음 제로, 랙 공간 제로, 소비 전력은 무드등 한 개 수준.
그래서 진짜 하고 싶은 얘기
죽어 있던 폰에서 Hermes를 돌리는 일이 재미있는 이유는 "돌아간다"는 사실 자체가 아니다. 200달러짜리 서버에서 돌릴 때와 똑같은 방식으로 돌아간다는 점이다. 에이전트가 자기가 올라탄 기기로부터 떨어져 나오는 순간, 어느 기기에서 굴리느냐는 사실 별로 중요한 문제가 아니게 된다.
서랍 안의 죽어 있던 Pixel 4a는, 하루에 열 번쯤 말 거는 봇의 집으로는 차고 넘치는 자리다. 이건 타협이 아니다. 이게 바로 이 모든 이야기의 본론이다.