Skip to content

Configuration

This page shows where Hermes keeps its settings, what the provisioning script accepts, and how to change models, users and channels.

Where things live

What Where
Runtime user ubuntu
hermes command /usr/local/bin/hermes
Application files /usr/local/lib/hermes-agent
Hermes Python environment /usr/local/lib/hermes-agent/venv
Configuration, secrets, sessions, cron jobs and state /home/ubuntu/.hermes
API keys and Telegram token (mode 0600) /home/ubuntu/.hermes/.env
Model and other non-secret settings /home/ubuntu/.hermes/config.yaml
Gateway log /home/ubuntu/.hermes/logs/gateway.log
Provisioning script /opt/hermes/bin/provision-hermes.sh
Service unit /etc/systemd/system/hermes-gateway.service
Provisioning log /var/log/deploy-ec2.log
Installed Hermes release /etc/hermes-agent-release

Provisioning settings

provision-hermes.sh reads its settings from environment variables. Run it as root, as shown in Getting started.

Variable Required Default What it does
LLM_API_KEY Yes Your model provider's API key.
BOT_TOKEN Yes Your Telegram bot token from BotFather.
CUSTOMER_TELEGRAM_ID Yes Your numeric Telegram user ID.
LLM_PROVIDER No openai openai, anthropic, openrouter, gemini or groq.
LLM_MODEL No gpt-5 The exact model ID your provider expects, with no provider prefix. For OpenRouter, use OpenRouter's own ID, such as anthropic/claude-3.5-sonnet.
LLM_BASE_URL No A custom or proxy API endpoint. Leave empty for the provider's own.
AGENT_NAME No Hermes The agent's display name.
DM_POLICY No allowlist allowlist lets only the allowed users talk to the bot. open lets anyone.
ADDITIONAL_USERS No More Telegram user IDs to allow, comma-separated.
CUSTOMER_TIMEZONE No UTC The instance time zone, for example America/New_York.

Keep DM_POLICY=allowlist

With open, anyone who finds your bot can use it and spend your model-provider credits. Choose it only on purpose.

Re-running the script replaces .env

Each run rewrites /home/ubuntu/.hermes/.env from the variables you give it. Supply every value again, and re-add anything you put in that file by hand.

Change the model or provider

The simplest way is to run the provisioning script again with new LLM_PROVIDER and LLM_MODEL values. Or, as the ubuntu user, use the Hermes commands and restart the service:

hermes model
sudo systemctl restart hermes-gateway

hermes model opens an interactive picker. To set values directly:

hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-3.5-sonnet
sudo systemctl restart hermes-gateway

Add or remove Telegram users

Run the provisioning script again with the full list in ADDITIONAL_USERS.

Add Discord or Slack

The Discord and Slack adapters are installed but not configured. As the ubuntu user:

hermes gateway setup
sudo systemctl restart hermes-gateway

Test a new channel before you rely on it.

Interactive setup

To review everything at once in Hermes's own wizard, run, as ubuntu:

hermes setup
sudo systemctl restart hermes-gateway

Python packages

Hermes uses its own environment in /usr/local/lib/hermes-agent/venv. Installing a package with the system pip does not change it.