| name | hermes-agent-ui-setup |
| title | Setup Hermes Agent with Web UI |
| description | Complete setup guide for installing Hermes Agent (AI assistant) and Hermes UI (glassmorphic web interface), including API server configuration and troubleshooting. |
| tags | ["hermes","ai-agent","web-ui","self-hosted","api-server"] |
| triggers | ["install hermes agent","setup hermes ui","hermes web interface","hermes api server"] |
Hermes Agent + UI 完整安装指南
安装 Hermes Agent(AI 助手)和 Hermes UI(玻璃拟态 Web 界面)的完整流程。
系统要求
- Python >= 3.11(Hermes Agent 要求)
- macOS / Linux / WSL2
- 网络连接(下载依赖)
安装步骤
1. 安装 Hermes Agent
方案 A:通过 pip 从 GitHub 安装(推荐)
mkdir -p ~/hermes-agent && cd ~/hermes-agent
python3.11 -m venv .venv
source .venv/bin/activate
uv pip install "git+https://github.com/NousResearch/hermes-agent.git"
hermes --version
hermes doctor
方案 B:如果 git clone 被拦截,使用 curl 下载
mkdir -p ~/hermes-ui && cd ~/hermes-ui
curl -sL -o serve.py "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/serve.py"
curl -sL -o hermes-ui.html "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/hermes-ui.html"
curl -sL -o requirements.txt "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/requirements.txt"
ls -la
方案 C:使用 GitHub API 获取文件列表
如果批量下载多个文件:
python3 -c "
import urllib.request
import json
import base64
# 获取目录内容
url = 'https://api.github.com/repos/NousResearch/hermes-agent/contents/'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(req) as r:
data = json.loads(r.read().decode())
for f in data:
print(f['name'], f['type'])
"
python3 -c "
import urllib.request
import json
import base64
url = 'https://api.github.com/repos/NousResearch/hermes-agent/contents/pyproject.toml'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(req) as r:
data = json.loads(r.read().decode())
content = base64.b64decode(data['content']).decode('utf-8')
print(content)
"
2. 安装 Hermes UI
mkdir -p ~/hermes-ui && cd ~/hermes-ui
curl -sL -o serve.py "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/serve.py"
curl -sL -o hermes-ui.html "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/hermes-ui.html"
curl -sL -o requirements.txt "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/requirements.txt"
python3 serve.py
3. 启用 Hermes API Server(关键步骤)
Hermes UI 需要连接到 Hermes Agent 的 API Server(默认端口 8642)。
编辑 ~/.hermes/config.yaml,添加以下配置:
platform_toolsets:
cli:
- browser
- terminal
telegram:
- browser
api_server:
- browser
- clarify
- code_execution
- cronjob
- delegation
- file
- image_gen
- memory
- session_search
- skills
- terminal
- todo
- tts
- vision
- web
platforms:
api_server:
enabled: true
host: 127.0.0.1
port: 8642
4. 启动服务
启动 Hermes Gateway(包含 API Server):
hermes gateway start
验证 API Server 是否运行:
lsof -i :8642
curl http://127.0.0.1:8642/health
启动 Hermes UI(另一个终端):
cd ~/hermes-ui
python3 serve.py
5. 访问界面
打开浏览器访问:
http://localhost:3333/hermes-ui.html
常见问题
Issue: "Connection refused" / 8642 端口未监听
原因: API Server 未启用或配置不正确
解决:
- 确认 config.yaml 中有
platforms.api_server.enabled: true
- 确认
platform_toolsets 中有 api_server: 配置
- 重启 gateway:
hermes gateway restart
- 检查日志:
tail -50 ~/.hermes/logs/gateway.log
Issue: Hermes UI 报错无法连接后端
原因: Hermes UI 默认连接 localhost:8642
解决:
- 确保 API Server 已启动(见上文)
- 或修改 serve.py 中的
HERMES 变量指向正确的地址
Issue: Python 版本过低
错误: "requires-python: >=3.11"
解决:
ls -la ~/.local/bin/python*
ls -la /usr/local/bin/python*
python3.11 -m venv .venv
Issue: pip 安装失败(找不到包)
原因: Hermes Agent 不在 PyPI 上
解决: 使用 git+https 方式安装:
pip install "git+https://github.com/NousResearch/hermes-agent.git"
Issue: 端口被占用(Address already in use)
原因: 之前的 Hermes UI 进程未正确终止
解决:
lsof -i :3333
kill <PID>
pkill -f "serve.py"
Issue: Feishu 显示 "FEISHU_APP_ID or FEISHU_APP_SECRET not set"
原因: 环境变量未正确设置
解决:
- 确认
.env 文件中有 FEISHU_APP_ID 和 FEISHU_APP_SECRET
- 确认 Gateway 服务已重启(launchctl restart)
- 检查日志:
tail ~/.hermes/logs/gateway.log | grep -i feishu
- 如果
.env 文件被系统保护,使用 Python 脚本写入(见上文方法 B)
开机自启配置(macOS Launchd)
Hermes Gateway(已有)
launchctl list | grep hermes
launchctl stop ai.hermes.gateway
launchctl start ai.hermes.gateway
Hermes UI 自启配置
创建 LaunchAgent 文件:
cat > ~/Library/LaunchAgents/ai.hermes.ui.plist << 'EOF'
<?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>ai.hermes.ui</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python3</string>
<string>/Users/mac/hermes-ui/serve.py</string>
<string>3333</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/mac/hermes-ui</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>StandardOutPath</key>
<string>/Users/mac/.hermes/logs/ui.log</string>
<key>StandardErrorPath</key>
<string>/Users/mac/.hermes/logs/ui.error.log</string>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/ai.hermes.ui.plist
launchctl start ai.hermes.ui
飞书机器人配置
1. 安装依赖
cd ~/.hermes/hermes-agent
source venv/bin/activate
uv pip install "lark-oapi>=1.5.3,<2" aiohttp websockets
2. 飞书开放平台配置
访问 https://open.feishu.cn/app:
- 创建「企业自建应用」
- 记录 App ID 和 App Secret
- 权限管理 → 添加权限:
im:message:send (发送消息)
im:message.group_msg (接收群消息)
im:message.p2p_msg (接收单聊)
- 事件订阅 → 获取 Encrypt Key 和 Verification Token
- 版本管理与发布 → 创建版本 → 申请发布
3. 配置 Hermes
编辑 ~/.hermes/config.yaml:
platform_toolsets:
feishu:
- browser
- clarify
- code_execution
- cronjob
- delegation
- file
- image_gen
- memory
- session_search
- skills
- terminal
- todo
- tts
- vision
- web
platforms:
feishu:
enabled: true
app_id: cli_xxxxxxxxxxxxxxxx
app_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
domain: feishu
connection_mode: websocket
4. 环境变量配置(重要)
⚠️ 注意:即使配置了 config.yaml,Feishu 插件仍需要从环境变量读取凭证。
方法 A:直接编辑 .env 文件(可能被系统保护)
echo 'FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx' >> ~/.hermes/.env
echo 'FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' >> ~/.hermes/.env
echo 'FEISHU_DOMAIN=feishu' >> ~/.hermes/.env
echo 'FEISHU_CONNECTION_MODE=websocket' >> ~/.hermes/.env
方法 B:使用 Python 写入(如果被拦截)
feishu_config = """
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
FEISHU_DOMAIN=feishu
FEISHU_CONNECTION_MODE=websocket
FEISHU_GROUP_POLICY=allowlist
"""
with open('/Users/mac/.hermes/.env', 'a') as f:
f.write(feishu_config)
方法 C:通过 export 设置(仅当前会话有效)
export FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
export FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export FEISHU_DOMAIN=feishu
export FEISHU_CONNECTION_MODE=websocket
5. 重启 Gateway 并验证
launchctl stop ai.hermes.gateway
launchctl start ai.hermes.gateway
lsof -i :8642
tail -f ~/.hermes/logs/gateway.log
6. 用户配对授权
首次使用时,用户会收到配对码:
Hi~ I don't recognize you yet!
Here's your pairing code: 3HYG46F3
Ask the bot owner to run:
hermes pairing approve feishu 3HYG46F3
Bot 管理员执行授权:
cd ~/.hermes/hermes-agent
source venv/bin/activate
hermes pairing approve feishu 3HYG46F3
授权成功后用户即可正常使用。
目录结构
~/hermes-agent/ # Hermes Agent 安装目录
├── .venv/ # 虚拟环境
└── ...
~/hermes-ui/ # Hermes UI 目录
├── serve.py # Python 代理服务器
├── hermes-ui.html # 前端单文件
└── requirements.txt # 依赖说明(零依赖)
~/.hermes/ # Hermes 配置和数据
├── config.yaml # 主配置文件
├── logs/ # 日志文件
├── sessions/ # 会话历史
└── hermes-agent/ # 源码安装位置(旧版)
更新维护
更新 Hermes Agent:
cd ~/hermes-agent
source .venv/bin/activate
uv pip install --upgrade "git+https://github.com/NousResearch/hermes-agent.git"
更新 Hermes UI:
cd ~/hermes-ui
curl -sL -o hermes-ui.html "https://raw.githubusercontent.com/pyrate-llama/hermes-ui/main/hermes-ui.html"
安全提示
- Hermes UI 的
serve.py 设计用于本地开发,不要暴露到公网
/terminal/exec 端点允许执行任意 shell 命令
- API Server 默认只监听 localhost (127.0.0.1)
参考链接