Hermes Flightplan #1: 제로에서 상시 가동형 Telegram AI 에이전트 구축하기 (전체 복사-붙여넣기 코드 포함)

@witcheer
영어4주 전 · 2026년 6월 22일
111K
232
34
5
759

TL;DR

본 가이드는 Telegram 연동, 충돌 시 자동 복구 기능, 그리고 Nous Portal을 활용한 보안 설정 등 Hermes AI 에이전트를 VPS 또는 Mac에 배포하기 위한 포괄적인 과정을 안내합니다.

휴대폰으로 메시지를 보낼 수 있고, 노트북을 닫아도 계속 실행되며, 재부팅 후에도 자동으로 돌아오는 AI 에이전트를 원하시나요? Hermes Agent 가 바로 그 역할을 합니다. Telegram 을 통해 대화하는 게이트웨이로 실행되며, 올바르게 설정하면 충돌이나 정전 후에도 스스로 재시작됩니다.

저는 동일한 설정을 클라우드 VPS 와 책상 위의 Mac Mini, 두 대의 기기에 구축하여 전체 과정을 하나도 빠짐없이 기록했습니다. 이는 하나의 경로입니다. 기기에 따라 설치 명령어와 게이트웨이를 유지하는 부분, 이 두 곳만 입력 내용이 다릅니다. 그 외의 모든 과정은 동일합니다.

아래의 모든 내용은 제 하드웨어에서 직접 실행되었습니다. Linux 경로는 Ubuntu 24.04.4 LTS 가 설치된 Hetzner CX23 (x86, 2 vCPU, 4GB RAM, 40GB 디스크)이고, Mac 경로는 macOS 15 가 설치된 Mac Mini M4 입니다. 두 기기 모두 Hermes Agent v0.16.0 을 실행했습니다.

최종 결과물

  • 일반 사용자(루트 아님) 권한으로 설치 및 실행되는 Hermes Agent
  • 휴대폰으로 메시지를 보낼 수 있으며, 내 계정으로만 잠긴 Telegram 봇
  • 관리형 서비스로 실행되어 충돌이나 재부팅 후에도 자동 복구되는 게이트웨이
  • VPS 의 경우, 강화된 보안 설정: 키 전용 SSH, 루트 로그인 차단, 방화벽

기기 선택

VPS 가 가장 저렴한 방법입니다. 4GB RAM 과 약 20GB 의 여유 디스크가 있는 모든 x86 기기에서 실행 가능하며, 제 기기는 월 $7.79 (Hetzner US 가격, 2026-06-18 기준)인 Hetzner CX23 입니다. 임대하면 항상 켜져 있습니다.

이미 소유하고 있는 Mac 이 또 다른 옵션입니다. 전원이 공급되는 모든 Apple Silicon Mac 에서 작동하며, 모델 외에는 추가 비용이 들지 않습니다. 단점은 macOS 에서 내구성 계층을 설정하는 것이 더 까다롭다는 점인데, 이는 마지막 부분에서 다루겠습니다.

자신의 기기에 SSH 키가 필요하고 (없다면 ssh-keygen -t ed25519 로 생성), Telegram 계정과 에이전트용 모델이 필요합니다. 이 가이드는 OAuth 방식을 사용하는 Nous Portal 을 가리키므로, 파일에 API 키를 보관할 필요가 없습니다. Hermes 는 최소 64k 컨텍스트의 모델이 필요합니다.

1단계: 기기 준비

VPS 의 경우

제공업체에서 서버를 생성합니다: Ubuntu 24.04, x86 인스턴스 (Arm 아님, 비용 참고), 생성 시 SSH 공개 키를 붙여넣습니다.

새로운 공개 기기는 에이전트를 배치하기 전에 몇 분간의 보안 강화 작업이 필요합니다. 레시피의 secure-box.sh 가 한 번에 처리합니다: apt 업그레이드, 2GB 스왑 파일, 키가 있는 루트가 아닌 sudo 사용자 생성, 루트 로그인을 차단한 키 전용 SSH, SSH 만 허용하는 방화벽. 상단의 두 변수를 편집하고, 복사한 후 루트로 실행합니다:

bash
1scp secure-box.sh root@<your-vps-ip>:
2ssh root@<your-vps-ip> 'bash secure-box.sh'

이 Ubuntu 이미지는 SSH 키로 박스를 생성했음에도 PasswordAuthentication 이 yes 로 설정되어 있었습니다. 스크립트가 이를 비활성화합니다. 루트 세션을 종료하기 전에, 두 번째 터미널을 열어 새 사용자가 로그인되는지 확인하여 실수로 잠기는 것을 방지하세요:

bash
1ssh hermes@<your-vps-ip>

