环境变量
所有变量都放在 ~/.hermes/.env 中。你也可以使用 hermes config set VAR value 来设置。
LLM Providers
| Variable | Description |
|---|---|
OPENROUTER_API_KEY | OpenRouter API key(推荐,灵活性最高) |
OPENROUTER_BASE_URL | 覆盖 OpenRouter 兼容 base URL |
NOUS_BASE_URL | 覆盖 Nous Portal base URL(很少需要,主要用于开发/测试) |
NOUS_INFERENCE_BASE_URL | 直接覆盖 Nous 推理端点 |
AI_GATEWAY_API_KEY | Vercel AI Gateway API key |
AI_GATEWAY_BASE_URL | 覆盖 AI Gateway base URL(默认 https://ai-gateway.vercel.sh/v1) |
OPENAI_API_KEY | 自定义 OpenAI 兼容端点的 API key(配合 OPENAI_BASE_URL 使用) |
OPENAI_BASE_URL | 自定义端点 base URL(VLLM、SGLang 等) |
COPILOT_GITHUB_TOKEN | Copilot API 用 GitHub token,优先级最高(支持 gho_* 或 fine-grained PAT github_pat_*,不支持经典 ghp_*) |
GH_TOKEN | GitHub token,Copilot 的第二优先级(同时也供 gh CLI 使用) |
GITHUB_TOKEN | GitHub token,Copilot 的第三优先级 |
HERMES_COPILOT_ACP_COMMAND | 覆盖 Copilot ACP CLI 二进制路径(默认 copilot) |
COPILOT_CLI_PATH | HERMES_COPILOT_ACP_COMMAND 的别名 |
HERMES_COPILOT_ACP_ARGS | 覆盖 Copilot ACP 参数(默认 --acp --stdio) |
COPILOT_ACP_BASE_URL | 覆盖 Copilot ACP base URL |
GLM_API_KEY | z.ai / ZhipuAI 的 GLM API key |
ZAI_API_KEY | GLM_API_KEY 的别名 |
Z_AI_API_KEY | GLM_API_KEY 的别名 |
GLM_BASE_URL | 覆盖 z.ai base URL(默认 https://api.z.ai/api/paas/v4) |
KIMI_API_KEY | Kimi / Moonshot AI API key |
KIMI_BASE_URL | 覆盖 Kimi base URL(默认 https://api.moonshot.ai/v1) |
KIMI_CN_API_KEY | Kimi / Moonshot 中国站 API key |
ARCEEAI_API_KEY | Arcee AI API key |
ARCEE_BASE_URL | 覆盖 Arcee base URL(默认 https://api.arcee.ai/api/v1) |
MINIMAX_API_KEY | MiniMax 全球站 API key |
MINIMAX_BASE_URL | 覆盖 MiniMax base URL(默认 https://api.minimax.io/anthropic) |
MINIMAX_CN_API_KEY | MiniMax 中国站 API key |
MINIMAX_CN_BASE_URL | 覆盖 MiniMax 中国站 base URL(默认 https://api.minimaxi.com/anthropic) |
KILOCODE_API_KEY | Kilo Code API key |
KILOCODE_BASE_URL | 覆盖 Kilo Code base URL(默认 https://api.kilo.ai/api/gateway) |
XIAOMI_API_KEY | Xiaomi MiMo API key |
XIAOMI_BASE_URL | 覆盖 Xiaomi MiMo base URL(默认 https://api.xiaomimimo.com/v1) |
HF_TOKEN | Hugging Face Inference Providers token |
HF_BASE_URL | 覆盖 Hugging Face base URL(默认 https://router.huggingface.co/v1) |
GOOGLE_API_KEY | Google AI Studio API key |
GEMINI_API_KEY | GOOGLE_API_KEY 的别名 |
GEMINI_BASE_URL | 覆盖 Google AI Studio base URL |
HERMES_GEMINI_CLIENT_ID | google-gemini-cli PKCE 登录用 OAuth client ID |
HERMES_GEMINI_CLIENT_SECRET | google-gemini-cli 用 OAuth client secret |
HERMES_GEMINI_PROJECT_ID | 付费 Gemini 层使用的 GCP project ID |
ANTHROPIC_API_KEY | Anthropic Console API key |
ANTHROPIC_TOKEN | 手动或旧版 Anthropic OAuth/setup-token 覆盖值 |
DASHSCOPE_API_KEY | 阿里云 DashScope(Qwen)API key |
DASHSCOPE_BASE_URL | 自定义 DashScope base URL |
DEEPSEEK_API_KEY | DeepSeek API key |
DEEPSEEK_BASE_URL | 自定义 DeepSeek API base URL |
NVIDIA_API_KEY | NVIDIA NIM API key |
NVIDIA_BASE_URL | 覆盖 NVIDIA base URL(本地 NIM 也可用) |
OLLAMA_API_KEY | Ollama Cloud API key |
OLLAMA_BASE_URL | 覆盖 Ollama Cloud base URL(默认 https://ollama.com/v1) |
XAI_API_KEY | xAI(Grok)API key,用于聊天和 TTS |
XAI_BASE_URL | 覆盖 xAI base URL |
MISTRAL_API_KEY | Mistral API key,用于 Voxtral TTS/STT |
AWS_REGION | Bedrock 推理所在 AWS 区域 |
AWS_PROFILE | Bedrock 认证所用 AWS named profile |
BEDROCK_BASE_URL | 覆盖 Bedrock runtime base URL,通常建议直接用 AWS_REGION |
HERMES_QWEN_BASE_URL | Qwen Portal base URL 覆盖值 |
OPENCODE_ZEN_API_KEY | OpenCode Zen API key |
OPENCODE_ZEN_BASE_URL | 覆盖 OpenCode Zen base URL |
OPENCODE_GO_API_KEY | OpenCode Go API key |
OPENCODE_GO_BASE_URL | 覆盖 OpenCode Go base URL |
CLAUDE_CODE_OAUTH_TOKEN | 手动导出的 Claude Code token 显式覆盖值 |
HERMES_MODEL | 在进程级覆盖模型名(cron 会用到;日常更推荐 config.yaml) |
VOICE_TOOLS_OPENAI_KEY | OpenAI 语音转写与 TTS 的首选 OpenAI key |
HERMES_LOCAL_STT_COMMAND | 可选的本地 STT 命令模板,支持 {input_path} 等占位符 |
HERMES_LOCAL_STT_LANGUAGE | 传给本地 STT 命令或本地 whisper CLI 回退的默认语言(默认 en) |
HERMES_HOME | 覆盖 Hermes 配置目录(默认 ~/.hermes),也会影响 gateway PID 文件和 systemd 服务名 |
Provider Auth(OAuth)
对于原生 Anthropic 认证,Hermes 会优先使用 Claude Code 自带的凭证文件,因为它们可以自动刷新。像 ANTHROPIC_TOKEN 这样的环境变量仍然可以作为手动覆盖,但已不再是 Claude Pro/Max 登录的首选方案。
| Variable | Description |
|---|---|
HERMES_INFERENCE_PROVIDER | 覆盖大模型提供商(provider)选择,默认 auto |
HERMES_PORTAL_BASE_URL | 覆盖 Nous Portal URL |
NOUS_INFERENCE_BASE_URL | 覆盖 Nous inference API URL |
HERMES_NOUS_MIN_KEY_TTL_SECONDS | Nous agent key 重新签发前的最小 TTL |
HERMES_NOUS_TIMEOUT_SECONDS | Nous 凭证/令牌流程的 HTTP 超时 |
HERMES_DUMP_REQUESTS | 是否把 API 请求 payload 写入日志 |
HERMES_PREFILL_MESSAGES_FILE | 指向一个 JSON 文件,在 API 调用时临时注入 prefill messages |
HERMES_TIMEZONE | IANA 时区覆盖值,例如 America/New_York |
Tool APIs
| Variable | Description |
|---|---|
PARALLEL_API_KEY | AI-native Web 搜索(parallel.ai) |
FIRECRAWL_API_KEY | Web 抓取与云浏览器(Firecrawl) |
FIRECRAWL_API_URL | 自托管 Firecrawl 的自定义 API 端点 |
TAVILY_API_KEY | Tavily 的 Web 搜索/提取/抓取 API key |
EXA_API_KEY | Exa 的 Web 搜索与内容 API key |
BROWSERBASE_API_KEY | Browserbase 浏览器自动化 API key |
BROWSERBASE_PROJECT_ID | Browserbase project ID |
BROWSER_USE_API_KEY | Browser Use 云浏览器 API key |
FIRECRAWL_BROWSER_TTL | Firecrawl 浏览器会话 TTL(秒) |
BROWSER_CDP_URL | 本地浏览器的 Chrome DevTools Protocol URL |
CAMOFOX_URL | Camofox 本地反检测浏览器 URL |
BROWSER_INACTIVITY_TIMEOUT | 浏览器会话空闲超时(秒) |
FAL_KEY | 图像生成(fal.ai) |
GROQ_API_KEY | Groq Whisper STT API key |
ELEVENLABS_API_KEY | ElevenLabs 高级 TTS voice API key |
STT_GROQ_MODEL | 覆盖 Groq STT 模型 |
GROQ_BASE_URL | 覆盖 Groq OpenAI 兼容 STT 端点 |
STT_OPENAI_MODEL | 覆盖 OpenAI STT 模型 |
STT_OPENAI_BASE_URL | 覆盖 OpenAI 兼容 STT 端点 |
GITHUB_TOKEN | Skills Hub 使用的 GitHub token |
HONCHO_API_KEY | 跨会话用户建模(Honcho) |
HONCHO_BASE_URL | 自托管 Honcho 的 base URL |
SUPERMEMORY_API_KEY | Supermemory 长期语义记忆 API key |
TINKER_API_KEY | RL 训练 API key |
WANDB_API_KEY | RL 训练指标(W&B) |
DAYTONA_API_KEY | Daytona 云沙箱 API key |
Nous Tool Gateway
这些变量用于配置 Tool Gateway,面向付费 Nous 订阅用户或自托管 gateway 部署。大多数用户不需要手动设置。
| Variable | Description |
|---|---|
TOOL_GATEWAY_DOMAIN | Tool Gateway 路由所用基础域名 |
TOOL_GATEWAY_SCHEME | gateway URL 的协议,http 或 https |
TOOL_GATEWAY_USER_TOKEN | Tool Gateway 认证 token,通常会由 Nous 认证自动填充 |
FIRECRAWL_GATEWAY_URL | 专门覆盖 Firecrawl gateway 端点 URL |
Terminal Backend
| Variable | Description |
|---|---|
TERMINAL_ENV | 后端类型:local、docker、ssh、singularity、modal、daytona |
TERMINAL_DOCKER_IMAGE | Docker 镜像 |
TERMINAL_DOCKER_FORWARD_ENV | 显式转发到 Docker 终端会话的环境变量名 JSON 数组 |
TERMINAL_DOCKER_VOLUMES | 额外挂载卷,格式为逗号分隔的 host:container |
TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE | 是否把启动时 cwd 挂到 Docker 的 /workspace |
TERMINAL_SINGULARITY_IMAGE | Singularity 镜像或 .sif 路径 |
TERMINAL_MODAL_IMAGE | Modal 容器镜像 |
TERMINAL_DAYTONA_IMAGE | Daytona 沙箱镜像 |
TERMINAL_TIMEOUT | 命令超时时间(秒) |
TERMINAL_LIFETIME_SECONDS | 终端会话最大生命周期(秒) |
TERMINAL_CWD | 所有终端会话的工作目录 |
SUDO_PASSWORD | 允许免交互 sudo 的密码 |
对于云沙箱后端,持久化主要是文件系统层面的。TERMINAL_LIFETIME_SECONDS 控制 Hermes 何时清理空闲终端会话,后续恢复时可能会重新创建沙箱,而不是保留原来的活进程。
SSH Backend
| Variable | Description |
|---|---|
TERMINAL_SSH_HOST | 远程主机名 |
TERMINAL_SSH_USER | SSH 用户名 |
TERMINAL_SSH_PORT | SSH 端口(默认 22) |
TERMINAL_SSH_KEY | 私钥路径 |
TERMINAL_SSH_PERSISTENT | 覆盖 SSH 的 persistent shell 配置 |
Container Resources(Docker、Singularity、Modal、Daytona)
| Variable | Description |
|---|---|
TERMINAL_CONTAINER_CPU | CPU 核数 |
TERMINAL_CONTAINER_MEMORY | 内存大小(MB) |
TERMINAL_CONTAINER_DISK | 磁盘大小(MB) |
TERMINAL_CONTAINER_PERSISTENT | 是否在会话间持久化容器文件系统 |
TERMINAL_SANDBOX_DIR | workspaces 与 overlays 的宿主目录 |
Persistent Shell
| Variable | Description |
|---|---|
TERMINAL_PERSISTENT_SHELL | 是否为非本地后端启用 persistent shell |
TERMINAL_LOCAL_PERSISTENT | 是否为本地后端启用 persistent shell |
TERMINAL_SSH_PERSISTENT | SSH 后端的 persistent shell 覆盖值 |
Messaging
| Variable | Description |
|---|---|
TELEGRAM_BOT_TOKEN | Telegram bot token |
TELEGRAM_ALLOWED_USERS | 允许使用 bot 的 Telegram 用户 ID,逗号分隔 |
TELEGRAM_HOME_CHANNEL | Telegram 默认 cron 投递目标 |
TELEGRAM_HOME_CHANNEL_NAME | Telegram home channel 显示名 |
TELEGRAM_WEBHOOK_URL | webhook 模式的公网 HTTPS URL |
TELEGRAM_WEBHOOK_PORT | webhook 本地监听端口 |
TELEGRAM_WEBHOOK_SECRET | 用于验证 Telegram 更新的 secret token |
TELEGRAM_REACTIONS | 处理期间是否用 emoji reaction 标记消息 |
TELEGRAM_REPLY_TO_MODE | 回复引用策略:off、first、all |
TELEGRAM_IGNORED_THREADS | 机器人永不响应的 Telegram 论坛 topic/thread ID |
TELEGRAM_PROXY | Telegram 连接代理 URL |
DISCORD_BOT_TOKEN | Discord bot token |
DISCORD_ALLOWED_USERS | 允许使用 bot 的 Discord 用户 ID |
DISCORD_ALLOWED_ROLES | 允许使用 bot 的 Discord 角色 ID |
DISCORD_ALLOWED_CHANNELS | 机器人只会响应的 Discord 频道 ID |
DISCORD_PROXY | Discord 连接代理 URL |
DISCORD_HOME_CHANNEL | Discord 默认 cron 投递频道 |
DISCORD_HOME_CHANNEL_NAME | Discord home channel 显示名 |
DISCORD_COMMAND_SYNC_POLICY | Discord slash command 启动同步策略:safe、bulk、off |
DISCORD_REQUIRE_MENTION | 在服务器频道中是否必须 @mention 才响应 |
DISCORD_FREE_RESPONSE_CHANNELS | 无需 @mention 也会响应的频道 ID |
DISCORD_AUTO_THREAD | 是否自动把长回复发到 thread |
DISCORD_REACTIONS | 处理期间是否使用 emoji reaction |
DISCORD_IGNORED_CHANNELS | 机器人永不响应的 Discord 频道 ID |
DISCORD_NO_THREAD_CHANNELS | 禁止自动 thread 的频道 ID |
DISCORD_REPLY_TO_MODE | 回复引用策略:off、first、all |
DISCORD_ALLOW_MENTION_EVERYONE | 是否允许机器人提及 @everyone / @here |
DISCORD_ALLOW_MENTION_ROLES | 是否允许机器人提及 @role |
DISCORD_ALLOW_MENTION_USERS | 是否允许机器人提及单个 @user |
DISCORD_ALLOW_MENTION_REPLIED_USER | 回复时是否 ping 原作者 |
SLACK_BOT_TOKEN | Slack bot token |
SLACK_APP_TOKEN | Slack app 级 token(Socket Mode 必需) |
SLACK_ALLOWED_USERS | 允许使用 bot 的 Slack 用户 ID |
SLACK_HOME_CHANNEL | Slack 默认 cron 投递频道 |
SLACK_HOME_CHANNEL_NAME | Slack home channel 显示名 |
WHATSAPP_ENABLED | 是否启用 WhatsApp bridge |
WHATSAPP_MODE | bot 或 self-chat |
WHATSAPP_ALLOWED_USERS | 允许使用的电话号码列表,或 * 表示全部 |
WHATSAPP_ALLOW_ALL_USERS | 是否允许所有 WhatsApp 发送者 |
WHATSAPP_DEBUG | 是否记录 bridge 的原始消息事件 |
SIGNAL_HTTP_URL | signal-cli daemon HTTP 端点 |
SIGNAL_ACCOUNT | bot 电话号码(E.164) |
SIGNAL_ALLOWED_USERS | 允许的 E.164 电话号码或 UUID |
SIGNAL_GROUP_ALLOWED_USERS | 允许的群组 ID,或 * 表示全部 |
SIGNAL_HOME_CHANNEL_NAME | Signal home channel 显示名 |
SIGNAL_IGNORE_STORIES | 是否忽略 Signal stories/status |
SIGNAL_ALLOW_ALL_USERS | 是否允许所有 Signal 用户 |
TWILIO_ACCOUNT_SID | Twilio Account SID |
TWILIO_AUTH_TOKEN | Twilio Auth Token |
TWILIO_PHONE_NUMBER | Twilio 电话号码(E.164) |
SMS_WEBHOOK_URL | Twilio 签名校验使用的公网 URL |
SMS_WEBHOOK_PORT | 入站 SMS webhook 监听端口 |
SMS_WEBHOOK_HOST | webhook 绑定地址 |
SMS_INSECURE_NO_SIGNATURE | 是否关闭 Twilio 签名校验(仅限本地开发) |
SMS_ALLOWED_USERS | 允许聊天的 E.164 电话号码 |
SMS_ALLOW_ALL_USERS | 是否允许所有 SMS 发送者 |
SMS_HOME_CHANNEL | cron/通知默认投递手机号 |
SMS_HOME_CHANNEL_NAME | SMS home channel 显示名 |
EMAIL_ADDRESS | Email 网关适配器使用的邮箱地址 |
EMAIL_PASSWORD | 邮箱密码或 app password |
EMAIL_IMAP_HOST | IMAP 主机名 |
EMAIL_IMAP_PORT | IMAP 端口 |
EMAIL_SMTP_HOST | SMTP 主机名 |
EMAIL_SMTP_PORT | SMTP 端口 |
EMAIL_ALLOWED_USERS | 允许给 bot 发信的邮箱地址 |
EMAIL_HOME_ADDRESS | 主动邮件投递默认收件人 |
EMAIL_HOME_ADDRESS_NAME | Email home target 显示名 |
EMAIL_POLL_INTERVAL | 邮件轮询间隔(秒) |
EMAIL_ALLOW_ALL_USERS | 是否允许所有发件人 |
DINGTALK_CLIENT_ID | DingTalk bot AppKey |
DINGTALK_CLIENT_SECRET | DingTalk bot AppSecret |
DINGTALK_ALLOWED_USERS | 允许使用 bot 的 DingTalk 用户 ID |
FEISHU_APP_ID | Feishu/Lark bot App ID |
FEISHU_APP_SECRET | Feishu/Lark bot App Secret |
FEISHU_DOMAIN | feishu(中国区)或 lark(国际区) |
FEISHU_CONNECTION_MODE | websocket 或 webhook |
FEISHU_ENCRYPT_KEY | webhook 模式可选加密 key |
FEISHU_VERIFICATION_TOKEN | webhook 模式可选验证 token |
FEISHU_ALLOWED_USERS | 允许使用 bot 的 Feishu 用户 ID |
FEISHU_HOME_CHANNEL | Feishu 默认 cron/通知投递 chat ID |
WECOM_BOT_ID | WeCom AI Bot ID |
WECOM_SECRET | WeCom AI Bot secret |
WECOM_WEBSOCKET_URL | 自定义 WeCom WebSocket URL |
WECOM_ALLOWED_USERS | 允许使用 bot 的 WeCom 用户 ID |
WECOM_HOME_CHANNEL | WeCom 默认 cron/通知投递 chat ID |
WECOM_CALLBACK_CORP_ID | callback 自建应用的 Corp ID |
WECOM_CALLBACK_CORP_SECRET | callback 自建应用的 Corp secret |
WECOM_CALLBACK_AGENT_ID | callback 自建应用的 Agent ID |
WECOM_CALLBACK_TOKEN | callback 验证 token |
WECOM_CALLBACK_ENCODING_AES_KEY | callback 加密用 AES key |
WECOM_CALLBACK_HOST | callback 服务绑定地址 |
WECOM_CALLBACK_PORT | callback 服务端口 |
WECOM_CALLBACK_ALLOWED_USERS | callback allowlist 用户 ID |
WECOM_CALLBACK_ALLOW_ALL_USERS | callback 是否允许所有用户 |
WEIXIN_ACCOUNT_ID | 通过 iLink Bot API 二维码登录获得的 Weixin account ID |
WEIXIN_TOKEN | 通过 iLink Bot API 获得的 Weixin token |
WEIXIN_BASE_URL | 覆盖 Weixin iLink Bot API base URL |
WEIXIN_CDN_BASE_URL | 覆盖 Weixin 媒体 CDN base URL |
WEIXIN_DM_POLICY | 私聊策略:open、allowlist、pairing、disabled |
WEIXIN_GROUP_POLICY | 群聊策略:open、allowlist、disabled |
WEIXIN_ALLOWED_USERS | 允许私聊 bot 的 Weixin 用户 ID |
WEIXIN_GROUP_ALLOWED_USERS | 允许群组交互的 Weixin 群 ID |
WEIXIN_HOME_CHANNEL | Weixin 默认 cron/通知投递 chat ID |
WEIXIN_HOME_CHANNEL_NAME | Weixin home channel 显示名 |
WEIXIN_ALLOW_ALL_USERS | 是否允许所有 Weixin 用户 |
BLUEBUBBLES_SERVER_URL | BlueBubbles server URL |
BLUEBUBBLES_PASSWORD | BlueBubbles server password |
BLUEBUBBLES_WEBHOOK_HOST | BlueBubbles webhook 绑定地址 |
BLUEBUBBLES_WEBHOOK_PORT | BlueBubbles webhook 监听端口 |
BLUEBUBBLES_HOME_CHANNEL | BlueBubbles 默认 cron/通知投递目标 |
BLUEBUBBLES_ALLOWED_USERS | 授权用户列表 |
BLUEBUBBLES_ALLOW_ALL_USERS | 是否允许所有用户 |
QQ_APP_ID | QQ Bot App ID |
QQ_CLIENT_SECRET | QQ Bot App Secret |
QQ_STT_API_KEY | 外部 STT 回退 provider 的 API key |
QQ_STT_BASE_URL | 外部 STT provider 的 base URL |
QQ_STT_MODEL | 外部 STT provider 使用的模型名 |
QQ_ALLOWED_USERS | 允许与 bot 私聊的 QQ openID |
QQ_GROUP_ALLOWED_USERS | 允许群 @ 消息交互的 QQ 群 ID |
QQ_ALLOW_ALL_USERS | 是否允许所有 QQ 用户 |
QQBOT_HOME_CHANNEL | QQ 默认 cron/通知投递目标 |
QQBOT_HOME_CHANNEL_NAME | QQ home channel 显示名 |
QQ_SANDBOX | 是否将 QQ Bot 路由到沙箱网关 |
MATTERMOST_URL | Mattermost server URL |
MATTERMOST_TOKEN | Mattermost bot token 或个人 access token |
MATTERMOST_ALLOWED_USERS | 允许使用 bot 的 Mattermost 用户 ID |
MATTERMOST_HOME_CHANNEL | 主动消息默认投递频道 ID |
MATTERMOST_REQUIRE_MENTION | 频道中是否必须 @mention |
MATTERMOST_FREE_RESPONSE_CHANNELS | 无需 @mention 也响应的频道 ID |
MATTERMOST_REPLY_MODE | 回复模式:thread 或 off |
MATRIX_HOMESERVER | Matrix homeserver URL |
MATRIX_ACCESS_TOKEN | Matrix access token |
MATRIX_USER_ID | Matrix 用户 ID |
MATRIX_PASSWORD | Matrix 密码 |
MATRIX_ALLOWED_USERS | 允许使用 bot 的 Matrix 用户 ID |
MATRIX_HOME_ROOM | 主动消息默认投递 room ID |
MATRIX_ENCRYPTION | 是否启用端到端加密 |
MATRIX_DEVICE_ID | 稳定的 Matrix device ID,用于 E2EE 持久化 |
MATRIX_REACTIONS | 是否为入站消息加处理状态 emoji reaction |
MATRIX_REQUIRE_MENTION | 房间中是否必须 @mention |
MATRIX_FREE_RESPONSE_ROOMS | 无需 @mention 也响应的 room ID |
MATRIX_AUTO_THREAD | 是否自动为 room 消息创建 thread |
MATRIX_DM_MENTION_THREADS | 私聊中被 @mentioned 时是否建 thread |
MATRIX_RECOVERY_KEY | E2EE 跨签名恢复 key |
HASS_TOKEN | Home Assistant Long-Lived Access Token |
HASS_URL | Home Assistant URL |
WEBHOOK_ENABLED | 是否启用 webhook 平台适配器 |
WEBHOOK_PORT | 接收 webhook 的 HTTP 端口 |
WEBHOOK_SECRET | webhook 签名校验的全局 HMAC secret |
API_SERVER_ENABLED | 是否启用 OpenAI 兼容 API server |
API_SERVER_KEY | API server 的 bearer token |
API_SERVER_CORS_ORIGINS | 允许直接调用 API server 的浏览器来源 |
API_SERVER_PORT | API server 端口 |
API_SERVER_HOST | API server 绑定地址 |
API_SERVER_MODEL_NAME | /v1/models 上显示的模型名 |
GATEWAY_PROXY_URL | 远程 Hermes API server URL,用于 proxy mode |
GATEWAY_PROXY_KEY | proxy mode 下访问远端 API server 的 bearer token |
MESSAGING_CWD | 消息模式下终端命令的工作目录 |
GATEWAY_ALLOWED_USERS | 全平台共享 allowlist 用户 ID |
GATEWAY_ALLOW_ALL_USERS | 是否允许所有用户,无需 allowlist |
Agent Behavior
| Variable | Description |
|---|---|
HERMES_MAX_ITERATIONS | 每次对话的最大工具调用迭代次数 |
HERMES_TOOL_PROGRESS | 兼容用旧变量,推荐改用 config.yaml 的 display.tool_progress |
HERMES_TOOL_PROGRESS_MODE | 兼容用旧变量,推荐改用 display.tool_progress |
HERMES_HUMAN_DELAY_MODE | 回复节奏:off / natural / custom |
HERMES_HUMAN_DELAY_MIN_MS | 自定义延迟范围最小值(毫秒) |
HERMES_HUMAN_DELAY_MAX_MS | 自定义延迟范围最大值(毫秒) |
HERMES_QUIET | 是否隐藏非关键输出 |
HERMES_API_TIMEOUT | LLM API 调用超时(秒) |
HERMES_API_CALL_STALE_TIMEOUT | 非流式调用的 stale 超时(秒) |
HERMES_STREAM_READ_TIMEOUT | 流式 socket 读取超时(秒) |
HERMES_STREAM_STALE_TIMEOUT | 流式输出无新 chunk 时的 stale 超时(秒) |
HERMES_EXEC_ASK | 在网关模式中启用执行审批提示 |
HERMES_ENABLE_PROJECT_PLUGINS | 是否自动发现仓库本地 ./.hermes/plugins/ 插件 |
HERMES_BACKGROUND_NOTIFICATIONS | 网关中后台进程通知模式:all、result、error、off |
HERMES_EPHEMERAL_SYSTEM_PROMPT | 仅在 API 调用时注入、不会持久化的临时 system prompt |
DELEGATION_MAX_CONCURRENT_CHILDREN | 每批 delegate_task 的最大并发子 agent 数 |
Interface
| Variable | Description |
|---|---|
HERMES_TUI | 设为 1 时启动 TUI,等价于传 --tui |
HERMES_TUI_DIR | 指向预构建好的 ui-tui/ 目录,用于跳过首次启动时的 npm install |
Cron Scheduler
| Variable | Description |
|---|---|
HERMES_CRON_TIMEOUT | cron 任务 agent 运行的空闲超时(秒) |
HERMES_CRON_SCRIPT_TIMEOUT | cron 前置脚本的超时(秒) |
Session Settings
| Variable | Description |
|---|---|
SESSION_IDLE_MINUTES | 空闲 N 分钟后重置会话 |
SESSION_RESET_HOUR | 每日自动重置小时(24 小时制) |
Context Compression(仅 config.yaml)
上下文压缩只通过 config.yaml 配置,没有对应环境变量。阈值配置位于 compression:,摘要模型/大模型提供商(provider)位于 auxiliary.compression:。
compression:
enabled: true
threshold: 0.50
target_ratio: 0.20
protect_last_n: 20
旧版配置中的 compression.summary_model、compression.summary_provider 和 compression.summary_base_url 会在首次加载时自动迁移到 auxiliary.compression.*。
Auxiliary Task Overrides
| Variable | Description |
|---|---|
AUXILIARY_VISION_PROVIDER | 覆盖视觉任务使用的 provider |
AUXILIARY_VISION_MODEL | 覆盖视觉任务使用的模型 |
AUXILIARY_VISION_BASE_URL | 视觉任务使用的 OpenAI 兼容端点 |
AUXILIARY_VISION_API_KEY | 与 AUXILIARY_VISION_BASE_URL 配对的 API key |
AUXILIARY_WEB_EXTRACT_PROVIDER | 覆盖 Web 提取/摘要任务使用的 provider |
AUXILIARY_WEB_EXTRACT_MODEL | 覆盖 Web 提取/摘要任务使用的模型 |
AUXILIARY_WEB_EXTRACT_BASE_URL | Web 提取/摘要任务使用的 OpenAI 兼容端点 |
AUXILIARY_WEB_EXTRACT_API_KEY | 与 AUXILIARY_WEB_EXTRACT_BASE_URL 配对的 API key |
对于任务级自定义端点,Hermes 会使用该任务的 API key 或 OPENAI_API_KEY,不会复用 OPENROUTER_API_KEY。
Fallback Model(仅 config.yaml)
主模型回退只通过 config.yaml 配置,没有对应环境变量。添加一个带 provider 与 model 的 fallback_model 配置块,即可在主模型报错时自动切换:
fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4
完整说明请见 Fallback Providers。
Provider Routing(仅 config.yaml)
这些项放在 ~/.hermes/config.yaml 的 provider_routing 节:
| Key | Description |
|---|---|
sort | provider 排序方式:"price"(默认)、"throughput" 或 "latency" |
only | 允许使用的 provider slug 列表 |
ignore | 要跳过的 provider slug 列表 |
order | 按顺序尝试的 provider slug 列表 |
require_parameters | 是否只使用支持全部请求参数的 provider |
data_collection | "allow"(默认)或 "deny",用于排除会存储数据的 provider |
可使用 hermes config set 设置环境变量。Hermes 会自动把密钥类变量写入 .env,把其他配置写入 config.yaml。