왜 옮겼나
내 에이전트 하네스는 Claude Code 위에서 돌고, 내 노트북 위에서 돈다. 여기엔 한계가 둘 따라온다. 닫힌 도구라 자체호스팅하거나 아래를 바꿀 수 없다. 그리고 기계에 묶여 있다. 노트북이 잠들면 오전 9시로 걸어 둔 작업이 뚜껑을 다시 열 때까지 돌지 않는다. 늘 켜져 있어야 할 개인 운영 에이전트에겐 둘 다 실제 문제다. 그래서 같은 구성을 오픈·자체호스팅 에이전트로, 잠들지 않는 서버 위로 옮겨 봤다.
$
케이스 09 · 자체호스팅
같은 검증 중심 하네스를, 오픈·자체호스팅 에이전트(닫힌 도구의 오픈 대안인 Hermes) 위에서, 꺼지지 않는 서버 위에 올려 돌린 시도. 닫힌 API에서, 그리고 노트북에서 떼어내자 이 셋업에선 두 가지가 분명해졌다. 쓸 만한지 아닌지를 고른 모델이 갈랐고, 어려웠던 건 또 AI를 잇는 게 아니라 안정적으로 배달되게 만드는 쪽이었다.
$
왜 옮겼나
내 에이전트 하네스는 Claude Code 위에서 돌고, 내 노트북 위에서 돈다. 여기엔 한계가 둘 따라온다. 닫힌 도구라 자체호스팅하거나 아래를 바꿀 수 없다. 그리고 기계에 묶여 있다. 노트북이 잠들면 오전 9시로 걸어 둔 작업이 뚜껑을 다시 열 때까지 돌지 않는다. 늘 켜져 있어야 할 개인 운영 에이전트에겐 둘 다 실제 문제다. 그래서 같은 구성을 오픈·자체호스팅 에이전트로, 잠들지 않는 서버 위로 옮겨 봤다.
지금 도는 구조
Phone / Slack
어디서든 말을 건다
My server (agent)
상시 가동, 에이전트가 여기 산다
Model (rented)
무거운 연산은 API로 빌려 쓴다
발견 — 호스팅이 아니라 모델 쪽
옮기고 나서 가장 크게 좌우한 건 모델 쪽이었다. 무료 모델을 붙였을 땐 에이전트가 같은 말을 반복하며 겉돌아 실제 작업에 못 썼다. 하루 몇 센트짜리 저가 유료 모델로 바꾸니, 장난감과 맡길 만한 것 사이가 거기서 갈렸다. 이 구성에서 무거운 연산은 서버가 아니라 모델 API 쪽에 있다. 에이전트 소프트웨어는 가벼워 작은 서버에서 돌고, 생각은 API로 빌려 쓰며 쓴 만큼 낸다. 이 셋업에서 결과를 좌우한 건 모델을 어디서 돌리느냐가 아니라 어떤 모델을 고르느냐였다.
노트북 vs 상시 서버
| 노트북에서 (전) | 서버에서 (후) |
|---|---|
| 노트북이 깨어 있을 때만 돈다 | 노트북과 무관하게 24시간 돈다 |
| 뚜껑을 닫아 두면 오전 9시 작업이 제 시간을 놓쳤다 | 예약 작업이 서버 시계로 제때 돈다 |
| 노트북이 켜져 있어야 폰에서 닿았다 | 폰에서 언제나 닿는다 |
어려운 건 또 안정화였다
하네스 케이스에서 얻은 교훈이 또 나왔다. 어려운 건 모델을 쓰는 게 아니라, 믿고 맡길 만큼 안정적으로 만드는 쪽이었다. 이걸 돌리는 동안, 예약 리포트는 제때 발동했지만 며칠 동안 조용히 배달에 실패했다. 원인은 시시했다. 백그라운드 서비스가 환경 파일을 대화형 셸과 같은 방식으로 읽지 않아서, 메시지를 보내는 부분이 토큰을 못 찾았다. 돌긴 돌고, 성공했다고 보고하고, 아무것도 배달하지 않았다. AI를 잇는 게 아니라 그걸 잡아내는 게 실제 일이었다.
그 뒤로 닫힌 것, 아직 열린 것
이 케이스를 처음 쓸 때 열어 뒀던 구멍은 그 뒤로 닫혔다. 로컬 프로젝트 폴더를 읽던 자동화는 GitHub의 저장소를 읽도록 다시 잡았다. 서버가 자기 클론을 들고, 지난 하루의 커밋을 읽고, 제때 브리핑을 올린다. 배달의 교훈도 남았다. 메시지를 보내는 부분은 이제 서비스의 환경을 믿지 않고 토큰을 직접 읽는다. 열린 채로 남는 건 경계다. 서버는 내가 푸시한 것만 본다. 노트북에 커밋되지 않은 채 앉아 있는 작업은 그 눈에 안 보이고, 저장소도 하나하나 서버에 심어 줘야 한다. 테스트하려던 주장은 여전히 버틴다. 같은 검증 중심 워크플로우가 오픈·자체호스팅 하네스 위에서, 늘 켜진 채 폰에서 닿게 돈다. 닫힌 API에도, 내 노트북에도 묶이지 않고.
$
근거 · 깃·위키 인용