AI 어시스턴트가 진짜인지 가장 빠르게 확인하는 방법은, 어머니에게 메시지를 보내라고 시키는 것이다.
농담이 아니다. 2025년 내내, 그리고 2026년 1분기까지 내가 써본 모든 "AI 에이전트"는 같은 시험에서 같은 이유로 넘어졌다. 평범한 사람이 실제로 쓰는 플랫폼에서 그 평범한 사람한테 닿지 못한다는 것. Telegram, 된다. Discord, 괜찮다. iMessage? 침묵. 우리 가족 전부가 사는 곳이 iMessage라는 뜻은, v0.9.0 이전까지 Hermes Agent가 우리 어머니한테 메시지 한 통 못 보냈다는 얘기다.
2026년 4월 13일, v0.8.0이 자기 뇌에 패치를 댄 지 정확히 닷새 후, v0.9.0이 그걸 고쳤다. 같은 모양의 구멍 두 개를 더 메우고, 게이트웨이를 가로지르는 보안 감사를 한 바퀴 돌리고, 닷새 안에 어떻게든 269건의 PR을 머지했다. 릴리스 노트는 이 버전의 메시징 플랫폼 합계를 열여섯 개로 부른다. 두 달 전에는 그 숫자가 7이었다.
토요일 하루에 안착한 세 개의 플랫폼
v0.9.0에서 출시된 새 게이트웨이는 셋이다. 셋 다 기존 목록이 못 막던 구멍을 하나씩 골라서 막으러 갔다.
첫 번째는 BlueBubbles (iMessage). BlueBubbles는 몇 년째 iMessage를 바깥 세상에 붙여주고 있는 오픈 소스 브릿지인데, v0.9.0이 그 webhook 프로토콜에 대한 완전한 adapter를 냈다. 자동 등록까지 포함이라 URL을 손으로 고칠 필요가 없다. 집에 BlueBubbles를 돌리는 Mac이 있다면, 이제 iMessage를 쓰는 Hermes Agent가 손에 있는 셈이다.
두 번째는 WeChat(微信), 네이티브 iLink Bot API 경유. 스크린 스크레이프가 아니고, 웹 에뮬레이터도 아니다. 진짜 bot API다. 스트리밍 출력과 미디어 업로드까지 된다. 중국 본토에서 Hermes를 돌리는 사람한테, 이건 "외국인 장난감 프로젝트"와 "실제 배포 가능한 물건" 사이의 차이다.
세 번째는 WeCom 콜백 모드—WeCom의 사내 자체 앱 쪽 통합으로, 원자적 상태 영속화가 붙어 있다. 게이트웨이가 재시작되는 순간 사용자를 대화 중간에 버려두지 않게 하려는 것. "원자적 상태 영속화"라는 표현은 v0.9.0 릴리스 노트에 세 번 나온다. 이 노트를 쓴 사람은 stale-state 버그한테 충분히 시달렸던 모양이다.
세 개의 플랫폼, 완전히 다른 세 가지 운영 카테고리, 한 번의 릴리스.
터미널이 지긋지긋한 모두를 위한 web dashboard
누가 Hermes를 쓸 수 있는지를 바꾼 다른 변경은 새 Local Web Dashboard다—Hermes 설치 옆에서 같이 돌아가는 브라우저 UI로, 전에는 hermes setup과 hermes model 뒤에 숨어 있던 설정을 테이블 위로 끌어올린다. 로컬에서 돌고, 외부에 전화하지 않고, "근데 우리 친구는 터미널 안 쓰는데"라는 질문의 답이 "그럼 터미널 배우라고 해"가 아니게 된 첫 번째 릴리스다.
조용히, 이 릴리스는 "Hermes Agent에는 GUI가 있다"고 말할 때 더 이상 각주가 필요 없어진 첫 버전이기도 하다. v0.11.0에서는 dashboard에 i18n, 테마, 모바일 반응형이 쌓일 거다—하지만 토대는 여기서 깔린다.
/fast, /debug, 그리고 작지만 시끄러운 라인
v0.9.0에서 떨어진 슬래시 커맨드 한 다발이 있는데, 그중 자기 체급 위로 한 방 먹이는 게 /fast다. 활성 모델을 프로바이더 쪽 우선 처리 레인으로 옮긴다—프로바이더에 그런 레인이 있는 경우에 한해서, 출시 시점엔 OpenAI와 Anthropic. 글로 쓰면 작은 얘기인데, Hermes가 도구 호출 하나에서 빙빙 도는 걸 보고 있는 첫 순간에 커진다. /fast를 치고, 한 박자 기다리고, 계속 간다.
그 주변으로: /debug는 돌리는 어떤 게이트웨이에서든 일발 진단을 끌어낸다. hermes debug share는 디버그 번들을 pastebin에 올려서, 한 화면 가득한 텍스트 덩어리 대신 링크 하나를 붙일 수 있게 해준다. hermes dump는 issue나 채팅에 그대로 복사해 넣을 수 있는 설치 요약을 출력한다. /compress <focus>는 대화를 압축하면서 동시에 "이 줄기는 살려둬"라고 에이전트한테 말할 수 있게 한다.
어떤 것도 헤드라인 기능은 아니다. 다 "빼앗기고 나서야 자기가 매일 쓰고 있었다는 걸 깨닫는" 종류의 기능이다.
backup, import, 그리고 "이제 뭐?"의 죽음
새 커맨드 두 개가 self-hosted 에이전트에서 가장 괴로운 경험 하나를 조용히 잠갔다: hermes backup과 hermes import가 설정 마이그레이션 경로 전체를 덮는다. skill, session, memory, cron 잡, .env 값—전부 통째로 직렬화돼서 빠져나갔다가 통째로 다시 들어온다.
이런 기능은 평소엔 존재감이 0이다. VPS가 불타는 그날까지. 그날 저녁 하나를 살려준다. 같은 변경이, 3월에 써둔 "5달러짜리 VPS" 이야기를 진짜로 옮길 수 있는 이야기로 바꿔놓는다. v0.9.0 이전엔 "Hermes 옮기기"가 "새 Hermes를 처음부터 다시 세팅하면서 빠뜨린 게 없길 기도하기"였다. v0.9.0 이후엔 tarball 하나다.
Termux, proxy, 그리고 조용한 프로바이더 한 무더기
네이티브 Android/Termux가 v0.9.0에서 제대로 된 설치 흐름과 TUI 최적화를 받았다. Termux 경로가 더는 실험적 fork가 아니다—Linux나 macOS와 같은 풀 테스트된 설치 흐름 위에서 돈다. 주머니 속 폰에서 에이전트를 돌리고 싶다면? README와 hermes가 마침내 "어떻게 설치하지"에 대해 같은 입을 쓰게 됐다.
같은 흐름 안에서, 통합 프록시 지원도 드디어 자리를 잡았다: SOCKS, Discord 전용 프록시, 시스템 프록시 자동 감지를 모든 플랫폼에서 일관되게. 회사 방화벽 뒤에서 self-host를 굴리는 사람은 이제 플랫폼마다 다른 프록시 전쟁을 하지 않아도 된다.
프로바이더 쪽에선 이 릴리스가 xAI (Grok)을 일급 시민 프로바이더로 네이티브 통합했고, 네이티브 Xiaomi MiMo, portal 요청 지원이 붙은 Qwen OAuth, Voxtral TTS(Mistral의 오디오 모델)도 들어왔다. 거기에 hermes plugins로 갈아끼울 수 있는 플러그블 context engine까지—컨텍스트 윈도우를 어떻게 조립하는지가 더는 "바꾸려면 프로젝트를 fork하셈" 블랙박스가 아니다.
한 줄로 묻힌 파괴적 변경
v0.9.0의 breaking changes 섹션은 짧지만 읽을 가치가 있다. /prompt 슬래시 커맨드가 제거됐다—릴리스 노트는 그걸 "a prefix expansion footgun(접두어 확장이라는 자해용 총구)"이라고 부른다. 사라지는 기능이 받을 수 있는 가장 정직한 한 줄짜리 추도사 부류다. LLM_MODEL은 deprecated 됐고, 새 변수로의 자동 마이그레이션이 붙었다.
보안: 단일 패치가 아니라 통합 강화 라운드
v0.9.0은 릴리스 노트가 포괄적 보안 강화라고 직접 부른 작업을 한 바퀴 돌렸다. 목록은 감사 체크리스트가 코드베이스를 처음부터 끝까지 한 번 훑은 모양새다: Twilio webhook 서명 검증(SMS 측 RCE 경로 하나 차단), sandbox 작업 내 shell injection 무효화, git 인자 injection 방지, 이미지 업로드의 SSRF 리다이렉트 가드, checkpoint manager의 경로 순회 방지, 그리고 API server의 인증 강제.
이런 종류의 작업은 단독으로는 블로그 글이 안 나온다. 그래도 v0.9.0에서 이게 중요한 건, 이 버전이 Hermes가 처음으로 진짜 소비자용 메시징 플랫폼—iMessage와 WeChat—에 손을 뻗기 시작한 릴리스이기도 하기 때문이다. shell 커맨드를 돌릴 수 있는 챗봇의 위협 모델은, 그걸 전화번호로 겨누는 그날부터 바뀐다.
숫자로 보면
머지된 PR 269건, 컨트리뷰터 24명, v0.8.0부터 487개의 commit—닷새.
이 케이던스는 v0.9.0 단독 얘기가 아니다. v0.7.0 → v0.8.0이 닷새였다. v0.9.0 → v0.10.0은 사흘이 된다. 다음 한 달의 모양은 이 릴리스에서부터 이미 보인다: 주 단위 페이스의 릴리스가 쌓이는 더미, 각 릴리스가 자기 이름을 가질 만한 단일 테마 주위를 도는 식. v0.9.0의 테마는 플랫폼. 8일 뒤, v0.11.0이 인터페이스 층을 통째로 다시 짓는다. 5주 뒤, v0.14.0이 "어떻게 설치하지"를 통째로 다시 쓴다.
---
자꾸 BlueBubbles로 돌아오게 된다. v0.9.0에서 코드 줄 수를 가장 많이 잡아먹은 건 아마 아무도 안 알아챌 transport 층 리팩터일 거다. 줄 수가 상대적으로 적게 든 항목 중에 iMessage adapter가 있다. 그런데도 어머니한테 전화 걸어 자랑한 건 후자였다—그게, 내 서버에서 도는 에이전트를 내가 매일 실제로 대화하는 사람한테 닿게 해준 변경이니까.
"플랫폼이 늘었어요" 타입의 릴리스는 멀리서 보면 늘 흥분기가 떨어진다. bullet 목록처럼 들린다. 그런데 자세히 보면 "플랫폼이 늘었다"는 사실 다른 한 문장과 같은 모양이다: "이걸 쓸 수 있는 사람이 늘었다." v0.9.0은 토요일 오후 하루에 세 명을 추가했다.