이제부터는 루트가 아닌 hermes 사용자입니다.

Mac 의 경우

보안 강화 과정이 필요 없습니다. 공개된 기기가 아닌, 자신의 네트워크에 있는 개인 기기입니다. Homebrew 가 없다면 설치하고 (설치 프로그램이 다음 단계에서 사용합니다), 준비 완료입니다.

2단계: Hermes 설치

설치는 두 기기 모두 동일한 명령어 하나이며, 일반 사용자로 실행합니다:

bash
1curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
2source ~/.bashrc
3hermes --version

설치 프로그램이 OS 를 감지하고 자체 도구 체인 (uv, Python 3.11, Node.js 22, ripgrep, ffmpeg, 브라우저 도구용 Playwright Chromium) 을 ~/.hermes 에 가져오므로 시스템 Python 에는 영향을 주지 않습니다. 제 Hetzner 기기에서는 Python 3.11.15 에 Hermes Agent v0.16.0 이 설치되었습니다.

이 단계가 가장 무겁습니다. VPS 에서 디스크 사용량이 1.2GB 에서 7.8GB 로 약 6.6GB 증가했으며, 대부분은 브라우저 엔진과 Node.js 였습니다. 20GB 의 여유 공간을 확보하고 걱정하지 마세요. 터미널이 없는 일반 SSH 명령어로 실행하면 설치 프로그램이 "Setup wizard skipped (no terminal available)" 메시지를 출력하는데, 이는 정상이며 다음 단계가 설정입니다.

Mac 에서도 동일한 명령어가 실행되지만 한 가지 주의할 점이 있습니다: 먼저 Homebrew 를 설치하세요. Homebrew 가 있으면 설치 프로그램이 프롬프트 없이 git 과 그 종속성을 가져옵니다. Homebrew 가 없으면 Apple 의 Command Line Tools 로 대체되는데, 이는 클릭해야 하는 macOS 대화 상자를 열 수 있으며, SSH 를 통해서는 대화 상자가 적합하지 않습니다 (설치 프로그램의 macOS 분기에서 발생). 이후에는 위와 동일한 흐름입니다.

3단계: 모델 연결

bash
1hermes setup --portal

이는 Nous Portal 에 대한 OAuth 인증입니다: URL 과 코드를 출력하고, 브라우저에서 승인하면 파일에 API 키를 저장하지 않고도 기기가 모델과 통신합니다. Nous Portal 에는 무료 티어가 있으며, 저는 전체 과정을 무료 모델로 실행했습니다. 자체 제공업체를 사용하려면 hermes model 을 실행하여 선택하면 됩니다. 키는 ~/.hermes/.env 에 저장됩니다.

4단계: 대화하기

VPS 의 경우

SSH 연결이 끊어지는 순간, 포그라운드 세션도 함께 종료됩니다. tmux 가 세션을 유지합니다: tmux 내에서 시작하고, 분리하면 계속 실행됩니다.

bash
1sudo apt-get install -y tmux
2tmux new -s hermes # 그런 다음, 내부에서: hermes

Ctrl-b 를 누른 후 d 를 눌러 분리하고, 나중에 어디서든 다시 연결합니다:

bash
1ssh hermes@<your-vps-ip>
2tmux attach -t hermes

대화형 에이전트의 첫 부팅에는 시간이 걸립니다. 제 경우 프롬프트가 나타나기 전에 모델과 스킬을 로드하는 데 약 30초가 걸렸습니다. 실행되면 슬래시 명령어가 작동합니다.

/goal 은 보여줄 가치가 있는 명령어입니다: 에이전트가 여러 턴에 걸쳐 작업할 지속적인 목표를 설정하고, 각 턴 후에 판사 모델이 목표 달성 여부를 확인합니다.

bash
1/goal check this box total RAM and free disk using shell tools, then report both on one line and mark the goal done

제 에이전트는 셸 명령어를 직접 실행하고 약 15초 만에 "VPS total RAM: 3.7Gi, free disk space: 28G" 라고 응답했습니다. 이것이 에이전트가 자체 도구를 사용하는 방식입니다.

두 가지 개념을 구분하세요: tmux 는 끊어진 SSH 연결을 넘어 대화형 세션을 열어두지만, 재부팅 시에는 유지되지 않습니다. 재시작 후에도 살아있는 무인 게이트웨이를 원한다면 관리형 서비스를 원하는 것이며, 이는 6단계입니다.

Mac 의 경우

기기 앞에 앉아 있으므로 터미널에서 hermes 를 실행하면 됩니다. 노트북에서 SSH 로 접속하는 경우에도 tmux 가 유용하지만, 여기서는 선택 사항입니다.

