헤르메스 AI 에이전트를 집 밖에서 부려보겠다는 거창한 말로 시작하지만, 동기는 단순했습니다. 거실 구석에 데스크톱 한 대가 놓여 있는데, 저는 늘 집 밖에 있다는 것. 평소엔 필요할 때만 켜던 녀석인데, 이걸 아예 24시간 켜두고 나 대신 일하는 비서로 만들면 어떨까 싶더군요. 그 생각이 이번 삽질의 출발점이었습니다. 처음부터 늘 돌아가던 컴퓨터가 있었던 게 아니라, 그렇게 쓰려고 작정하고 세팅을 시작한 셈이죠.
노트북은 가방에 넣는 순간 꺼집니다. 이동하고, 회의 들어가고, 카페에 앉으면 또 켜고. 반면 집 PC는 한자리에 붙박이라, 마음먹고 켜두기만 하면 늘 깨어서 대기시킬 수 있죠. 그렇다면 항상 켜둔 그 녀석에게 일을 맡기고, 저는 밖에서 노트북으로 지시만 내리면 되지 않을까. AI 에이전트 ‘헤르메스(Hermes)’를 그 비서 자리에 앉히기로 한 이유입니다.
헤르메스 AI 에이전트는 채팅창 안에서만 답하는 AI가 아닙니다. 파일을 만들고, 코드를 돌리고, 결과물을 폴더에 올려두는 일꾼이죠. 사실 이런 AI 에이전트를 직접 만드는 방법은 예전에 n8n 노코드와 Claude Code 바이브코딩을 비교한 글에서 다룬 적이 있습니다. 이번엔 만드는 게 아니라, 만들어 둔 에이전트를 집 밖에서 부리는 쪽 이야기입니다.
미리 솔직히 말씀드리면, 이 글은 깔끔한 성공기가 아닙니다. 헤르메스 AI 에이전트를 집 밖에서 부리는 환경을 직접 세워보긴 했는데, 아직 테스트 단계고 몇 군데는 여전히 삐걱댑니다. 그래도 부딪힌 시행착오를 정직하게 적어두는 게, 같은 길을 가려는 분께 더 쓸모 있겠더군요. 자랑이 아니라 중간 점검의 기록입니다.
헤르메스 AI 에이전트를 집 PC에 — 내가 그린 3계층 전체 그림
삽질을 시작하기 전에 먼저 그림부터 그렸습니다. 전체 구조를 종이에 펼쳐보지 않으면 어디서 막혔는지조차 모르거든요. 제가 그린 헤르메스 AI 에이전트 구성의 큰 틀은 세 개의 층으로 나뉩니다. 밖에 있는 노트북, 가운데를 잇는 사설망, 그리고 실제로 일하는 집 PC. 이 셋이 한 줄로 꿰여야 비로소 그림이 돌아갑니다.
노트북 → 사설망 → 집 PC, 세 층으로 나눈 구조
맨 앞은 외부의 노트북입니다. 여기엔 헤르메스 데스크톱 앱이 깔려 있는데, 한 가지 짚어둘 게 있습니다. 이 앱은 집 PC의 헤르메스에 연결하는 창(窓)일 뿐, 제 노트북의 파일이나 프로그램은 전혀 건드리지 않는다는 점이죠. 노트북에서 무언가를 실행하는 게 아니라, 집 PC에서 일하는 에이전트를 들여다보고 지시만 넣는 원격 조종석인 셈입니다. 맨 뒤는 집 PC입니다. 도커 안에서 헤르메스 에이전트가 실제 작업을 수행하고요. 그리고 이 둘 사이를 잇는 가운데 층이 가장 중요한데, 암호화된 사설망이 그 역할을 맡습니다.
▲ 노트북에서 Tailscale을 거쳐 집 PC 도커의 헤르메스를 제어하고 결과 파일을 주고받는 구조
이 그림 한 장이 나오기까지가 오래 걸렸습니다. 처음엔 노트북에서 집 PC로 곧장 선을 그었거든요. 그런데 그렇게 하면 집 네트워크를 외부에 열어야 하는 문제가 따라붙습니다. 가운데 층을 끼워 넣고 나서야 헤르메스 AI 에이전트를 부리는 그림이 안전하게 닫히더군요. 구조를 먼저 그린 보람이 여기서 나왔습니다.
제어선과 파일선, 두 갈래로 흐르는 길
구조를 그리다 보니 통로가 하나가 아니라 둘이라는 걸 알게 됐습니다. 하나는 제어선이고, 다른 하나는 파일선이죠. 제어선은 제가 헤르메스에게 “이걸 해줘”라고 지시를 내리는 길입니다. 파일선은 헤르메스가 만든 결과물을 제가 받아오는 길이고요.
둘을 따로 떼어 생각한 게 신의 한 수였습니다. 처음엔 한 통로로 다 해결하려다 머리가 엉켰거든요. 지시는 데스크톱 앱으로, 파일은 브라우저로 — 이렇게 역할을 나누니 머릿속 지도가 단순해졌습니다. 두 선 모두 가운데 사설망을 통과한다는 점만 기억하면 됩니다. 한 갈래로 쥐려다 놓치고, 두 갈래로 나누니 잡힌 셈이죠.
종이에 그린 그림을 책상 앞에 붙여두고 한동안 들여다봤습니다. 어디가 끊기면 무엇이 안 되는지, 그 인과를 머리에 새기려고요. 제어선이 끊기면 지시가 안 들어가고, 파일선이 끊기면 결과가 안 나옵니다. 둘 중 어느 쪽이 막혔는지부터 가려내면 고칠 자리도 금방 좁혀지더군요. 그림 한 장이 나중에 트러블슈팅 지도가 된 셈입니다.
헤르메스 AI 에이전트의 첫 관문 — 도커 격리와 WSL
전체 그림을 그렸으니 이제 깔 차례입니다. 그런데 첫 관문부터 호락호락하지 않더군요. 헤르메스를 돌리는 도구들이 원래 리눅스용으로 만들어졌거든요. 제 집 PC는 윈도우인데 말이죠. 헤르메스 AI 에이전트를 집 밖에서 부리는 일은 시작도 하기 전에 운영체제 벽부터 만난 셈입니다.
리눅스 도구를 윈도우에서 — WSL이라는 우회로
해결책은 WSL이었습니다. 윈도우 안에서 리눅스를 돌릴 수 있게 해주는 호환 계층이죠. 쉽게 말해 윈도우라는 집 안에 리눅스라는 작은 방을 하나 들이는 겁니다. 헤르메스의 도구들은 그 리눅스 방 안에서 자기 고향처럼 편하게 돌아갑니다. 이걸 모르고 한참을 윈도우에 직접 깔려다 실패했거든요.
WSL을 깔고 나서야 다음 단계로 넘어갈 수 있었습니다. 여기서 배운 건, 도구가 어떤 환경을 전제로 만들어졌는지부터 확인해야 한다는 점입니다. 그걸 무시하면 첫 삽도 뜨기 전에 멈추거든요. 저는 이 사실을 반나절 헤매고 나서야 깨달았죠. 환경부터 맞추는 게 순서더군요.
처음 며칠은 이 WSL 개념을 몰라서 헛돌았습니다. 윈도우용 설치 파일을 찾아 헤맸는데, 애초에 그런 게 없었던 거죠. 리눅스를 전제로 만든 도구를 윈도우에 억지로 끼우려니 될 리가 없었습니다. 한 발 물러서서 “이 도구는 어느 땅에서 자란 물건인가”를 먼저 물었어야 했습니다. 그 질문 하나를 건너뛴 대가로 며칠을 날린 거죠.
도커 컨테이너에 헤르메스를 가둔 이유
그다음은 도커였습니다. 헤르메스를 Docker 컨테이너 안에 격리시켜 돌리는 구조죠. 솔직히 이 도커 세팅이 이번 작업에서 제일 까다로웠습니다. 컨테이너라는 개념 자체가 처음엔 손에 안 잡혔거든요.
컨테이너를 쓰는 이유는 분명합니다. 헤르메스가 집 PC 본체를 직접 휘젓지 못하게, 격리된 상자 안에 가둬두는 거죠. 에이전트가 파일을 지우든 설정을 바꾸든 그 상자 안에서만 벌어지니, 본체는 안전합니다. 헤르메스 AI 에이전트처럼 외부에서 명령이 들어오는 구조일수록 이 격리가 더 중요해지더군요. 밖에서 들어온 지시가 집 PC 전체를 건드리면 곤란하니까요.
운영하면서 정한 작은 원칙도 하나 있습니다. 도커의 자동 시작을 일부러 꺼뒀습니다. 집 PC를 켜도 도커는 제가 직접 올릴 때만 돕니다. 늘 떠 있을 필요가 없는 데다, 실수로 뭔가 건드리는 일도 줄거든요. 쓸 때만 컨테이너를 올리는 습관, 이게 의외로 마음을 편하게 합니다.
컨테이너는 두 개를 띄웁니다. 하나는 헤르메스 에이전트, 다른 하나는 파일을 보여주는 웹 서버죠. 둘을 한 번에 올리고 상태를 확인하는 명령으로 관리합니다. 올리고 나면 둘 다 떠 있는지부터 보고, 하나라도 빠져 있으면 거기서부터 다시 잡습니다. 두 개가 나란히 떠 있어야 비로소 손님을 받을 준비가 된 거죠. 접속이 안 될 때 제일 먼저 의심하는 것도 바로 이 둘의 상태입니다.
헤르메스 AI 에이전트와 파일 주고받기 — 공유 폴더와 파일함
에이전트가 일을 했으면, 그 결과물을 제가 받아봐야 의미가 있죠. 헤르메스 AI 에이전트를 부리면서 의외로 헷갈렸던 게 바로 이 파일 문제였습니다. 컨테이너 안에 갇힌 헤르메스가 만든 파일을, 밖에 있는 제가 어떻게 꺼내오느냐는 거죠. 지시는 보내지는데 결과가 손에 안 들어오면 반쪽짜리니까요.
집 PC와 컨테이너가 함께 보는 공유 폴더
핵심은 공유 폴더입니다. 집 PC의 작업 폴더 하나를, 컨테이너 안에서는 /workspace라는 이름으로 똑같이 보이게 묶어둡니다. 같은 폴더를 양쪽에서 동시에 들여다보는 셈이죠. 헤르메스에게 “결과 파일은 /workspace에 저장해줘”라고 시키면, 그 파일이 집 PC의 실제 폴더에 그대로 생깁니다.
이 개념을 잡고 나니 머릿속이 환해졌습니다. 컨테이너 안과 밖이 완전히 분리돼 있다고만 생각했는데, 폴더 하나를 공유 창구로 열어두면 그 창구로 결과물이 오가는 거죠. 헤르메스 AI 에이전트의 파일선이 실제로 작동하는 지점이 바로 여기입니다. 막혀 있던 두 공간을 폴더 하나가 잇는 셈입니다.
처음엔 이 부분이 가장 비현실적으로 느껴졌습니다. 분명 컨테이너 안은 격리된 공간이라고 배웠는데, 그 안에 집 PC의 폴더가 들여다보인다니. 알고 보면 어려운 마법이 아니라, 두 공간이 한 폴더를 같은 자리로 바라보게 연결해 둔 것뿐입니다. 한쪽에서 파일을 만들면 다른 쪽에서 곧바로 보이는, 거울 같은 폴더인 셈이죠.
브라우저 파일함으로 결과물 꺼내오기
그런데 집 안에서야 폴더를 열면 그만이지만, 밖에서는 그 폴더가 안 보입니다. 그래서 작은 웹 서버를 하나 더 띄웠습니다. 공유 폴더를 브라우저에서 들여다볼 수 있는 파일함이죠. 노트북 브라우저로 접속하면 헤르메스가 만든 파일 목록이 뜨고, 클릭해서 내려받습니다.
반대로 제가 노트북에서 파일을 올리면, 그게 집 PC의 공유 폴더로 들어가 헤르메스가 읽습니다. 주고받기가 양방향으로 도는 거죠. 이 파일함을 붙이고 나서야 헤르메스 AI 에이전트와의 주고받기가 비로소 “왕복”이 됐습니다. 그전까지는 지시만 보내고 결과는 집에 가서야 확인하는 반쪽짜리였거든요. 손에 결과가 잡히니 그제야 쓸 만해지더군요.
이 파일함이 붙고 나서야, 머릿속으로만 그리던 그림이 조금씩 손에 잡히기 시작했습니다. 집 PC를 켜두고 나가면, 예전 같으면 “집에 가서 확인해야지” 하고 미뤘을 일을 카페에서 노트북을 열어 바로 받아볼 수 있겠더군요. 헤르메스를 돌려두고 나중에 결과물만 훑어보는 식으로 말이죠. 비서를 집에 두고 부린다는 처음의 그림이, 이 작은 웹 서버 하나로 비로소 형태를 갖추기 시작한 셈입니다.
헤르메스 AI 에이전트를 포트포워딩 없이 — Tailscale을 택한 이유
이제 가운데 층 차례입니다. 노트북과 집 PC를 어떻게 잇느냐. 가장 흔한 방법은 포트포워딩이지만, 저는 그 길을 일부러 피했습니다. AI 에이전트 원격 제어에서 제일 마음에 걸린 게 보안이었거든요.
포트포워딩이 꺼림칙했던 이유
포트포워딩은 쉽게 말해 집 현관문에 외부로 통하는 구멍을 뚫는 일입니다. 공인 IP에 포트를 열어두면 밖에서 들어올 수 있게 되죠. 문제는 그 구멍으로 저만 들어오는 게 아니라는 점입니다. 인터넷에 노출된 구멍은 누구든 두드려볼 수 있거든요. 집 PC를 늘 켜두고 외부에서 드나들 생각이었으니, 항상 열린 문 하나를 만드는 게 영 찜찜했습니다.
제 분야인 발전·에너지 연구에서도 똑같습니다. 외부로 통하는 접점이 하나 생기면, 그 접점이 곧 공격면이 되죠. 그래서 꼭 필요한 통로만 최소한으로 여는 게 기본입니다. AI 에이전트 원격 제어라고 다를 게 없더군요. 편하자고 집 네트워크를 통째로 여는 건 과한 대가였습니다.
메시 VPN, 내 기기들끼리만 보이는 사설망
그래서 고른 게 Tailscale입니다. 공인 IP를 열거나 포트를 뚫지 않고도, 내 기기들끼리만 보이는 암호화된 사설망을 깔아주는 도구죠. 노트북과 집 PC를 같은 사설망에 넣어두면, 둘이 마치 같은 방 안에 있는 것처럼 통신합니다. 자세한 작동 방식은 Tailscale 공식 사이트에 잘 정리돼 있습니다.
이게 메시 VPN이라는 방식입니다. 외부에 문을 뚫는 대신, 내 기기들만 들어올 수 있는 비공개 망을 따로 까는 거죠. 인터넷에 노출되는 구멍이 없으니 공격면 자체가 생기지 않습니다. 헤르메스 AI 에이전트를 안전하게 굴리려면 이 방식이 맞다고 판단했습니다. 집 밖 노트북과 집 PC가 한 랜에 묶인 것처럼 움직이니, 쓰는 입장에선 차이도 잘 못 느끼고요.
솔직히 처음엔 VPN이라고 하면 회사에서 쓰던 무겁고 느린 그것을 떠올렸습니다. 그런데 직접 써보니 결이 달랐습니다. 기기 몇 대를 등록하면 알아서 서로를 찾아 잇고, 속도도 체감상 거슬리지 않더군요. 무엇보다 공유기 설정을 건드릴 일이 없다는 게 컸습니다. 라우터 관리 화면에 들어가 포트를 여닫는 그 번거로움이 통째로 사라졌으니까요.
헤르메스 AI 에이전트, 실제로 시켜보니
여기까지가 환경을 까는 이야기였습니다. 그럼 실제로 일을 시켜보면 어떨까. 솔직하게 적겠습니다. 헤르메스 AI 에이전트를 부릴 환경은 세웠지만, 그 위에서 돌려본 결과는 아직 만족스럽지 않습니다.
클로드코드 작업 폴더를 통째로 넘겨봤다
제가 시도한 건 이렇습니다. 클로드코드로 만들어 둔 에이전트의 작업 폴더를 통째로 헤르메스에게 넘기고, 그걸 그대로 재현해보라고 맡겼죠. 한쪽에서 잘 돌던 작업 환경을 집 PC의 헤르메스가 똑같이 복제하게 하려는 그림이었습니다. 되기만 하면 꽤 그럴듯했을 텐데요.
이때 발목을 잡은 게 기억의 문제였습니다. 에이전트에게 맥락을 어떻게 쥐여주느냐가 결과를 가르거든요. 예전에 옵시디언 MCP로 클로드에게 기억력을 붙인 경험을 적은 적이 있는데, 같은 고민이 여기서도 반복됩니다. 작업 폴더를 통째로 넘긴다고 그 안의 맥락까지 통째로 넘어가는 건 아니더군요.
결과는 아직 — 다음 과제로 남긴 것들
결과부터 말하면, 재현은 깔끔하게 되지 않았습니다. 작업 폴더는 그대로 옮겨졌는데, 헤르메스가 그 안의 맥락을 온전히 이어받지 못했거든요. 추가 세팅이 더 필요해 보입니다. 어디를 더 손봐야 할지는 아직 정리하는 중입니다.
그래도 이걸 실패라고는 생각하지 않습니다. 헤르메스 AI 에이전트로 가는 통로 자체는 뚫렸으니까요. 노트북에서 집 PC의 헤르메스를 부르고, 파일을 주고받는 것까지는 됩니다. 남은 건 그 위에서 에이전트가 제 몫을 제대로 해내게 만드는 일이죠. 환경을 까는 것과, 그 환경에서 똑똑하게 일을 시키는 것은 또 다른 문제더군요.
돌이켜보면 욕심이 앞섰던 것 같습니다. 헤르메스 AI 에이전트로 가는 통로를 막 뚫어놓고 곧장 제일 복잡한 작업을 던졌으니까요. 단순한 일부터 시켜 신뢰를 쌓고, 점점 어려운 걸 맡기는 순서가 맞았을 겁니다. 다음엔 작은 작업 하나를 끝까지 안정적으로 돌리는 것부터 다시 시작하려 합니다. 급하게 큰 그림을 욕심내다 기본을 건너뛴 거죠.
여기까지 와보니 이건 완성형 시스템이 아니라 계속 다듬어가는 실험에 가깝다는 생각이 듭니다. 통로를 뚫고, 그 위에서 한 번 더 시행착오를 겪는 중이죠. 다음 과제는 분명합니다. 맥락을 더 정교하게 넘기는 방법을 찾는 것. 그게 풀리면 헤르메스 AI 에이전트 후속편으로 한 번 더 정리해보려 합니다.
같은 구성을 직접 만들어보려는 분을 위해, 제가 매번 접속 전에 확인하는 순서를 정리해뒀습니다. 헤르메스가 응답하지 않을 때 열에 아홉은 이 목록 어딘가에서 걸리거든요. 거창한 트러블슈팅 전에 이 항목부터 짚으면 대부분 풀립니다.
□ 집 PC가 켜져 있는가 — 비서가 자리에 있어야 부른다
□ 도커가 실행 중인가 — 자동 시작을 꺼뒀다면 직접 올렸는지 확인
□ 노트북의 사설망(Tailscale)이 켜져 있는가 — 가운데 층이 빠지면 길이 끊긴다
□ 컨테이너가 Up 상태인가 — 올렸어도 실제로 떠 있는지 한 번 더 확인
□ 결과 파일은 공유 폴더(/workspace)에 떨어지게 지시했는가
□ 볼륨을 지우는 명령은 쓰지 않는다 — 데이터가 통째로 날아갈 수 있다
이 글을 성공기로 끝맺지 못하는 게 조금 아쉽긴 합니다. 그래도 현장에서 10년 넘게 일하며 배운 게 하나 있다면, 설비든 시스템이든 한 번에 완성되는 건 없다는 겁니다. 통로를 뚫었으니 절반은 온 거죠. 나머지 절반은 천천히 다듬어가려 합니다. 헤르메스 AI 에이전트, 아직은 진행 중인 제 실험실 이야기입니다.