← All Guides

CLI Reference

Hermes Agent CLI

Hermes Agent ships with a full command-line interface. You can manage channels, plugins, models, and the gateway from your terminal — or talk to Hermes directly without a chat UI. Reference and recipes below.

Where the CLI Lives

The Hermes binary is hermes when you install via npm i -g or as a local npm i. When running in Docker, the CLI is inside the container — reach it with docker exec:

# Local install
hermes --help

# Docker install
docker exec -it hermes hermes --help

# Or, if you prefer a shell alias:
alias hermes='docker exec -it hermes hermes'

Core Commands

CommandPurpose
hermes startLaunch the gateway process (foreground)
hermes statusShow gateway status, connected channels, current model
hermes logsStream gateway logs (-f to follow)
hermes config getPrint current config
hermes config set KEY VALUEUpdate a config field (triggers SIGUSR1 reload for hot paths)
hermes channels listShow connected channels (telegram, discord, whatsapp, etc.)
hermes channels enable NAMEEnable a channel from the configured list
hermes channels login NAMERun platform pairing for a channel (Telegram QR, Discord token check, etc.)
hermes plugins listShow installed plugins
hermes plugins install NAMEInstall a plugin from the registry or a local path
hermes models listShow configured model providers
hermes chat send "..."Send a message directly to the agent and print the reply
hermes --tuiLaunch the terminal UI (full-screen chat experience in your terminal)

Talk to Hermes From Your Terminal

The fastest way to confirm Hermes is alive: hermes chat send. It sends a one-shot message to the agent and prints the reply, including any tool calls Hermes made:

hermes chat send "What time is it in Tokyo right now?"

For an interactive session in your terminal — full chat history, streaming tokens, slash commands — use the TUI:

hermes --tui

# Or in Docker:
docker exec -it hermes hermes --tui

The TUI is the same agent your Telegram users are talking to. Same memory, same tools. It's the easiest way to debug what the bot will do before you let real users hit it.

Channels: Pair, Enable, Disconnect

The channels subcommand is the workhorse for connecting to messaging platforms. Typical Telegram setup from the CLI:

# 1. Add the bot token to config
hermes config set channels.telegram.botToken "123:ABC..."

# 2. Enable the channel
hermes channels enable telegram

# 3. Run pairing (this is required when dmPolicy: pairing)
hermes channels login telegram

# 4. Confirm
hermes channels list

For Discord, replace telegram with discord. Same shape for whatsapp, wechat, and feishu. Each channel may need additional config — see Telegram setup, Discord setup, WhatsApp setup.

Plugins and Skills

Plugins extend Hermes with new tools. Install from the registry or a local path:

# Install from registry
hermes plugins install @hermes/web-search

# Install from local path
hermes plugins install -l /opt/hermes/plugins/my-plugin

# List installed
hermes plugins list

# Remove
hermes plugins uninstall @hermes/web-search

Skills are a higher-level abstraction over plugins — pre-packaged toolkits for specific use cases (research, coding, support). See Hermes skills guide.

Model Management

Switch the default model without editing config files:

# List configured providers
hermes models list

# Switch default model (hot-applies, no restart)
hermes config set models.default openrouter/anthropic/claude-sonnet-4.6

# Add a provider
hermes config set models.providers.openai.apiKey "sk-..."

Hot-apply paths: channels.*, agents.*, and models.*. Other paths (plugins, gateway auth) need a restart.

Common CLI Recipes

Tail logs while debugging

hermes logs -f --grep ERROR

Test a config change without rebooting

# Hot-apply path — channels.* and models.*
hermes config set channels.telegram.dmPolicy "pairing"
hermes channels list  # confirm picked up

One-shot ask from a shell script

# Pipe into a script
ANSWER=$(hermes chat send "Summarize the latest AI news in 3 bullets")
echo "$ANSWER"

Health probe

# Returns exit 0 if gateway is healthy, non-zero otherwise
hermes status --json | jq -e '.healthy'

Hermes CLI on Managed Hosting

On managed Hermes hosting, the CLI is reachable via the gateway URL with your auth token:

# Set the gateway base + token from your dashboard
export HERMES_GATEWAY_URL="https://hermes-abc123.openclawlaunch.app"
export HERMES_AUTH_TOKEN="..."

# Then the CLI talks to it remotely
hermes status
hermes chat send "Hello"

Troubleshooting

  • hermes not found. Ensure your install added~/.npm-global/bin (or wherever npm puts global binaries) to $PATH. Or use the Docker exec form.
  • SIGUSR1 thrashing. Each config set on a non-hot-applicable path triggers a gateway restart. Batch your changes or use hot-apply paths only.
  • Channel pairing hangs. Telegram pairing waits for you to respond on the bot side. If hermes channels login telegram hangs, send a message to your bot from a Telegram client to complete the pair.
  • Permission denied on Docker exec. Add your user to thedocker group: usermod -aG docker $USER and re-login.

Skip the CLI — Use the Dashboard

Don't want to learn the CLI? On managed Hermes hosting everything above — channels, plugins, models, logs — is in the web dashboard. Click instead of type. From $3/mo.

Related Guides

Run Hermes Without a CLI

Managed Hermes hosting from $3/mo. Web dashboard. No SSH, no Docker exec.

See Hermes Hosting