Hermes Agent는 Nous Research의 MIT 라이선스 Agent로, 자기 개선 루프를 갖춥니다. 경험에서 Skill을 만들고, 주기적 nudge로 메모리를 유지하며, FTS5로 과거 세션을 검색하고 Honcho로 사용자 컨텍스트를 모델링합니다. macOS에서는 네이티브 CLI로 설치되며, 선택적 메시징 gateway—Telegram, Discord, Slack, WhatsApp, Signal, Email—를 단일 hermes gateway 프로세스로 연결합니다.
이 가이드는 Apple Silicon 또는 Intel에서 macOS 설정—설치, 첫 구성, gateway 연결, launchd로 gateway 상시 유지—를 단계별로 다룹니다. macOS 15+이며 본인이 제어하는 머신(MacBook, Mac mini, Mac Studio 또는 SSH 원격 Mac)을 가정합니다. 이미 클라우드에서 Agent를 운영 중이면 헤드리스 호스트 패턴은 별도 Hermes Mac mini M4 튜토리얼을 참고하세요. 아래 명령은 모든 Mac에서 동일합니다.
설치 전 준비 사항
| 요구 사항 | 메모 |
|---|---|
| macOS | 15+ 권장. 업스트림 설치 스크립트는 Apple Silicon(arm64)과 Intel 지원 |
| Shell | zsh(기본) 또는 bash. 설치기는 ~/.zshrc 또는 ~/.bashrc에 추가 |
| Network | 모델 API, 선택적 Nous Portal OAuth, 메시징 플랫폼 webhook용 아웃바운드 HTTPS |
| Disk | uv, Python 3.11, Node.js, ~/.hermes/ 상태에 2–5GB 계획. TTS 자산이나 대형 Skill 라이브러리 저장 시 더 필요 |
| RAM | 16GB면 CLI + gateway + 도구 집약 1턴에 충분. 24GB는 subagent 또는 MCP 서버 동시 실행 시 |
설치기는 누락 시 uv, Python 3.11, Node.js, ripgrep, ffmpeg를 가져옵니다. 완료 후 hermes doctor로 확인하세요.
macOS에서 Hermes 구조
설치 후 상태는 ~/.hermes/에 있습니다:
~/.hermes/
├── config.toml # 프로바이더, 도구, 터미널 백엔드, 게이트웨이 설정
├── skills/ # 사용자 및 자동 생성 Skill
│ └── openclaw-imports/ # hermes claw migrate 이후
├── memory/ # 큐레이션된 메모리 파일
└── logs/ # 게이트웨이 및 CLI 로그(경로는 업스트림 문서 참조)
hermes 바이너리는 ~/.local/bin/hermes로 심볼릭 링크됩니다. 일상 사용에 중요한 세 가지 인터페이스:
- CLI(
hermes) — 대화형 TUI. 슬래시 명령(/model,/skills,/compress,/new). - Gateway(
hermes gateway) — 메시징 플랫폼을 동일 Agent 루프에 연결. - 터미널 backend — shell/파일 도구 실행 위치: local(macOS 기본), Docker, SSH, Singularity, Modal, Daytona.
모델 라우팅은 프로바이더 무관: hermes model로 Nous Portal, OpenRouter(200+ 모델), OpenAI, Anthropic, BYO 엔드포인트를 코드 변경 없이 전환.
macOS 단계별 설정
1. Hermes 설치
셸 파이프 전 조직에서 설치 스크립트를 검토하세요. 업스트림 원라이너:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.zshrc # or: source ~/.bashrc
hermes doctor
hermes doctor는 uv, Python 3.11, Node, ripgrep, ffmpeg 검사가 통과해야 합니다. 표시된 의존성을 수정한 뒤 다시 실행하세요.
2. 첫 설정 실행
전체 마법사 또는 Portal OAuth:
hermes setup # 대화형: 프로바이더, 도구, 게이트웨이 힌트
# 또는
hermes setup --portal # Nous Portal OAuth + Tool Gateway(검색, 이미지, 브라우저, TTS)
마법사는 ~/.openclaw를 감지하고 마이그레이션을 제안합니다—새 설치면 건너뛰세요.
3. 모델과 도구 선택
hermes model # provider:model 선택(예: openrouter:anthropic/claude-sonnet-4)
hermes tools # 도구 세트 활성/비활성(업스트림 40+ 도구)
hermes config set KEY VALUE # 세밀한 재정의
짧은 CLI 세션으로 확인:
hermes
# TUI 내: 질문, /usage, Ctrl+D 또는 /quit으로 종료
4. OpenClaw에서 마이그레이션(선택)
기존 OpenClaw 워크스페이스가 있는 경우:
hermes claw migrate --dry-run
hermes claw migrate
일반적으로 SOUL.md 페르소나, MEMORY.md / USER.md 항목, 사용자 Skill, 명령 허용 목록, 메시징 설정, 허용 API 키를 ~/.hermes/로 가져옵니다. 프리셋은 hermes claw migrate --help 참고.
5. 메시징 gateway 구성
hermes gateway setup # 플랫폼 token, DM 페어링, 허용 사용자
hermes gateway start # 포그라운드 테스트
Telegram(또는 사용 플랫폼)에서 테스트: /new 전송 후 프롬프트. 봇이 온라인인데 무응답이면 메시징 쪽에서 /status—대개 페어링 또는 허용 목록 문제(업스트림 Security 문서).
6. launchd로 gateway 영구화
포그라운드 hermes gateway start는 로그아웃 시 중지됩니다. 상시 전원 Mac(데스크 Mac mini, 스튜디오 머신, 원격 호스트)에는 사용자 LaunchAgent를 만듭니다. plist 골격 예—which hermes 후 경로 조정:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>com.hermes.gateway</string>
<key>ProgramArguments</key>
<array>
<string>/Users/YOU/.local/bin/hermes</string>
<string>gateway</string>
<string>start</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key><string>/Users/YOU/.hermes/logs/gateway.stdout.log</string>
<key>StandardErrorPath</key><string>/Users/YOU/.hermes/logs/gateway.stderr.log</string>
</dict>
</plist>
로드:
mkdir -p ~/.hermes/logs
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.hermes.gateway.plist
launchctl kickstart -k gui/$(id -u)/com.hermes.gateway
Telegram/Discord 토큰은 plist EnvironmentVariables 딕셔너리 또는 부팅 시 참조 env 파일에 저장—SSH 세션 export만 두지 마세요.
7. cron 스타일 자동화 활성화(선택)
Hermes에는 메시징 플랫폼으로 전달하는 내장 cron 스케줄러가 있습니다. CLI 또는 구성으로 자연어 작업 정의(업스트림 cron 문서 참고). macOS에서 cron 작업은 gateway(또는 CLI) 프로세스가 계속 실행되어야 하므로—슬립하지 않는 Mac에서 launchd를 쓰는 또 다른 이유입니다.
8. ~/.hermes/ 백업
tar -czf hermes-backup-$(date +%Y%m%d).tar.gz -C ~ .hermes
Skill과 메모리는 채팅 로그보다 재생성이 어렵습니다. 대규모 업그레이드 전 스냅샷:
hermes update
hermes doctor
문제 해결
hermes doctor가 Python 또는 uv에서 실패
증상: Doctor가 uv 누락 또는 잘못된 Python 버전을 보고.
해결: 설치 스크립트를 다시 실행. Hermes는 uv로 Python 3.11을 기대합니다. macOS에서 Homebrew면 brew install ripgrep ffmpeg node 후 hermes doctor 재실행.
gateway는 시작되나 봇이 응답하지 않음
증상: hermes gateway start 로그는 running. DM은 응답 없고 채팅에 오류 없음.
해결: hermes gateway setup에서 DM 페어링과 허용 목록 완료. 토큰 변경 후 gateway 재시작. launchd 사용 시 env가 plist에 남았는지 확인—launchctl print gui/$(id -u)/com.hermes.gateway로 환경 확인.
CLI 도구 권한 오류
증상: 파일 또는 shell 도구가 워크스페이스 밖 macOS 경로에서 오류.
해결: 구성의 명령 승인 설정 검토(업스트림 Security). 전체 디스크 경로는 macOS TCC가 파일/폴더 접근을 요청할 수 있음—local backend가 실행되는 머신에서 허용.
상시 가동 Mac을 쓸 때
슬립하는 MacBook은 gateway 전달과 cron을 일시 중지합니다. Telegram으로 대화하며 Agent가 다른 호스트에서 돌아가는 팀은 소형 상시 가동 Mac—데스크 Mac mini 또는 호스팅 macOS—를 두고 launchd로 hermes gateway를 관리하는 경우가 많습니다. 이 가이드의 단계는 동일합니다. 슬립 정책과 네트워크 도달성만 다릅니다. SSH backend 워크플로(노트북 CLI, 원격 Mac 도구)는 업스트림 Tools 문서에 따라 config.toml에서 터미널 backend를 해당 호스트로 지정.
설치 후
Hermes 서브에이전트 위임 가이드
로 delegate_task 3 워커 파이프라인을 실행하세요.
Hermes 멀티디바이스 Gateway 가이드로 Telegram·Discord를 연결하세요.
FAQ
Hermes가 OpenClaw나 OpenHuman을 대체하나요?
아니요—설계가 다릅니다. Hermes는 Skill + 메모리 nudge + 내장 cron을 강조; OpenClaw는 gateway 우선 자동화; OpenHuman은 OAuth 자동 가져오기 데스크톱 메모리. hermes claw migrate로 OpenClaw 데이터를 Hermes로 이전할 수 있습니다. 비교 런북은 Hermes Mac mini M4 튜토리얼와 OpenClaw macOS 설치 가이드에 있습니다.
Nous Portal이 필수인가요?
아닙니다. Portal(hermes setup --portal)은 한 번의 OAuth로 모델과 Tool Gateway를 묶습니다. OpenRouter, OpenAI, Anthropic 키를 직접 넣고 도구를 개별 활성화할 수 있습니다.
macOS에서 설정은 어디에 저장되나요?
기본 트리: ~/.hermes/에 config.toml, Skill, 메모리, 로그. hermes 바이너리는 ~/.local/bin/hermes. 맹목 편집 대신 hermes config 하위 명령 사용—마법사 값은 문서화된 키에 매핑.
Apple Silicon Mac mini에서 Hermes를 실행할 수 있나요?
예—설치 스크립트는 Apple Silicon macOS를 지원합니다. gateway와 local backend는 네이티브 실행. uv가 설치하는 Python 스택에 Rosetta 불필요.
Hermes를 어떻게 업데이트하나요?
hermes update
hermes doctor
업데이트 후 launchd 관리 gateway 재시작: launchctl kickstart -k gui/$(id -u)/com.hermes.gateway.