~/.hermes/.env (loaded on startup) and from the shell environment. The .env file takes precedence over stale shell exports.
Use hermes setup to configure variables interactively, or set them directly:
.env file directly:
HERMES_HOME overrides the base directory for all config files. Default is ~/.hermes. Set this before running any hermes command.Provider API keys
At least one provider must be configured for Hermes to start. Runhermes setup to choose a provider interactively.
string
API key for OpenRouter. Provides access to 100+ models including Claude, GPT, Gemini, and open-source models. Also required for the
vision_analyze and mixture_of_agents tools when using auxiliary providers.string
API key for direct Anthropic API access (Claude models). Alternative to using Anthropic via OpenRouter.
string
OpenAI API key. Used when
OPENAI_BASE_URL is set (custom endpoint) or for direct OpenAI access.string
Base URL for any OpenAI-compatible endpoint (custom deployments, local models, proxies). When set alongside
OPENAI_API_KEY, Hermes routes all requests to this endpoint.string
API key for Z.AI / ZhipuAI GLM models (GLM-5, GLM-4.7, etc.). Also recognized as
ZAI_API_KEY or Z_AI_API_KEY.string
Base URL override for the Z.AI / GLM API. Leave empty to use the default endpoint.
string
API key for Kimi / Moonshot AI models. Keys prefixed with
sk-kimi- use the Kimi Code API by default.string
Base URL override for Kimi. Use
https://api.kimi.com/coding/v1 for Kimi Code keys, https://api.moonshot.ai/v1 for legacy Moonshot keys.string
API key for MiniMax China (domestic endpoint).
string
API key for Alibaba Cloud DashScope (Qwen models).
string
API key for OpenCode Zen — pay-as-you-go access to curated models.
string
API key for OpenCode Go — $10/month subscription for open models (GLM-5, Kimi K2.5, MiniMax M2.5).
string
API key for AI Gateway by Vercel — 200+ models, pay-per-use.
string
GitHub token for GitHub Copilot access. Accepts OAuth tokens (
gho_*), fine-grained PATs with Copilot Requests permission (github_pat_*), or GitHub App tokens (ghu_*). Classic PATs (ghp_*) are not supported. Set via hermes model → GitHub Copilot, or run copilot login.string
Override the inference provider at runtime without changing
config.yaml. Accepted values: auto, openrouter, nous, openai-codex, copilot, anthropic, zai, kimi-coding, minimax, minimax-cn, kilocode, custom.Tool API keys
string
API key for Parallel — AI-native web search and content extraction. Powers the
web_search and web_extract tools.string
URL for a self-hosted Firecrawl instance. Leave empty to use the Firecrawl cloud service.
string
API key for Tavily — AI-native web search, extract, and crawl. Powers
web_search, web_extract, and web_crawl tools.string
API key for Browserbase cloud browser. Required for remote browser execution. Local browser automation works without this key.
string
Browserbase project ID from your dashboard. Required alongside
BROWSERBASE_API_KEY for cloud browser sessions.string
API key for Browser Use cloud browser (alternative to Browserbase).
string
OpenAI API key used exclusively for voice transcription (Whisper) and OpenAI TTS. Named separately to avoid interfering with the main inference provider. Get one at platform.openai.com/api-keys.
string
API key for ElevenLabs premium text-to-speech voices.
string
API key for Honcho AI-native cross-session user memory. Required by the
honcho_context, honcho_profile, honcho_search, and honcho_conclude tools. Also requires ~/.honcho/config.json.string
GitHub personal access token for the Skills Hub (higher API rate limits) and skill publishing. Get one at github.com/settings/tokens.
string
Weights & Biases API key for experiment tracking. Used by
rl_get_results and rl_check_status.Messaging platforms
string
Telegram bot token obtained from @BotFather. Required to enable the Telegram gateway.
string
Comma-separated Telegram user IDs allowed to interact with the bot. Get your ID from @userinfobot. Leave empty (with
GATEWAY_ALLOW_ALL_USERS=true) for open access.string
Discord bot token from the Developer Portal. Required to enable the Discord gateway.
string
Comma-separated Discord user IDs allowed to use the bot.
string
Slack bot token (
xoxb-...) from your app’s OAuth & Permissions settings. Required scopes: chat:write, app_mentions:read, channels:history, groups:history, im:history, im:read, im:write, users:read, files:write.string
Slack app-level token (
xapp-...) for Socket Mode. Create in Basic Information → App-Level Tokens. Also requires Event Subscriptions: message.im, message.channels, message.groups, app_mention.string
Mattermost server URL, e.g.
https://mm.example.com.string
Mattermost bot token or personal access token.
string
Comma-separated Mattermost user IDs allowed to use the bot.
string
Matrix homeserver URL, e.g.
https://matrix.example.org.string
Matrix access token (preferred over password login).
string
Matrix user ID in
@user:server format.string
Comma-separated Matrix user IDs in
@user:server format.string
Set to
true to enable the WhatsApp gateway. Use hermes whatsapp to pair via QR code.string
Comma-separated phone numbers (e.g.
15551234567) allowed to message the bot. Use * for anyone.string
default:"false"
Set to
true to allow all users to interact with messaging bots without an allowlist. Use only for private deployments.string
default:"false"
Set to
true to enable the OpenAI-compatible API server. Allows frontends like Open WebUI and LobeChat to connect.string
Bearer token for API server authentication. If empty, all requests are allowed (suitable for local use only).
string
default:"8642"
Port for the API server.
string
default:"127.0.0.1"
Host/bind address for the API server. Use
0.0.0.0 for network access — set API_SERVER_KEY for security.Settings
string
Working directory for terminal commands executed via messaging platforms. Defaults to the home directory. The CLI always uses the directory where
hermes was launched.string
Sudo password for terminal commands requiring root access. Piped via
sudo -S. Works with all terminal backends.string
default:"90"
Maximum tool-calling iterations per conversation. Overrides
agent.max_turns in config.yaml.string
Path to a JSON file containing ephemeral prefill messages for few-shot priming. The messages are injected at the start of every API call but never saved to sessions or logs.
string
An ephemeral system prompt injected at API-call time. Never persisted to sessions.