5단계: Telegram 게이트웨이

이 부분은 두 기기에서 동일합니다. 봇을 생성합니다: Telegram 에서 @BotFather 에게 메시지를 보내고, /newbot 을 입력한 후 토큰을 복사합니다. @userinfobot 에서 숫자 사용자 ID 를 가져옵니다. 그런 다음 게이트웨이를 구성합니다:

bash
1hermes gateway setup

Telegram 을 선택하고, 토큰을 붙여넣은 후 허용된 사용자를 숫자 ID 로 설정하여 본인만 봇과 대화할 수 있도록 합니다. 토큰은 ~/.hermes/.env 에, 나머지 설정은 ~/.hermes/gateway.json 에 저장됩니다.

설정은 구성만 작성합니다. 아무것도 시작하지 않으므로 봇은 조용히 있으며, 이 점이 사람들을 종종 당황하게 합니다: 아직 Telegram 을 폴링하고 있지 않습니다. 연결을 확인하기 위해 포그라운드에서 한 번 시작합니다:

bash
1hermes gateway run

로그에서 다음을 확인해야 합니다:

bash
1gateway.run: Connecting to telegram...
2[Telegram] Connected to Telegram (polling mode)
3gateway.run: ✓ telegram connected

폴링 모드는 게이트웨이가 Telegram 에 연결을 시도한다는 의미입니다. 누구도 사용자의 기기에 연결하지 않으므로, 방화벽에 SSH 외에 인바운드 포트가 필요하지 않은 이유입니다. 봇에게 메시지를 보내면 응답해야 합니다. 그런 다음 Ctrl-C 로 포그라운드 게이트웨이를 중지합니다. 동일한 토큰을 동시에 폴링하는 두 개의 프로세스가 있을 수 없기 때문이며, 다음 단계에서 서비스로 실행됩니다.

6단계: 재부팅 후에도 유지되도록 만들기

이 부분이 두 기기가 달라지는 유일한 지점입니다.

VPS 의 경우: systemd

hermes gateway install 은 게이트웨이를 systemd 서비스로 등록하여 충돌 시 재시작되고 재부팅 후에도 돌아옵니다. 이 버전에서는 설치 프로그램이 두 개의 [Y/n] 질문을 하며, 이를 건너뛰는 플래그가 없습니다. 일반적으로 박스를 스크립팅할 때 자연스러운 방법인 비대화형 SSH 명령어로 실행하면 답변을 받지 못하고 중단되어 아무것도 설치되지 않습니다. stdin 으로 답변을 전달합니다:

bash
1printf 'n\nY\n' | hermes gateway install

두 질문은 "지금 게이트웨이를 시작하시겠습니까?" 와 "로그인/부팅 시 자동으로 시작하시겠습니까?" 입니다. n 다음 Y 는 지금 시작하지 말고, 부팅 시 활성화하라는 의미입니다. 설치 프로그램은 또한 사용자 세션 지속을 활성화하는데, 이는 로그인 전에 사용자 서비스가 실행될 수 있도록 합니다. 이를 확인하세요. 이것이 "재부팅 후 생존" 을 "로그아웃 후 생존" 이 아닌 실제로 가능하게 만드는 요소입니다:

bash
1loginctl show-user $USER -p Linger # 원하는 결과: Linger=yes

시작하고 확인합니다:

bash
1hermes gateway start
2systemctl --user status hermes-gateway

active (running)NRestarts=0 을 확인해야 합니다. 제 기기에서 게이트웨이는 약 280MB 를 사용했고, 전체 시스템은 약 556MB 로 4GB 에서 여유롭게 작동했습니다.

이제 실제 테스트입니다. 재부팅하고 아무것도 건드리지 마세요:

bash
1sudo reboot

제 기기는 약 15초 만에 돌아왔고, 게이트웨이가 자체적으로 시작되어 Telegram 에 다시 연결되었으며, 재부팅 전 대화 기록이 그대로 유지된 상태로 다음 메시지에 응답했습니다. 이것이 바로 핵심입니다.

Mac 의 경우: launchd 와 감시 프로그램

macOS 는 systemd 대신 launchd 를 사용하며, 여기에는 함정이 있습니다. macOS 15 와 Hermes v0.16.0 에서 hermes gateway start 는 launchd 서비스 등록에 실패하고, 사용자에게 알리지 않고 감독되지 않는 백그라운드 프로세스로 대체될 수 있습니다. 다음과 같은 메시지를 보게 됩니다:

bash
1Bootstrap failed: 5: Input/output error
2⚠ launchd cannot manage the gateway on this macOS version (launchctl exit 5)
3✓ Started gateway as a background process instead
4 It will NOT auto-start at login or auto-restart on crash.

