hermes-agent는 단순한 코딩 보조 도구보다 넓은 self-hosted 에이전트 런타임이다. CLI, API 서버, 메시징 게이트웨이, 브라우저 자동화, 터미널 실행, 파일 작업, 메모리, 스킬, 스케줄링을 하나의 루프로 묶는다. 이 튜토리얼은 Hermes를 개인 자동화나 내부 운영 도구로 쓸 때 필요한 안전한 기본 설정과 주요 워크플로를 정리한다.
Hermes를 자동화 런타임으로 보는 관점
Hermes의 요청 흐름은 대략 네 계층으로 나눌 수 있다.
| 계층 | 역할 |
|---|---|
| Entry points | CLI, API server, Telegram/Slack 같은 게이트웨이 |
| Agent core | 프롬프트 구성, LLM 호출, 재시도, 모델 폴백, 도구 선택 |
| Tool runtime | 브라우저, 터미널, 파일, 웹 검색, 코드 실행, cron |
| State | SQLite 세션 저장소, MEMORY.md, USER.md, skills |
여기서 중요한 점은 “한 번 답변하는 챗봇”이 아니라 장기 상태와 도구 권한을 가진 실행 환경이라는 것이다. 그래서 모델 선택보다 권한, 샌드박스, 메모리, 네트워크 정책을 먼저 설계해야 한다.
설치와 모델 설정
Linux, macOS, WSL2, Android Termux에서 설치할 수 있다. Windows 네이티브 실행보다는 WSL2를 사용한다.
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc # zsh 사용자는 source ~/.zshrc
hermes model로컬 Ollama를 OpenAI 호환 엔드포인트로 붙일 수도 있다.
Provider: Custom Endpoint
API base URL: http://127.0.0.1:11434/v1
API key: Enter
Model: 설치된 Ollama 모델 선택문제가 있으면 먼저 진단 명령을 실행한다.
hermes doctor안전한 기본 프로필 만들기
Hermes는 비밀정보와 일반 설정을 나눠 관리하는 편이 좋다. API 키와 서비스 토글은 ~/.hermes/.env, 일반 설정은 ~/.hermes/config.yaml에 둔다.
cat > ~/.hermes/.env <<'EOF'
OPENROUTER_API_KEY=replace-me
BROWSERBASE_API_KEY=replace-me
BROWSERBASE_PROJECT_ID=replace-me
API_SERVER_ENABLED=true
API_SERVER_KEY=replace-me-local-dev
EOF운영용 기본값은 “수동 승인, Docker 터미널, 사설 URL 차단”을 출발점으로 삼는다.
model: anthropic/claude-3-5-sonnet-20240620
terminal:
backend: docker
docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
container_persistent: true
browser:
inactivity_timeout: 120
memory:
memory_enabled: true
user_profile_enabled: true
approvals:
mode: manual
security:
allow_private_urls: false
display:
streaming: true이 구성은 터미널 명령을 컨테이너로 격리하고, 민감한 작업을 수동 승인으로 묶으며, 기본적으로 localhost나 사설망 URL 접근을 막는다. 에이전트가 브라우저를 열 수 있는 환경에서는 SSRF(Server-Side Request Forgery) 위험을 줄이는 핵심 설정이다.
cron으로 반복 작업 만들기
Hermes는 자연어로 반복 작업을 만들고 CLI에서 상태를 관리할 수 있다.
평일 오전 8시 30분마다 ~/reports/daily_sales.csv를 읽고 이상치를 요약해서 내 home 채널로 보내줘.hermes cron list
hermes cron status
hermes cron run <job_id>
hermes cron pause <job_id>운영 자동화에서 중요한 안전장치도 있다. cron으로 시작된 세션은 새 cron 작업을 만들 수 없게 막아 루프성 작업 증식을 방지한다. 일정 기반 자동화는 작은 권한과 명확한 출력 채널부터 시작하는 편이 낫다.
브라우저 자동화와 사설 URL 정책
Hermes 브라우저 도구는 Browserbase 같은 클라우드 브라우저나 로컬 Chrome/Chromium을 제어할 수 있다. 단순 HTML 텍스트가 아니라 접근성 트리(accessibility tree)를 사용하므로, 모델이 버튼·링크·입력 필드를 더 안정적으로 다룰 수 있다.
예시 작업:
https://news.ycombinator.com 을 열고 상위 5개 글을 나열한 뒤 첫 번째 글의 핵심 주장과 주의점을 요약해줘.보안 테스트도 같이 해야 한다.
http://localhost:3000 을 열고 대시보드 스크린샷을 찍어줘.allow_private_urls: false라면 이 요청은 차단되어야 한다. 개발 중 로컬 앱 접근이 필요하다면 사설 URL은 로컬 브라우저로, 공용 URL은 클라우드 브라우저로 라우팅하는 방식이 안전하다.
메모리와 세션 검색
Hermes는 세션 상태를 SQLite에 저장하고, 장기 메모리는 MEMORY.md와 USER.md로 관리한다. 새 세션이 시작될 때 이 파일들이 시스템 프롬프트에 주입되어 사용자 선호와 프로젝트 맥락을 유지한다.
테스트는 간단하다.
CSV 출력, British English, 짧은 executive summary를 선호한다고 기억해.
내 기본 프로젝트 언어는 Python이라고 기억해.새 세션을 열고 아래처럼 물어본다.
내가 선호하는 출력 형식, 영어 변형, 기본 프로젝트 언어가 뭐야?중복 메모리 저장을 거부하는지도 확인하면 좋다. 메모리는 강력하지만 오래된 선호가 자동화 품질을 망칠 수도 있으므로 정기적으로 파일을 읽고 정리해야 한다.
execute_code로 도구 호출 압축하기
복잡한 리서치 작업은 웹 검색, 페이지 추출, 요약, 파일 저장이 여러 턴으로 늘어진다. Hermes의 execute_code 도구는 모델이 Python 스크립트를 작성해 Hermes 도구를 로컬 RPC 브리지로 호출하게 만들어, 긴 도구 호출 시퀀스를 한 턴으로 압축한다.
from hermes_tools import web_search, web_extract
import json
results = web_search("Rust async runtime comparison 2025", limit=5)
summaries = []
for result in results["data"]["web"]:
pages = web_extract([result["url"]])
for page in pages.get("results", []):
if page.get("content"):
summaries.append({
"title": result["title"],
"url": result["url"],
"excerpt": page["content"][:500],
})
print(json.dumps(summaries, indent=2))이 기능은 강력한 만큼 실행 시간, 출력 크기, 네트워크 접근, 파일 쓰기 범위를 제한해야 한다. 특히 내부 문서나 사내 시스템을 검색하는 경우에는 agent-governance 관점의 감사 로그와 승인 절차가 필요하다.
다른 에이전트와의 차이
| 도구 | 주 용도 | Hermes와의 차이 |
|---|---|---|
| Hermes Agent | 범용 자동화, 리서치, 멀티 채널 에이전트 런타임 | CLI/API/게이트웨이/cron/메모리/보안 설정이 넓게 통합 |
| OpenHands | 소프트웨어 개발 에이전트 플랫폼 | 코딩 워크스페이스와 개발 작업에 더 집중 |
| Claude Code / Codex CLI | 터미널 중심 개발 보조 | 개발자 워크플로에 집중, Hermes는 자동화 운영 계층까지 확장 |
비용도 라이선스보다 운영 비용 관점에서 봐야 한다. Hermes 자체는 오픈소스지만 모델 추론, 클라우드 브라우저, 샌드박스 컴퓨트, 벤치마크 실행 비용이 누적된다. 모델 라우팅 정책을 가격·지연시간 기준으로 나누고, 자동 작업에는 예산 한도를 둔다.
운영 체크리스트
- Hermes 버전을 고정해 문서와 동작 차이를 줄인다.
- 터미널 실행은 Docker나 격리 백엔드로 시작한다.
- 사설 URL 접근은 기본 차단하고 필요한 경로만 허용한다.
- cron 작업은 생성 권한, 실행 주기, 출력 채널을 제한한다.
MEMORY.md,USER.md, skills를 정기적으로 리뷰한다.- 성공 경로뿐 아니라 실패 경로, 권한 거부, 타임아웃을 테스트한다.
Hermes는 잘 설정하면 개인 비서형 챗봇을 넘어 상시 자동화 런타임으로 쓸 수 있다. 반대로 권한을 넓게 열어두면 파일, 브라우저, 네트워크, 스케줄러가 모두 연결된 위험한 실행 환경이 된다. 처음부터 보수적인 프로필로 시작하는 편이 낫다.
관련 문서
- hermes-agent — Hermes Agent 기술 소개 및 아키텍처
- hermes-agent-tutorial-beginner — 입문자를 위한 설치·첫 워크플로·스킬 활용
- agent-governance — AI 에이전트 권한·비용·정책 통제
- agent-harness — 에이전트 하네스 엔지니어링 개요
참고 자료
- Hermes Agent Guide: What is it and How to Use it? — Analytics Vidhya (2026-05-12)