Hermes Agent는 Nous Research가 개발한 MIT 라이선스 오픈소스 AI 에이전트다. 2026년 4월 기준 v0.10.0까지 출시되었으며, GitHub에서 빠르게 성장하는 커뮤니티를 형성하고 있다. 단순한 챗봇 래퍼가 아니라 영속 메모리, 자동 스킬 생성, 18개 메시징 플랫폼 게이트웨이, 6종 터미널 백엔드, 서브에이전트 위임까지 갖춘 자율형 에이전트 런타임이다.
이 에이전트가 주목받는 이유는 명확하다. Claude Code나 OpenAI Codex가 로컬 터미널에 묶여 있는 반면, Hermes는 텔레그램 메시지 한 줄로 클라우드 VM에서 코드를 수정하고, 에러를 잡고, 빌드하고, 결과를 보고받는 워크플로우를 지원한다. 같은 LLM을 사용하더라도 에이전트 인프라 설계에서 체감 성능 차이가 발생하는 구조를 갖추고 있다.
이 문서에서는 Hermes Agent의 아키텍처, 시스템 프롬프트 구성, 자기학습 메커니즘, 보안 모델, 그리고 기존 코딩 에이전트와의 구조적 차이를 기술 문서와 소스 코드 기반으로 분석한다.
1. 게이트웨이 아키텍처와 원격 코딩 워크플로우
1.1 왜 텔레그램으로 코딩 지시가 가능한가
- Claude Code와 Codex는 로컬 터미널에서 직접 대화하는 구조다. 에이전트가 사용자의 로컬 파일시스템에서 작업하며, 노트북을 닫으면 세션이 끊긴다.
- Hermes Agent는 Gateway 아키텍처를 채택한다.
hermes gateway start명령어로 장수명 백그라운드 프로세스를 실행하면, 하나의 프로세스가 18개 플랫폼 어댑터를 동시에 서빙한다. Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email, SMS, iMessage(BlueBubbles), WeChat, WeCom, DingTalk, Feishu, Mattermost, Home Assistant, Webhook 등이 포함된다. - 메시지 수신 시 어댑터가
MessageEvent를 생성하고,GatewayRunner가 유저 인증, 세션 매핑,AIAgent인스턴스 생성, 대화 실행, 결과 역배달까지 처리한다. - 텔레그램에서는 프로젝트 대화(Private Chat Topics) 기능으로 하나의 채팅방 안에서 프로젝트별 격리된 세션을 운용할 수 있다.
1.2 6종 터미널 백엔드
- Local은 사용자 머신에서 직접 실행하는 기본 백엔드다.
- Docker는 읽기 전용 루트 파일시스템, 리눅스 캐퍼빌리티 전부 드롭, PID 제한 256 등 하드닝이 적용된 컨테이너에서 실행한다.
- SSH는 원격 서버에서 명령을 실행하며, 에이전트가 자기 코드를 수정하지 못하게 분리할 때 권장된다.
- Daytona와 Modal은 서버리스 백엔드로, 에이전트가 쉬면 환경이 하이버네이트되어 과금이 거의 발생하지 않고 메시지가 오면 깨어난다.
- Singularity는 HPC 환경에서 Docker를 쓸 수 없을 때 사용하는 루트리스 컨테이너 백엔드다.
- 모든 컨테이너 백엔드에서 CPU, 메모리(기본 5GB), 디스크(기본 50GB) 리소스를 설정할 수 있으며,
container_persistent: true로 설정하면 패키지와 파일이 세션 간에 유지된다.
핵심 포인트: $5 VPS에 Hermes를 올려놓고 Daytona나 Modal 백엔드를 설정하면, 텔레그램으로 코딩을 지시하고 에이전트가 클라우드에서 코드 수정, 테스트, 빌드, 결과 보고까지 자율적으로 처리하는 워크플로우가 만들어진다. 유휴 시간에는 과금이 거의 0원이다.
2. 시스템 프롬프트 10레이어 조립 구조
Hermes의 시스템 프롬프트는 정적 캐시 레이어와 API 호출 시 일시 레이어를 분리하는 설계 철학을 따른다. 이 분리가 토큰 비용 절감과 프롬프트 캐싱 효율에 직접 영향을 미친다.
2.1 캐시되는 10개 레이어의 조립 순서
- SOUL.md(에이전트 정체성):
~/.hermes/SOUL.md파일에 정의된 에이전트의 성격과 전문성이 최상위에 위치한다. 기본값은 소프트웨어 엔지니어이자 연구자 정체성이며, 사용자가 자유롭게 커스터마이징할 수 있다. SOUL.md가 없으면 하드코딩된DEFAULT_AGENT_IDENTITY로 폴백한다. - Tool-aware behavior guidance: 단순히 도구 목록을 알려주는 게 아니라, GPT/Codex 모델 사용 시 도구를 반드시 사용해서 실제로 행동하라는 강제 지침이 포함된다. 계획만 세우고 실행하지 않는 패턴을 명시적으로 차단한다.
- Honcho 정적 블록: 활성화 시 Honcho 변증법적 사용자 모델링 데이터가 주입된다.
- 선택적 시스템 메시지: 설정 파일이나 API에서 주입하는 사용자 정의 메시지다.
- MEMORY.md 스냅샷: 에이전트의 개인 노트로, 환경 정보, 프로젝트 컨벤션, 발견한 워크어라운드 등 2,200자(약 800토큰) 한도 내에서 관리된다.
- USER.md 스냅샷: 사용자 프로필로, 이름, 선호도, 커뮤니케이션 스타일 등 1,375자(약 500토큰) 한도다.
- Skills Index: 설치된 모든 스킬의 이름과 요약만 포함하는 경량 인덱스로, 에이전트가 필요할 때
skill_view로 전체 내용을 로드한다. - Context Files:
.hermes.md,AGENTS.md,CLAUDE.md,.cursorrules순서로 우선순위를 따져 프로젝트 컨텍스트 파일 하나만 로드한다. 20,000자 상한에 70/20 head/tail 비율로 트렁케이션된다. - Timestamp + Session ID: 현재 시각과 세션 식별자를 주입한다.
- Platform hint: CLI인지, 텔레그램인지 등 플랫폼 특성에 맞는 응답 형식 힌트를 제공한다.
2.2 이 구조가 코딩 품질에 미치는 영향
- 메모리 레이어(5, 6번)가 있어서 에이전트는 매 세션마다 프로젝트 환경, 사용자 선호도, 과거에 배운 교훈을 자동으로 알고 시작한다. Claude Code는 매 세션이 백지 상태에서 시작한다.
- 스킬 인덱스(7번)가 있어서 에이전트는 복잡한 작업을 만나면 관련 스킬을 능동적으로 불러와 검증된 절차를 따른다.
- 캐시된 시스템 프롬프트는 대화 중 변하지 않으므로 Anthropic의 프롬프트 캐싱이 효과적으로 작동하여 후속 턴의 지연과 비용이 감소한다.
- 캐시를 깨는 요인은 모델 전환, 메모리 파일 변경, 컨텍스트 파일 변경 세 가지뿐이다.
핵심 포인트: 10개 레이어가 합쳐져서 에이전트가 자신의 정체성, 프로젝트 맥락, 사용자 특성, 도구 사용법, 과거 학습 내용을 한꺼번에 인지한 상태로 매 턴을 시작한다. 같은 LLM을 사용해도 이 맥락 밀도 차이가 체감 성능을 좌우한다.
3. 자기학습 루프: 네 겹 메모리 아키텍처
Hermes가 다른 코딩 에이전트와 근본적으로 다른 지점이 바로 닫힌 학습 루프(Closed Learning Loop)다. 네 개의 메모리 레이어가 각각 다른 시점에 작동하면서 에이전트의 역량이 시간에 따라 축적된다.
3.1 1계층: 영속 메모리(MEMORY.md + USER.md)
- MEMORY.md는 에이전트의 개인 노트 공간으로, 환경 사실(OS, 설치된 도구), 프로젝트 컨벤션, 발견한 워크어라운드, 작업 완료 기록 등을 저장한다. 2,200자 한도가 있어 축적이 아닌 큐레이션이 강제된다.
- USER.md는 사용자 프로필로, 이름, 역할, 타임존, 커뮤니케이션 선호도, 기술 수준 등을 1,375자 한도 내에서 관리한다.
- 에이전트는
memory도구로 add, replace, remove 세 가지 액션을 수행하며, 대화 중 유저의 선호도나 환경 정보를 능동적으로 저장한다. - 중요한 설계 결정: 세션 중 메모리 변경은 디스크에 즉시 반영되지만, 시스템 프롬프트에는 다음 세션부터 적용된다. 이는 프롬프트 캐시를 보호하기 위한 의도적 설계다.
3.2 2계층: 주기적 넛지(Periodic Nudge)
- 세션 중 일정 간격으로 에이전트에게 내부 시스템 프롬프트가 발행된다.
- 에이전트는 최근 활동을 되돌아보고, 향후 세션에 유용할 정보가 있는지 평가한다.
- 임계값을 넘는 정보만 메모리 파일에 기록하므로, 메모리가 모든 대화의 덤프가 되는 것을 방지한다.
3.3 3계층: 스킬 시스템(절차적 메모리)
- 에이전트가 복잡한 작업(5회 이상 tool call)을 완료하면, 성공 경로를 SKILL.md 파일로 자동 저장한다. 에러에서 복구한 경우, 사용자가 접근법을 교정한 경우, 비자명한 워크플로우가 성공한 경우가 트리거 조건이다.
- 스킬 파일은
~/.hermes/skills/에 저장되며, agentskills.io 오픈 표준을 따라 호환 에이전트 간 이식이 가능하다. skill_manage도구로 create, patch, edit, delete, write_file, remove_file 여섯 가지 액션을 수행한다. 업데이트 시에는 전체 재작성보다 patch 액션이 선호되는데, 변경된 부분만 토큰을 사용하므로 비용 효율적이고 기존에 작동하던 부분을 깨뜨릴 위험이 적다.- 스킬은 한번 작성되면 고정되지 않는다. 에이전트가 해당 스킬을 사용하는 중에 더 나은 경로를 발견하면 사용 중 자체 개선한다.
- 프로그레시브 디스클로저 패턴으로, 시스템 프롬프트에는 스킬 이름과 요약만 포함되고 전체 내용은 필요할 때만 로드된다. 스킬이 200개든 40개든 컨텍스트 비용이 거의 동일하다.
3.4 4계층: 세션 검색(FTS5 에피소딕 메모리)
- 모든 과거 세션이 SQLite + FTS5 풀텍스트 인덱스로 저장된다.
- 에이전트가 과거 맥락이 필요하다고 판단하면
session_search도구로 검색하고, 결과는 LLM 요약을 거쳐 현재 턴에 주입된다. - 이 계층은 에피소딕 메모리(무엇이 언제 일어났는지)를 담당하며, 스킬 계층의 절차적 메모리(어떻게 하는지)와 명확히 분리된다.
| 메모리 계층 | 용량 | 속도 | 용도 | 관리 주체 |
|---|---|---|---|---|
| MEMORY.md + USER.md | 3,575자 고정 | 즉시(시스템 프롬프트 내) | 항상 필요한 핵심 사실 | 에이전트 자율 큐레이션 |
| 스킬(SKILL.md) | 무제한(파일 수) | 온디맨드 로드 | 검증된 워크플로우 절차 | 에이전트 자동 생성/개선 |
| 세션 검색(FTS5) | 무제한(전체 세션) | 검색+LLM 요약 | 과거 대화 특정 맥락 회수 | 자동 저장, 온디맨드 검색 |
| Honcho 사용자 모델링 | 12개 정체성 레이어 | 세션 간 누적 | 사용자 선호도·패턴 심층 모델링 | 수동적 자동 수집 |
4. 에이전트 루프: 90 이터레이션 자율 실행
Hermes의 핵심 오케스트레이션 엔진은 run_agent.py의 AIAgent 클래스로, 약 10,700줄 규모다.
4.1 한 턴의 실행 흐름
- 태스크 ID 생성 후 사용자 메시지를 대화 히스토리에 추가한다.
- 캐시된 시스템 프롬프트를 로드하거나 새로 빌드한다.
- 대화가 모델 컨텍스트 윈도우의 50%를 초과하면 프리플라이트 압축이 트리거된다. 압축 전 메모리를 디스크에 플러시하여 데이터 손실을 방지하고, 중간 턴을 요약하되 최근 20개 메시지는 보존한다.
- chat_completions, codex_responses, anthropic_messages 세 가지 API 모드 중 하나로 호출한다.
- 응답에 tool_calls가 포함되면 도구를 실행하고 결과를 히스토리에 추가한 뒤 다시 4번으로 루프한다. 여러 tool call이 동시에 오면
ThreadPoolExecutor로 병렬 실행한다. - 텍스트 응답이면 세션을 SQLite에 저장하고, 메모리를 플러시한 뒤 결과를 반환한다.
- 이 루프는 기본 최대 90 이터레이션까지 자율적으로 반복된다.
4.2 서브에이전트 위임(delegate_task)
- 메인 에이전트가
delegate_task를 호출하면 격리된 자식 AIAgent가 생성된다. 자식은 부모의 대화 히스토리를 전혀 모르며, goal과 context 필드로 전달받은 정보만 사용한다. - 최대 3개 서브에이전트가 병렬로 실행되며, 각자 독립된 터미널 세션을 갖는다.
- 자식은 delegation, clarify, memory, send_message, execute_code 도구를 사용할 수 없어 재귀 위임이나 부작용이 차단된다.
- 자식의 최종 요약만 부모 컨텍스트에 진입하므로 토큰 효율이 높다.
- 서브에이전트에 별도 모델을 설정할 수 있어, 단순 작업은 저렴한 모델로 라우팅하는 비용 최적화가 가능하다.
4.3 폴백 프로바이더 체인
- 주 프로바이더가 429 레이트 리밋, 5xx 서버 에러, 401/403 인증 에러를 반환하면
fallback_providers목록의 다음 프로바이더로 자동 전환된다. - 보조 작업(비전, 압축, 웹 추출, 세션 검색)은 각각 독립된 폴백 체인을 가진다.
- 다음 턴에서 자동으로 주 프로바이더 복원을 시도한다.
5. 모델 유연성: 200개 이상 모델 무잠금 전환
Claude Code는 Anthropic 모델만, Codex는 OpenAI 모델만 사용 가능하다. Hermes는 hermes model 한 줄로 아무 LLM이나 전환할 수 있다.
| 프로바이더 | 특징 |
|---|---|
| Nous Portal | 400개 이상 모델, Tool Gateway 포함 |
| OpenRouter | 200개 이상 모델 중개 |
| Anthropic | 네이티브 Messages API 지원 |
| OpenAI | chat_completions + codex_responses 모드 |
| Google AI Studio | Gemini 직접 접속 |
| xAI | Grok 네이티브 지원 |
| Xiaomi MiMo | 무료 모델 지원 |
| HuggingFace | HF Inference API 풀 통합 |
| 커스텀 엔드포인트 | 로컬 모델(Ollama 등) 자유 연결 |
세션 중간에도 /model 명령어로 실시간 전환이 가능하며, 이 기능은 CLI뿐 아니라 텔레그램, 디스코드 등 모든 게이트웨이 플랫폼에서 작동한다. OpenRouter 변형 태그(:free, :extended, :fast)도 모델 전환 시 보존된다.
6. 보안 모델: 7계층 방어
6.1 위험 명령어 승인 시스템
- 모든 명령어 실행 전
tools/approval.py가 위험 패턴을 검사한다.rm -r,chmod 777,DROP TABLE,curl | sh, 포크 폭탄 등 30종 이상의 패턴이 포함된다. - 승인 모드는 manual(기본), smart(보조 LLM이 위험도 평가), off(모든 검사 비활성화) 세 가지다.
- CLI에서는 once(1회), session(세션 동안), always(영구), deny(거부) 네 가지 선택지를 제공하며, 메시징 플랫폼에서는 텔레그램/슬랙 네이티브 버튼으로 승인한다.
- 타임아웃 내 응답이 없으면 기본 거부(fail-closed) 정책이 적용된다.
6.2 컨테이너 격리와 제로 텔레메트리
- Docker 백엔드 사용 시 모든 리눅스 캐퍼빌리티 드롭, 권한 상승 차단, PID 제한 256, 크기 제한된 tmpfs가 기본 적용된다.
- 컨텍스트 파일(AGENTS.md, SOUL.md 등)은 프롬프트 인젝션 패턴(이전 지시 무시, 비가시 유니코드, 자격 증명 탈취 시도)을 자동 스캔한다.
- MCP 서버 서브프로세스는 PATH, HOME, USER 등 안전 변수만 전달받으며, 나머지 환경 변수는 전부 제거된다.
- SSRF 보호가 상시 작동하여 사설 네트워크, 루프백, 링크 로컬, 클라우드 메타데이터 주소 접근이 차단된다.
- 제로 텔레메트리가 아키텍처 기본 속성으로, 사용 데이터나 대화 로그가 외부로 전송되지 않는다.
7. Cron 스케줄링과 무인 자동화
- Hermes의 Cron은 쉘 스크립트가 아닌 에이전트 태스크로 실행된다. 스케줄 시각이 되면 에이전트 루프가 메모리와 스킬에 완전히 접근한 상태로 작업을 수행하고, 결과를 게이트웨이를 통해 지정 플랫폼으로 배달한다.
- 자연어로 스케줄을 정의할 수 있어, 매일 밤 테스트 실행 후 텔레그램으로 결과 보고, 매주 코드 감사 후 슬랙 채널 알림 같은 무인 워크플로우를 구성할 수 있다.
- v0.8.0부터
notify_on_complete기능이 추가되어, 백그라운드 프로세스(AI 모델 학습, 테스트 스위트, 배포 등)가 완료되면 에이전트가 자동으로 알림을 받는다.
8. Claude Code·Codex와의 구조적 비교
| 비교 항목 | Claude Code | OpenAI Codex | Hermes Agent |
|---|---|---|---|
| 접근 방식 | 로컬 터미널 + IDE | 로컬 터미널 | CLI + 18개 메시징 플랫폼 |
| 실행 환경 | 로컬 머신 | 로컬 머신 | Local, Docker, SSH, Daytona, Modal, Singularity |
| 모델 | Anthropic 전용 | OpenAI 전용 | 200개 이상 모델 무잠금 전환 |
| 영속 메모리 | 없음(CLAUDE.md 수동) | 없음 | 4계층 자동 메모리 시스템 |
| 자기학습 | 없음 | 없음 | 스킬 자동 생성 및 사용 중 개선 |
| 서브에이전트 | Agent Teams(공유 태스크) | 병렬 에이전트(독립) | 격리된 서브에이전트 최대 3개 병렬 |
| 원격 코딩 | 불가(로컬 전용) | 불가 | 텔레그램 등에서 클라우드 VM 원격 지시 |
| 스케줄링 | 없음 | 없음 | 내장 Cron + 플랫폼 배달 |
| 비용 구조 | Anthropic API 요금 고정 | OpenAI API 요금 고정 | 저렴한 모델 라우팅으로 최대 90% 절감 가능 |
| 라이선스 | 부분 공개 | 비공개 | MIT 완전 오픈소스 |
SWE-bench Verified 벤치마크 기준으로, Claude Code(Opus 4.6)는 70~75% 범위의 점수를 달성하며 순수 코딩 성능에서 최상위권이다. Hermes는 같은 Opus 4.6을 백엔드로 사용하면 유사한 수준에 근접하지만 범용 아키텍처 오버헤드로 인해 약간의 차이가 발생하며, DeepSeek-V3 같은 저렴한 모델을 사용하면 점수가 크게 낮아진다. Hermes의 코딩 벤치마크는 단일 숫자가 아니라 백엔드 모델에 따른 40~72% 범위다.
9. 스킬 허브와 생태계
- 스킬 허브에서 검색, 설치, 업데이트가 가능하며, 출처별로 official(Hermes 공식), skills-sh(Vercel 디렉토리), well-known(웹사이트 자동 발견), github(직접 설치), clawhub, lobehub, claude-marketplace 등 7개 소스가 통합되어 있다.
- 모든 허브 설치 스킬은 데이터 탈취, 프롬프트 인젝션, 파괴적 명령어, 공급망 위협을 검사하는 보안 스캐너를 거친다.
- 신뢰도는 builtin, official, trusted, community 네 단계로 분류되며, dangerous 판정을 받은 스킬은
--force로도 설치가 차단된다. hermes skills check와hermes skills update로 설치된 스킬의 업스트림 변경을 감지하고 업데이트할 수 있다.
10. v0.9.0~v0.10.0 최신 업데이트 요약
- v0.10.0(2026년 4월 16일): Nous Portal 유료 구독자에게 웹 검색, 이미지 생성, TTS, 브라우저 자동화를 추가 API 키 없이 제공하는 Tool Gateway가 출시되었다.
- v0.9.0(2026년 4월 13일): 로컬 웹 대시보드, Fast Mode(/fast 토글로 OpenAI·Anthropic 우선 처리), iMessage(BlueBubbles) 통합, WeChat·WeCom 지원, Termux/Android 지원, 백그라운드 프로세스 모니터링(
watch_patterns), 플러그 가능 컨텍스트 엔진,hermes backup및hermes import기능이 추가되었다. - v0.8.0(2026년 4월 8일): 백그라운드 태스크 자동 알림, 실시간
/model전환, 자체 최적화된 GPT/Codex 도구 사용 가이던스, Google AI Studio 네이티브 지원, MCP OAuth 2.1 PKCE가 포함되었다. - v0.7.0(2026년 4월 3일): 플러그 가능 메모리 프로바이더 인터페이스, 동일 프로바이더 다중 API 키 자동 로테이션, Camofox 안티 디텍션 브라우저 백엔드, 인라인 디프 프리뷰가 도입되었다.
11. 마무리
위에서 살펴본 Hermes Agent의 핵심 내용을 정리하면 다음과 같다.
핵심 요약:
- Hermes Agent는 게이트웨이 아키텍처로 18개 메시징 플랫폼과 6종 터미널 백엔드를 지원하여, 텔레그램에서 클라우드 VM 원격 코딩이 가능하다
- 시스템 프롬프트는 SOUL.md부터 플랫폼 힌트까지 10개 레이어로 조립되며, 캐시 안정성을 위해 세션 중 변경되지 않는다
- 4계층 메모리 아키텍처(영속 메모리, 주기적 넛지, 스킬 시스템, 세션 검색)가 닫힌 학습 루프를 형성하여, 에이전트가 시간에 따라 역량을 축적한다
- 스킬은 복잡한 작업 완료 후 자동 생성되고, 사용 중에 자체 개선되며, agentskills.io 표준으로 이식이 가능하다
- 200개 이상 모델을 코드 변경 없이 전환할 수 있어 비용 최적화와 특정 작업 맞춤 모델 선택이 자유롭다
- 7계층 보안 모델과 제로 텔레메트리가 아키텍처 기본 속성으로 내장되어 있다
Hermes Agent의 강점은 LLM 자체의 지능이 아니라 에이전트 인프라 설계에 있다. 순수 코딩 성능이 최우선이라면 Claude Code가 여전히 강력한 선택이지만, 원격 접근성, 자기학습, 메모리 축적, 모델 자유도, 무인 자동화까지 종합적으로 고려한다면 Hermes Agent는 현재 오픈소스 에이전트 생태계에서 가장 야심찬 시도다. 도입을 검토한다면 먼저 사용 시나리오가 로컬 코딩 중심인지 원격 자동화 중심인지를 판단하고, 그에 맞는 터미널 백엔드와 모델 조합을 설정하는 것이 출발점이 된다.