이전에 작동 중인 launchd 작업이 있었다면 명령어가 이를 언로드하고, 대체 프로세스는 첫 번째 충돌이나 재부팅까지는 잘 실행되지만, 그 후에는 에이전트가 사라지고 이를 알릴 방법이 없습니다. CLI 가 실패할 때 raw launchctl 이 작동하며, SSH 를 통해서도 가능합니다:

bash
1launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist
2launchctl print gui/$(id -u)/ai.hermes.gateway | grep state # 원하는 결과: state = running

plist 는 로그인 시 게이트웨이를 시작하지만 충돌 시 재시작하지는 않습니다. cron 감시 프로그램이 두 가지 문제를 모두 해결하며, cron 은 로그인 없이 부팅 시 실행됩니다. 레시피에는 gateway-watchdog.sh 가 포함되어 있습니다. 이 스크립트는 5분마다 게이트웨이 프로세스가 살아있는지 확인하고, 그렇지 않으면 다시 부트스트랩합니다. 스케줄에 설치합니다:

bash
1(crontab -l 2>/dev/null; echo '*/5 * * * * $HOME/scripts/gateway-watchdog.sh >/dev/null 2>&1') | crontab -

저는 이 절차가 제 Mac Mini 에서 다운그레이드된 게이트웨이를 복구하는 것을 직접 확인했습니다. Mac 을 재부팅하고, 로그인하지 않아도 5분 이내에 게이트웨이가 돌아오는지 확인하세요.

설정 확인

  1. 서비스가 실행 중인지 확인: Linux 에서 systemctl --user status hermes-gateway (active (running)), 또는 macOS 에서 launchctl print gui/$(id -u)/ai.hermes.gateway | grep state (state = running)
  2. 봇에게 메시지 보내기: 응답해야 하며, 허용된 사용자 목록에 없는 사람은 무시합니다.
  3. Linux 에서 loginctl show-user [$USER](https://x.com/search?q=%24USER&src=cashtag_click) -p LingerLinger=yes 를 출력하는지 확인
  4. 기기를 재부팅하고, 기다린 후, 다시 로그인하지 않고 봇에게 메시지 보내기: 응답해야 합니다.

비용

VPS 의 경우, 기기 비용만 지출됩니다. 제 기기는 시간당 $0.012 인 Hetzner CX23 으로, 월 최대 $7.79 (Hetzner US 가격, 2026-06-18 기준; EU CX22 는 동일한 사양으로 더 저렴합니다)입니다.

Mac 의 경우, 이미 소유한 기기이므로 추가 서비스 비용이 없습니다. 두 경우 모두 Nous Portal 의 무료 티어 모델을 사용합니다.

여기서 메모리는 제한 요소가 아닙니다: 게이트웨이는 약 280MB, 전체 시스템은 약 556MB 를 사용하므로 1GB RAM 이면 충분합니다. 디스크가 실제 제한 요소입니다: 설치 용량이 약 6.6GB 이므로 1GB 또는 10GB 이미지는 부족하고, 20GB 를 할당하세요. 그리고 x86 을 사용하세요. 안전한 선택입니다.

직접 실행해보기, 그리고 다음 단계

두 기기 모두 정확한 스크립트가 포함된 전체 레시피를 제공하며, 그대로 실행 가능합니다:

이제 재부팅 후에도 살아있는, Telegram 상의 항상 켜져 있는 에이전트를 갖게 되었습니다.

다음 Flightplan 은 이를 기반으로 구축됩니다: 중요한 일이 있을 때만 메시지를 보내는 예약 작업, 에이전트가 읽고 쓰는 git 동기화 작업 공간, 그리고 모든 공개 작업에 사람의 승인을 거치는 초안 및 승인 흐름입니다.

읽어주셔서 감사합니다.

원클릭 저장

YouMind로 바이럴 글을 AI 심층 읽기

소스를 저장하고, 핵심 질문을 던지고, 주장을 요약해 바이럴 글을 다시 활용할 수 있는 노트로 바꾸세요. 하나의 AI 워크스페이스에서 모두 할 수 있습니다.

YouMind 둘러보기
크리에이터를 위해

당신의 Markdown을 깔끔한 𝕏 글로

직접 쓴 장문을 올릴 때 이미지, 표, 코드 블록을 𝕏에 맞게 정리하는 일은 번거롭습니다. YouMind는 전체 Markdown 초안을 깔끔하고 바로 게시할 수 있는 𝕏 글로 바꿔 줍니다.

Markdown → 𝕏 사용해 보기

분석할 패턴 더 보기

최근 바이럴 아티클

더 많은 바이럴 아티클 보기