Hermes Agent 설치하기, 그리고 "스스로 진화한다"는 얘기
짧게 답하면: 물건은 진짜입니다. 한 가지 면에서 정말 다르기도 합니다. 다만 사람들이 다르다고 말하는 그 부분은 실제로 다른 부분이 아닙니다. 요즘 Hermes Agent 소개글의 절반쯤은 "DSPy와 GEPA로 스스로 진화하는 에이전트"라고 씁니다. 그 기능은 출시된 제품 안에 없습니다. 별도 저장소에 있고, 5단계 중 1단계만 구현돼 있으며, 6주 넘게 푸시가 없습니다.
실제로 하는 일은 더 수수하지만 설명할 값어치가 있습니다. 그리고 진짜 차별점은 자기진화가 아니라 노트북에 묶이지 않는다는 것입니다. 아래는 설치 조건, 실제 동작, 보안 기본값 순서입니다.
이름부터 — 도구와 모델은 다릅니다
검색하다 보면 반드시 걸리는 지점이라 먼저 털고 갑니다. Hermes Agent는 파이썬으로 된 에이전트 도구(MIT 라이선스)입니다. Hermes 3, Hermes 4는 Nous Research가 내놓은 언어 모델 패밀리입니다. 같은 랩, 같은 브랜드, 그리고 기술적 연결은 없습니다.
얼마나 없냐면, 프로바이더 문서에 Hermes 모델은 기본값으로도 선택지로도 등장하지 않습니다. 기본 프로바이더는 OpenRouter이고 기본 모델 ID는 아예 비어 있습니다. Claude를 쓰려면 provider: "anthropic"에 default: "claude-sonnet-4-6"을 적는 식이고, GPT 계열은 openai-api나 copilot을 씁니다. 그러니까 "Hermes 에이전트를 깔면 Hermes 모델이 돈다"가 아닙니다. 그냥 아무 모델이나 물리는 껍데기에 가깝고, 어떤 모델을 물릴지는 전적으로 본인 선택입니다.
정체는 이렇습니다. 태그라인은 "The agent that grows with you"이고, 형태는 넷입니다 — CLI(hermes), TUI(hermes --tui, 공식 문서가 권장), 게이트웨이 데몬(hermes gateway), 데스크톱 앱. 게이트웨이는 텔레그램·디스코드·슬랙·왓츠앱·시그널·이메일을 프로세스 하나로 받습니다.
Claude Code나 Codex 같은 터미널 에이전트와 갈리는 지점이 여기입니다. README 표현을 그대로 옮기면:
It's not tied to your laptop — talk to it from Telegram while it works on a cloud VM.
세션을 넘어 남는 메모리와 내장 cron 스케줄러도 같은 방향입니다. 터미널에 붙어 앉아 결과를 기다리는 형태가 아니라, 어딘가에서 돌고 있고 폰으로 말을 거는 형태를 노린 물건입니다. 이 설계는 오픈 클로의 게이트웨이 구조와 겹치는 부분이 많습니다.
자기진화 얘기 정리
이 글에서 제일 중요한 정정입니다.
hermes-agent 저장소의 pyproject.toml, README, 스킬 문서 어디에도 DSPy나 GEPA는 없습니다. 직접 받아서 확인했습니다. 그 기능은 별도 저장소인 NousResearch/hermes-agent-self-evolution에 있습니다. 2026년 3월 9일에 만들어졌고, 별은 4,871개, 마지막 푸시가 2026년 6월 17일입니다. 이 글을 쓰는 시점 기준 6주 넘게 조용합니다.
그리고 그건 에이전트 안에서 도는 기능이 아닙니다. 에이전트를 대상으로 바깥에서 도는 파이프라인입니다. 흐름은 이렇습니다 — 스킬이나 프롬프트를 읽고 → 평가용 데이터셋을 만들고 → GEPA가 실행 트레이스를 보면서 후보 변형을 최적화하고 → 테스트·크기 제한 같은 관문을 통과시킨 다음 → hermes-agent에 풀 리퀘스트를 엽니다. 사람이 그 PR을 봅니다. 문서 표현으로 "never direct commit"입니다.
구현 상태는 저장소가 직접 표로 적어뒀습니다. 1단계(SKILL.md)만 "✅ Implemented"이고, 2단계(도구 설명), 3단계(시스템 프롬프트), 4단계(도구 구현 코드), 5단계(연속 개선 루프)는 전부 "🔲 Planned"입니다. GPU는 필요 없고 회당 비용은 "~$2-10"이라고 적혀 있습니다.
정리하면 이렇습니다. 흥미로운 연구 프로젝트이고, 실제로 돌아가는 1단계가 있고, 설치한 Hermes Agent와는 별개입니다. "설치하면 알아서 진화한다"는 서술은 틀렸습니다. 그걸 기대하고 깔면 아무 일도 안 일어납니다.
실제로 하는 자기개선 — 파일 쓰기
그럼 "grows with you"는 뭐냐. 훨씬 수수합니다. 에이전트가 자기 스킬 파일을 직접 씁니다.
skill_manage라는 도구가 있고 create, patch, edit, delete를 합니다. 문서는 이걸 "절차적 기억"이라고 부릅니다. 발동 조건도 명시돼 있습니다 — 도구 호출 5회 이상인 복잡한 작업을 끝냈을 때, 막다른 길에 부딪혔다가 되는 길을 찾았을 때, 사용자가 접근법을 정정했을 때, 사소하지 않은 워크플로를 발견했을 때.
산출물은 마법이 아니라 파일입니다. ~/.hermes/skills/ 아래에 폴더가 생기고 그 안에 SKILL.md가 들어갑니다. YAML 프론트매터(name, description, version, metadata.hermes)에 본문은 ## When to Use / ## Procedure / ## Pitfalls / ## Verification 순서입니다. 열어서 읽을 수 있고, 손으로 고칠 수 있고, 마음에 안 들면 지우면 됩니다. 이게 실제 제품의 자기개선이고, 저는 이쪽이 GEPA 얘기보다 쓸모 있다고 봅니다.
다만 기본값을 알고 시작해야 합니다. 문서 원문입니다.
By default the agent writes skills freely — including from the background self-improvement review that runs after a turn.
즉 기본이 켜짐이고, 대화 한 턴이 끝난 뒤 백그라운드로 도는 검토에서도 씁니다. 내가 보고 있지 않을 때 홈 디렉토리에 파일이 생긴다는 뜻입니다. 대개는 무해하지만 취향에 안 맞을 수 있습니다.
게이트를 걸려면 설정 하나면 됩니다.
skills:
write_approval: true # false = write freely (default)
켜두면 skill_manage의 모든 쓰기가 커밋되지 않고 스테이징됩니다. 검토는 슬래시 명령으로 합니다.
/skills pending # 대기 중인 쓰기 목록 + 한 줄 요약
/skills diff <id> # 전체 unified diff
/skills approve <id> # 적용 ('all' 가능)
/skills reject <id> # 폐기 ('all' 가능)
/skills approval on # 설정 자체를 켜고 저장
스테이징된 쓰기는 ~/.hermes/pending/skills/에 남고 재시작해도 살아남습니다.
skills.guard_agent_created라는 설정이 따로 있는데, 이름 때문에 "에이전트가 만든 스킬에 승인을 요구하는 옵션"으로 읽힙니다. 아닙니다. 문서가 못을 박아뒀습니다 — 그건 위험 패턴을 찾는 내용 스캐너이지 승인 게이트가 아니고, write_approval과는 서로 독립입니다. 검토를 원하면 켜야 하는 건 write_approval 쪽입니다.설치
공식 문서의 명령어를 그대로 옮깁니다. 리눅스·맥·WSL2·안드로이드(Termux):
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc # 또는 source ~/.zshrc
윈도우는 파워셸에서:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
맥과 윈도우는 데스크톱 설치 프로그램이 따로 있고 문서가 그쪽을 먼저 권합니다.
설치기가 알아서 챙기는 것들: uv, 파이썬 3.11, Node.js, ripgrep, ffmpeg, 저장소 클론, 가상환경, 전역 hermes 명령, 그리고 --skip-browser를 주지 않으면 Playwright용 크로미움까지. 비윈도우에서 미리 있어야 하는 건 Git뿐이고, 리눅스는 curl과 xz-utils가 추가로 필요합니다.
파이썬 버전. pyproject.toml에 requires-python = ">=3.11,<3.14"로 박혀 있습니다. 3.11, 3.12, 3.13이 되고 3.14는 안 됩니다. 설치기가 3.11을 따로 깔아주므로 시스템 파이썬을 건드릴 일은 없습니다.
설치가 끝나면 모델을 고르고 띄웁니다.
hermes model # 프로바이더 선택
hermes --tui # 문서 권장
hermes -c # 최근 세션 이어가기
--ctx-size 65536, Ollama는 -c 65536으로 올리라고 문서가 직접 안내합니다. 설정을 안 만지고 기본값으로 띄운 로컬 모델은 대체로 여기서 걸립니다.돈 안 들이고 시작하기
이 부분은 문서 페이지마다 뉘앙스가 갈려서 정확히 적겠습니다.
hermes setup --portal이 가장 짧은 경로입니다. 브라우저로 Nous Portal OAuth를 하고, Nous를 프로바이더로 잡고, Tool Gateway(웹 검색·이미지 생성·TTS·브라우저)까지 한 번에 켭니다. 빠른 시작 문서는 이걸 "free OAuth login, no API keys"라고 적습니다. API 키를 만들 필요가 없다는 건 사실입니다. 자격증명은 ~/.hermes/auth.json의 리프레시 토큰 하나로 끝납니다.
정말 추가 지출 없이 굴리고 싶다면 선택지는 둘입니다.
- 이미 있는 계정의 OAuth를 재활용하기. Qwen, MiniMax, xAI Grok이 전부 브라우저 OAuth로 붙고 API 키가 필요 없습니다(Grok은 SuperGrok 또는 Premium+ 구독 기준). Anthropic OAuth도 되지만 문서가 Max 플랜에 추가 크레딧이 필요하다고 적어뒀습니다.
- 로컬 모델. Ollama, vLLM, SGLang, llama.cpp, LM Studio를 지원합니다. 전기값 말고는 안 듭니다. 대신 위의 64,000 토큰 조건을 반드시 넘겨야 합니다.
유료 경로는 Portal 구독, OpenCode Go(월 $10, 오픈 모델), 그리고 각 프로바이더 종량제 키입니다. 1급 지원 프로바이더는 30곳이 넘습니다 — Anthropic, OpenAI, Copilot, Gemini, Vertex, Bedrock, Azure, OpenRouter, DeepSeek, xAI, Fireworks, Hugging Face, MiniMax 등. Portal 쪽에 붙는 "300개 이상 모델"이라는 숫자는 벤더 자기 신고이고 공개 카탈로그가 없어서 여기서는 사실로 쓰지 않겠습니다.
설정 파일
전부 ~/.hermes/ 아래입니다.
~/.hermes/config.yaml | 비밀값이 아닌 모든 설정. YAML이고 ${VAR} 치환이 됩니다 |
~/.hermes/.env | API 키·봇 토큰·비밀번호 |
~/.hermes/auth.json | OAuth 리프레시 토큰 |
~/.hermes/SOUL.md | 성격 |
~/.hermes/skills/ | 스킬 — 위에서 본 그 폴더 |
~/.hermes/memories/, cron/, sessions/, logs/ | 기억, 스케줄, 세션, 로그 |
우선순위는 CLI 인자 > config.yaml > .env > 내장 기본값입니다. 문서 표현으로 비밀값이 아닌 설정은 "config.yaml wins". 굳이 손으로 안 열어도 hermes config set이 값 성격에 따라 알아서 나눠 넣습니다.
처음에 볼 만한 키는 이 정도입니다.
terminal:
backend: local # local | docker | ssh | modal | daytona | vercel_sandbox | singularity
agent:
max_turns: 500 # 한 턴당 최대 반복 (기본 500)
skills:
write_approval: false # true = 모든 쓰기를 검토 대기로
memory:
write_approval: false # true = 기억 쓰기 전 승인
approvals:
mode: smart # smart | manual | off
timeout: 300 # 초 (기본 300)
compression:
enabled: true
threshold: 0.50 # 컨텍스트 한도의 이 비율에서 압축
protect_last_n: 20 # 최근 메시지 최소 보존 수
보안 기본값
여기가 설치 전에 제일 알아야 할 부분입니다. 기본 백엔드는 격리를 하지 않습니다. 문서의 백엔드 비교표는 local의 격리 수준을 이렇게 적습니다 — "None — runs on host". 컨테이너도 VM도 아니고, 로그인한 사용자 권한으로 그냥 내 컴퓨터에서 돕니다.
그래서 방어선이 샌드박스가 아니라 승인입니다. 터미널 백엔드는 일곱입니다. README 원문:
Seven terminal backends — local, Docker, SSH, Singularity, Modal, Daytona, and Vercel Sandbox.
| 백엔드 | 격리 | 위험 명령 승인 |
|---|---|---|
local (기본) | 없음 — 호스트에서 실행 | 수행 |
ssh | 원격 호스트 | 수행 |
| Docker · Singularity · Modal · Daytona · Vercel Sandbox | 컨테이너 / 원격 샌드박스 | 건너뜀 |
마지막 줄이 의외로 헷갈립니다. 컨테이너 계열에서 승인 절차가 사라지는 건 보안이 약해서가 아니라 컨테이너 자체를 경계로 보기 때문입니다. 문서가 그렇게 설명합니다. 반대로 기본 local에서는 승인이 유일한 방어선이므로 끄면 남는 게 없습니다.
승인 모드 기본값은 smart입니다. 보조 LLM이 명령의 위험도를 판정해서, 낮으면 그 명령에 한해 자동 승인하고, 확실히 위험하면 자동 거부하고, 애매하면 사람에게 묻습니다. 300초 안에 답이 없으면 거부로 닫힙니다(fail-closed). 기본값이 안전한 방향으로 잡혀 있다는 뜻입니다.
안심되는 쪽도 있습니다. 되돌릴 수 없는 몇 가지는 우회 플래그가 아예 없습니다. rm -rf /와 그 변형, --no-preserve-root, bash 포크 폭탄, 마운트된 루트에 대한 mkfs.*, dd if=/dev/zero of=/dev/sd*, 그리고 신뢰할 수 없는 URL을 셸로 파이프하는 패턴. 문서 표현으로 이 목록은 "the floor below --yolo"이고 승인 계층이 명령을 보기도 전에 걸립니다. approvals.mode: off든 cron 자동 승인이든 마찬가지고, 걸리면 아무것도 실행되지 않은 채 에이전트에게 에러가 돌아갑니다.
그 아래는 --yolo(또는 /yolo, HERMES_YOLO_MODE=1)가 전부 무력화합니다. 세션 단위로 위험 명령 승인이 전부 꺼집니다. 위의 하드 차단 목록만 남습니다.
문서가 자기 한계를 이례적으로 솔직하게 적어둔 점은 인용할 값어치가 있습니다. 쓰기 가드에 대해서는 "it does not sandbox a hostile or compromised agent"라고 적고, 그나마도 write_file과 patch에만 적용됩니다(터미널 도구는 같은 OS 사용자 권한으로 돕니다). 사용자 거부 규칙에 대해서도 "They are not a sandbox against a deliberately adversarial process"라고 못을 박고, 진짜 필요하면 격리된 백엔드나 이그레스 제한을 쓰라고 권합니다. 남의 코드를 읽히거나 웹을 훑게 할 계획이라면, 기본값으로 두지 말고 Docker 백엔드부터 켜는 게 맞습니다.
이걸 지금 써도 되나
기능 얘기보다 이게 더 실용적인 정보인데 아무도 안 씁니다. 변화 속도를 보세요.
첫 태그가 2026년 3월 12일이고, 현재는 v0.19.1(태그 v2026.7.30)입니다. 넉 달 반 동안 스무 개가 넘는 릴리스가 나왔습니다. 그 자체는 건강한 신호일 수 있는데, 문제는 규모입니다. v0.19.1 릴리스 노트가 직전 릴리스 이후 열흘간의 변경을 이렇게 적어뒀습니다.
~2,789 commits · ~4,748 files changed · ~442,000 insertions · ~392,300 deletions
그리고 그 기간을 "dominated by bug-fix and salvage waves"라고 표현합니다. 게이트웨이, 음성, 데스크톱 앱, 설치기 전반이라고요.
열흘에 44만 줄이 들어오고 39만 줄이 나갔습니다. 삭제가 삽입의 89%라는 건 새 기능을 쌓는 게 아니라 많은 부분을 갈아엎고 있다는 뜻입니다. 저자 본인이 "salvage"라고 쓴 것도 같은 얘기입니다. 실무자 입장에서 결론은 단순합니다 — 재미있는 물건이지만 지금은 고정된 표적이 아닙니다. 이번 주에 쓴 설정과 스크립트가 다음 주에도 그대로 통할 거라고 가정하지 마세요. 버전을 고정하고, 업데이트는 릴리스 노트를 읽고 하고, 중요한 파이프라인에 물릴 거라면 몇 달 더 지켜보는 쪽을 권합니다.
덧붙여, 저장소 규모를 감안해서 신호를 읽어야 합니다. 별 222,997개에 포크 42,864개, 그리고 열린 이슈가 26,036개입니다(2026년 7월 31일 API 조회). 이 정도 규모에서는 이슈의 반응 수를 심각도 신호로 쓸 수 없습니다. 반응 많은 이슈가 대체로 기능 요청이고, 심각한 버그가 반응 0으로 묻혀 있기도 합니다. 특정 이슈 하나를 근거로 "이 제품은 X가 문제다"라고 쓴 글은 걸러 읽으세요.
우리 위치, 짧게
저희는 UFO를 만듭니다. 그 점 감안해서 읽어주세요. 그리고 이 페이지의 질문에 대한 답은 저희가 아닙니다. 폰에서 말을 거는 개인용 에이전트를 원한다면 답은 위에 있고, 그건 Hermes Agent입니다.
UFO는 그다음 층입니다. 에이전트가 여럿이고, 모델이 여럿이고, 그 결과를 봐야 하는 사람이 여럿일 때 필요해지는 것 — AI 에이전트가 봇이 아니라 채널 멤버로 사람들과 같이 있는 팀 채팅이고, 각 에이전트는 연결해둔 내 컴퓨터에서 돕니다.
Hermes Agent는 그 컴퓨터 위에서 돌릴 수 있는 것 중 하나입니다. 대체하려는 게 아닙니다.
출처
이 글의 사실은 전부 공식 문서와 깃허브 저장소에서 2026년 7월 31일에 직접 확인했고, 기준 버전은 v0.19.1입니다. 문서 페이지끼리 어긋나는 부분(Nous Portal이 무료인지 구독제인지)은 한쪽을 고르지 않고 양쪽을 그대로 적었습니다. 확인하지 못한 것 — 2026년 2월 공개설, "300개 이상 모델"이라는 숫자, 투자 라운드 규모 — 은 넣지 않았습니다.
- 빠른 시작 · 설치
- 설정 · 보안 · 스킬 시스템
- Nous Portal 연동
- github.com/NousResearch/hermes-agent · v0.19.1 릴리스 노트
- hermes-agent-self-evolution (별도 저장소)
Nous Research와는 아무 관계가 없습니다. 틀린 내용이나 오래된 부분이 있으면 알려주세요. 고치겠습니다.