Hermes Agent 리뷰 2026: 자기 개선하며 당신을 실제로 기억하는 AI 에이전트
Hermes Agent 심층 분석 2026: 당신을 실제로 기억하는 자기 개선 AI 에이전트 아마 GitHub Trending에서 Hermes Agent를 보셨을 거예요. 별 73,000개 이상에, 빠르게 증가하고 있죠. Nous Research(Hermes 및 Nomos 모델 제품군을...
Utilo Team
4/15/2026

Hermes Agent 심층 분석 2026: 당신을 실제로 기억하는 자기 개선 AI 에이전트
아마 GitHub Trending에서 Hermes Agent를 보셨을 거예요. 별 73,000개 이상에, 빠르게 증가하고 있죠. Nous Research(Hermes 및 Nomos 모델 제품군을 만든 연구소)에서 만든 이 에이전트는 자체 하드웨어에서 실행되는 오픈소스 AI 에이전트예요. chatbot wrapper가 아니에요. IDE plugin도 아니고요. memory, scheduling, tool use, 그리고 오래 실행할수록 더 똑똑해지는 learning loop를 갖춘 완전한 autonomous agent입니다.
이건 보도자료 요약이 아니에요. 실용적인 심층 분석입니다. Hermes가 실제로 무엇을 하는지, 어떻게 설정하는지, 무엇이 잘 작동하고 무엇이 그렇지 않은지, 그리고 여러분의 시간을 투자할 가치가 있는지 알아볼 거예요. 여기서 설명하는 모든 기능은 오늘 바로 시도해 볼 수 있는 실제 사용 시나리오와 함께 제공됩니다.
Hermes Agent의 정체
Hermes Agent는 여러분의 서버(또는 노트북, 혹은 월 5달러짜리 VPS)에 상주하며 terminal, Telegram, Discord, Slack, WhatsApp, Signal 등 15개 이상의 플랫폼을 단일 gateway process를 통해 소통하는 self-hosted AI 에이전트예요. 여러분이 지정하는 어떤 LLM이든 사용합니다. OpenAI, Anthropic, DeepSeek, Nous Portal, 200개 이상의 모델을 갖춘 OpenRouter, 또는 여러분의 자체 local endpoint까지요.
"또 하나의 에이전트 프레임워크"와 차별화되는 점은 바로 closed learning loop를 가지고 있다는 것이에요. 여러 세션에 걸쳐 내용을 기억하고, 복잡한 작업으로부터 재사용 가능한 skill을 만들고, 사용 중에 그 skill을 개선하며, 시간이 지남에 따라 여러분이 어떤 사람인지에 대한 profile을 구축해요. 대부분의 에이전트는 대화를 시작할 때마다 새로 시작하지만, Hermes는 context를 축적합니다.
MIT-licensed라는 점도 중요한데, 만약 여러분이 그 위에 무언가를 구축하려 한다면 말이죠.
주요 수치:
- 73,600+ GitHub stars (2026년 4월 기준)
- 4개 레지스트리에 걸쳐 647개 skills (79개 내장, 47개 옵션, 521개 커뮤니티 기여)
- 단일 게이트웨이에서 지원하는 15개 이상의 메시징 플랫폼
- 6개 terminal backends: local, Docker, SSH, Daytona, Singularity, Modal
- 최소 context 요구사항: 64K tokens (이보다 작은 모델은 시작 시 거부됨)
설치: 60초면 충분합니다, 농담 아니에요
# 한 줄로 설치 — Linux, macOS, WSL2, Termux를 통한 Android까지
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 쉘 다시 로드하기
source ~/.bashrc # 또는: source ~/.zshrc
# 채팅 시작하기
hermes
설치 프로그램이 모든 것을 처리해 줍니다: Python 3.11(uv를 통해, sudo 불필요), Node.js v22, ripgrep, ffmpeg까지요. 유일한 사전 요구 사항은 git입니다.
설치 후, 대부분의 설정을 다룰 수 있는 CLI 명령어 세트가 제공돼요.
hermes model # 대화형으로 LLM provider 선택
hermes tools # 도구 그룹 활성화/비활성화
hermes setup # 전체 설정 마법사 (모든 것을 한 번에 처리)
hermes gateway # 메시징 게이트웨이 시작
hermes doctor # 문제 진단
hermes update # 최신 버전으로 업데이트
Android에서도 작동해요. Termux는 Android와 호환되지 않는 음성 의존성을 건너뛰는 큐레이팅된 .[termux] extra와 함께 전용 설치 경로를 제공받아요. 말 그대로 휴대폰에서 AI 에이전트를 실행할 수 있는 거죠.
모델 Provider 선택하기
Hermes는 특정 provider에 종속되지 않아요. hermes model을 실행하고 목록에서 선택하면 됩니다.
| Provider | 설명 | 인증 방식 |
|---|---|---|
| Nous Portal | 구독형, 제로 설정 | OAuth login |
| OpenAI Codex | ChatGPT OAuth, Codex 모델 | Device code auth |
| Anthropic | Claude 모델 직접 사용 | Claude Code auth 또는 API key |
| OpenRouter | 200+ 모델, 멀티 프로바이더 | API key |
| DeepSeek | 직접 API | API key |
| GitHub Copilot | GPT-5.x, Claude, Gemini (Copilot 경유) | OAuth |
| Hugging Face | 20+ 오픈 모델 | HF_TOKEN |
| Custom Endpoint | VLLM, SGLang, Ollama, 모든 OpenAI 호환 | Base URL + key |
그 외에도 Z.AI/GLM, Kimi/Moonshot, MiniMax, Alibaba Cloud/DashScope, Arcee AI 등이 있어요.
64K 규칙: Hermes는 최소 64,000 토큰의 context를 필요로 해요. 이보다 작은 모델은 시작 시 거부됩니다. 이건 합리적인 결정이에요. 다단계 tool-calling 워크플로는 context를 빠르게 소모하고, context window가 작으면 에이전트가 작업 중간에 무엇을 하고 있었는지 잊어버리게 되거든요. 만약 로컬 모델을 실행한다면, --ctx-size 65536 이상으로 설정하세요.
언제든지 hermes model로 provider를 바꿀 수 있어요. 코드 변경도, 종속성도 없습니다.
메모리 시스템: 작고, 제한적이며, 의도적인
이 지점에서 Hermes는 대부분의 에이전트 프레임워크와 달라져요. 모든 것을 vector database에 쏟아붓는 대신, Hermes는 글자 수 제한이 있는 작은 파일 두 개를 사용해요.
| 파일 | 목적 | 제한 |
|---|---|---|
MEMORY.md | 에이전트의 노트 — 환경 정보, 규칙, 학습한 내용 | 2,200자 (~800 토큰) |
USER.md | 사용자 프로필 — 선호도, 소통 스타일 | 1,375자 (~500 토큰) |
두 파일 모두 ~/.hermes/memories/에 있으며, 세션이 시작될 때 frozen snapshot 형태로 system prompt에 주입돼요.
실제로 메모리가 어떻게 작동하는지 보여드릴게요.
══════════════════════════════════════════════
MEMORY (개인 노트) [67% — 1,474/2,200자]
══════════════════════════════════════════════
사용자의 프로젝트는 ~/code/myapi에 있는 Rust 웹 서비스이며 Axum + SQLx를 사용함
§이 머신은 Ubuntu 22.04를 실행하며, Docker와 Podman이 설치되어 있음
§사용자는 간결한 답변을 선호하며, 장황한 설명을 싫어함
에이전트는 세 가지 액션으로 자신의 메모리를 관리해요:
- add — 새로운 사실을 저장
- replace — 기존 항목을 업데이트 (부분 문자열 일치)
- remove — 더 이상 관련 없는 내용을 삭제
frozen snapshot의 함정: Hermes가 세션 중에 메모리에 쓸 때, 변경 사항은 즉시 디스크에 저장되지만 다음 세션이 시작되기 전까지는 system prompt에 나타나지 않아요. 이는 의도된 설계입니다(성능을 위해 LLM prefix cache를 보존). 하지만 이는 같은 세션에서 계속 대화할 경우 에이전트가 방금 배운 것을 "잊어버릴" 수 있다는 의미이기도 해요.
메모리가 가득 차면, 에이전트는 현재 항목과 사용 통계가 포함된 오류를 받고, 공간을 만들기 위해 항목을 통합하거나 교체해야 해요. 마치 15줄짜리 수첩을 가진 사람과 같죠. 무엇을 적을지 신중하게 선택하는 법을 배우게 됩니다.
무엇을 저장하고 무엇을 건너뛸까:
- ✅ 저장할 것: 사용자 선호도, 환경 정보, 프로젝트 규칙, 수정 사항, 워크플로 패턴
- ❌ 건너뛸 것: 사소한 정보, 쉽게 검색할 수 있는 사실, 큰 코드 블록, 세션 한정 임시 데이터
이런 제한된 접근 방식은 신선해요. 대부분의 에이전트 메모리 시스템은 제한이 없어서 노이즈로 가득 차거나, 관련성을 환각하는 vector retrieval을 사용하거든요. Hermes는 규칙을 강제합니다.
Skills: 에이전트가 스스로 만드는 절차적 기억
Skill은 "반복적인 작업을 어떻게 더 잘하게 될까?"에 대한 Hermes의 대답이에요. 에이전트가 복잡한 작업을 완료하면, 다음에 사용할 지침이 담긴 SKILL.md 파일, 즉 skill을 생성할 수 있어요. Skill은 사용 중에 스스로 개선됩니다.
생태계는 놀라울 정도로 커요: 4개 레지스트리에 걸쳐 647개의 skills가 있습니다. 내장된 것들은 다음과 같아요:
- 코딩 에이전트: Claude Code, Codex, OpenCode 위임
- 창의적 도구: ASCII 아트, p5.js 생성 예술, Manim 수학 애니메이션, Excalidraw 다이어그램, 아키텍처 다이어그램
- 플랫폼 연동: Apple Notes, Apple Reminders, FindMy, iMessage
- 재미있는 것들: Minecraft 모드팩 서버 설정, Pokemon 플레이어 (네, 헤드리스 에뮬레이션을 통해 자율적으로 Pokemon을 플레이해요)
- 디자인: 실제 웹사이트(Stripe, Linear, Vercel, Notion, Airbnb…)에서 추출한 54개의 프로덕션 품질 디자인 시스템 템플릿
Skill은 agentskills.io 오픈 표준을 따르므로, 이식성이 좋고 커뮤니티에서 공유할 수 있어요.
실제 시나리오: 여러분이 Hermes에게 Postgres + Redis + Node 앱을 위한 Docker Compose 스택을 설정해달라고 요청해요. 에이전트는 작업을 수행한 다음, 발견한 템플릿, 흔한 문제점, 포트 규칙 등을 포함하는 "docker-compose-setup"이라는 skill을 만들어요. 다음에 비슷한 스택을 요청하면, 에이전트는 이 skill을 불러와 절반의 단계로 작업을 완료합니다.
Tools: 47개 내장, 카테고리별 정리
Hermes는 광범위한 tool registry와 함께 제공돼요. hermes tools로 그룹을 활성화/비활성화할 수 있습니다.
| 카테고리 | 예시 | 용도 |
|---|---|---|
| Web | web_search, web_extract | 웹 검색 및 스크래핑 |
| Terminal & Files | terminal, process, read_file, patch | 명령 실행, 파일 편집 |
| Browser | browser_navigate, browser_snapshot, browser_vision | 전체 브라우저 자동화 |
| Media | vision_analyze, image_generate, text_to_speech | 이미지 분석, 생성, TTS |
| Agent orchestration | todo, execute_code, delegate_task | 계획, 하위 에이전트, 코드 실행 |
| Memory & recall | memory, session_search | 영구 메모리, 세션 간 검색 |
| Automation | cronjob, send_message | 예약된 작업, 외부 메시지 발송 |
빠른 활성화/비활성화:
# 웹과 터미널 도구만으로 시작
hermes chat --toolsets "web,terminal"
# 또는 대화형으로 설정
hermes tools
Terminal Backends: 어디서든 안전하게 실행
이것은 Hermes의 가장 강력한 실용적 기능 중 하나예요. 에이전트의 터미널 명령이 실제로 실행될 위치를 선택할 수 있습니다.
| 백엔드 | 사용 사례 |
|---|---|
local | 기본 — 여러분의 머신에서 실행 |
docker | 격리된 컨테이너 — 신뢰할 수 없는 작업에 안전 |
ssh | 원격 서버 — 에이전트가 자신의 코드를 건드릴 수 없음 |
daytona | 클라우드 샌드박스 — 영구적, 유휴 시 절전 모드 |
modal | 서버리스 — 확장 가능, 사용량 기반 과금 |
singularity | HPC 컨테이너 — 루트 없는 클러스터 컴퓨팅 |
# ~/.hermes/config.yaml
terminal:
backend: docker
docker_image: python:3.11-slim
container_persistent: true # 패키지가 세션 간에 유지됨
container_cpu: 1
container_memory: 5120 # 5GB
SSH 백엔드는 보안상 최적의 선택지예요. 에이전트는 원격 머신에서 작동하며 말 그대로 자신의 코드나 설정을 수정할 수 없어요. 컨테이너 백엔드(Docker, Singularity, Modal)는 읽기 전용 루트 파일 시스템, 모든 Linux capabilities 제거, 권한 상승 불가, PID 제한, 완전한 namespace 격리 등 추가적인 hardening을 제공합니다.
실용적인 팁: 만약 VPS에서 Hermes를 실행하고 실제 작업을 맡긴다면 docker 백엔드로 시작하세요. 작업을 신뢰하지만 분리가 필요하다면 ssh를 사용하세요. local은 개발용이나 본인이 직접 실행할 작업에만 사용하세요.
Cron: 내장된 예약 자동화
Hermes는 내장된 cron 스케줄러를 가지고 있어요. 외부 도구가 필요 없습니다. 자연어나 cron 표현식으로 작업을 생성하면 결과가 어떤 메시징 플랫폼으로든 전달돼요.
# 채팅에서
/cron add "every 6h" "Python 분야의 GitHub 트렌딩 레포를 확인하고 상위 5개 신규 레포를 요약해 줘. 흥미로운 게 없으면 [SILENT]라고 응답해." --name "GitHub 감시자" --deliver telegram
# CLI에서
hermes cron create "0 9 * * 1" \
"주요 AI 뉴스, 트렌딩 ML 레포, 가장 많이 논의된 HN 게시물에 대한 주간 보고서를 생성해 줘." \
--name "주간 AI 다이제스트" \
--deliver telegram
반드시 이해해야 할 중요한 점: Cron 작업은 현재 채팅에 대한 기억이 전혀 없는 새로운 에이전트 세션에서 실행돼요. 프롬프트는 완전히 독립적이어야 합니다. 많은 사람들이 이 부분에서 실수를 해요. "아까 얘기했던 그거 해줘" 같은 cron 프롬프트를 작성하고는 왜 에이전트가 무슨 말인지 모르는지 의아해하죠.
--script 파라미터가 비장의 무기예요. 각 실행 전에 실행되는 Python 스크립트를 첨부할 수 있습니다. 그 스크립트의 stdout이 에이전트의 context가 됩니다.
# ~/.hermes/scripts/watch-site.py
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-state.json")
content = urllib.request.urlopen(URL, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()
# Load previous state
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
# Save current state
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
if prev_hash and prev_hash != current_hash:
print(f"CHANGE DETECTED on {URL}")
print(f"Content preview:\n{content[:2000]}")
else:
print("NO_CHANGE")
/cron add "every 1h" "스크립트가 CHANGE DETECTED라고 하면 변경 내용을 요약해 줘. NO_CHANGE라고 하면 [SILENT]로 응답해 줘." --script ~/.hermes/scripts/watch-site.py --name "가격 모니터" --deliver telegram
[SILENT] 트릭: 에이전트의 응답에 [SILENT]가 포함되어 있으면, 메시지 전달이 억제돼요. 실제로 무언가 일어났을 때만 알림을 받게 됩니다. 스팸이 없죠.
메시징 게이트웨이: 휴대폰으로 대화하기
hermes gateway setup # 대화형 — 플랫폼 선택
hermes gateway # 게이트웨이 프로세스 시작
Hermes는 단일 게이트웨이에서 Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost, Email, SMS, DingTalk, Feishu, WeCom, BlueBubbles, Home Assistant, Open WebUI 등 15개 이상의 메시징 플랫폼을 지원해요.
Telegram 설정 예시 (가장 일반적):
- @BotFather를 통해 봇 생성 (
/newbot) - @userinfobot를 통해 사용자 ID 확인
hermes gateway setup실행, Telegram 선택 후 토큰과 사용자 ID 붙여넣기- 게이트웨이 시작:
hermes gateway
이게 다예요. 이제 서버에서 작업 중인 에이전트와 휴대폰으로 대화할 수 있습니다.
음성 메모도 작동해요 — Telegram에서 음성 메시지를 보내면, Hermes가 faster-whisper(로컬에서 무료로 실행)로 자동 받아쓰기하고 텍스트에 응답합니다.
그룹 채팅 팁: Telegram 봇은 기본적으로 privacy mode가 활성화되어 있어 /commands와 직접적인 답장만 볼 수 있어요. 그룹의 모든 메시지를 보게 하려면 BotFather에서 privacy mode를 비활성화하거나 봇을 관리자로 승격시키세요.
MCP 통합: 외부 도구로 확장하기
Hermes는 Model Context Protocol(MCP)을 지원해요. 어떤 MCP 서버에든 연결해서 도구를 추가할 수 있습니다.
# ~/.hermes/config.yaml
mcp:
servers:
- name: "github"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_TOKEN: "your-token"
MCP 도구들은 내장 도구들과 함께 표시돼요. 도구 과부하를 피하기 위해 에이전트가 사용할 수 있는 MCP 도구를 필터링할 수 있습니다.
보안: 7계층 심층 방어
Hermes는 단순한 "승인 프롬프트를 추가했습니다"가 아닌, 진정한 defense-in-depth 모델을 갖추고 있어요.
- 사용자 인증 — allowlist로 누가 에이전트와 대화할 수 있는지 제어
- 위험한 명령어 승인 — 파괴적인 작업(rm -rf, chmod 777 등)에 대한 human-in-the-loop
- 컨테이너 격리 — hardened 설정이 적용된 Docker/Singularity/Modal
- MCP 자격 증명 필터링 — MCP 하위 프로세스를 위한 환경 변수 격리
- Context 파일 스캔 — 프로젝트 파일 내 prompt injection 탐지
- 세션 간 격리 — 세션들이 서로의 데이터에 접근할 수 없음
- 입력 값 검증 — 작업 디렉토리 파라미터를 allowlist에 대해 검증
승인 모드:
# ~/.hermes/config.yaml
approvals:
mode: manual # manual | smart | off
timeout: 60 # 자동 거부까지의 시간(초)
manual(기본값): 위험한 명령어 실행 전 항상 질문smart: 보조 LLM을 사용해 위험도를 평가 — 저위험은 자동 승인, 위험한 것은 자동 거부, 불확실한 것은 사용자에게 에스컬레이션off/--yolo: 모든 검사를 우회. CI/CD나 일회용 컨테이너에서만 사용하세요.
타임아웃은 fail-closed 방식이에요. 60초 안에 응답하지 않으면, 명령어는 승인되는 것이 아니라 거부됩니다. 이것이 올바른 기본값이죠.
Subagents: 위임과 병렬 처리
Hermes는 병렬 작업 스트림을 위해 격리된 subagent를 생성할 수 있어요.
❯ 다음 세 가지 주제를 동시에 조사해 줘:
1. 최신 Rust async 런타임 벤치마크
2. PostgreSQL 17의 새로운 기능
3. 프로덕션 환경에서 LLM 캐싱을 위한 모범 사례
각 subagent는 자신만의 세션, 도구, context를 가집니다. 결과는 부모 에이전트에게 돌아와요. 이는 연구, 배치 처리, 다중 레포지토리 작업처럼 본질적으로 병렬 처리가 가능한 작업에 유용합니다.
또한 execute_code를 사용해 RPC를 통해 도구를 호출하는 Python 스크립트를 작성하여, 다단계 파이프라인을 context 비용이 없는 단일 턴으로 압축할 수 있습니다.
실제 단점들 (솔직한 부분)
좋은 점만 말하는 리뷰는 아무 쓸모가 없죠. 실제로 불편한 점들은 다음과 같아요