A public, profile-aware quick reference for running, configuring, extending, and troubleshooting Hermes from CLI, Discord/Telegram gateway, cron, skills, MCP, and local tool workflows. Keep secrets in local .env files and check the official docs for current commands.
Print tip: this sheet is print-optimized. Use landscape if you want the tables wider.
hermes # interactive chat
hermes --tui # modern TUI
hermes --cli # classic REPL
hermes chat -q "Hello" # single query
hermes -z "Only final text" # oneshot for scriptshermes -c # continue latest
hermes -c "project name" # continue named lineage
hermes -r <session_id> # resume exact session
hermes -w # isolated git worktreehermes --version
hermes status --all
hermes doctor
hermes logs --since 1h
hermes dump # support summaryhermes setup # full wizard
hermes setup model # section wizard
hermes model # choose model/provider
hermes config # view config
hermes config path # config.yaml path
hermes config env-path # .env path
hermes config edit # open editor
hermes config set KEY VALUE # set dotted key
hermes config check
hermes config migrateOperational rule: config changes usually require a fresh CLI session or hermes gateway restart for messaging platforms.
| Thing | Default profile | Named profile |
|---|---|---|
| Config | ~/.hermes/config.yaml | ~/.hermes/profiles/<name>/config.yaml |
| Secrets | ~/.hermes/.env | ~/.hermes/profiles/<name>/.env |
| Skills | ~/.hermes/skills/ | ~/.hermes/profiles/<name>/skills/ |
| Sessions | ~/.hermes/sessions/ | ~/.hermes/profiles/<name>/sessions/ |
| Logs | ~/.hermes/logs/ | ~/.hermes/profiles/<name>/logs/ |
| OAuth/pools | ~/.hermes/auth.json | ~/.hermes/profiles/<name>/auth.json |
modelagentterminaldisplaymemorycompressiondelegationapprovalsprivacysecuritydiscord / telegram / slack
.env, not config.yaml.-p/--profile use profile · -m/--model model override · --provider provider override · -t/--toolsets toolset override · -s/--skills preload skills · --yolo bypass approvals · --safe-mode disable customizations.
hermes profile list
hermes profile create <profile-name>
hermes profile create <new-profile> --clone <profile-name>
hermes profile use <profile-name>
hermes -p <profile-name> status --all
hermes profile alias <profile-name>
hermes profile export <profile-name>
hermes profile import backup.tar.gz.env, OAuth files, and status --all.hermes gateway setup
hermes gateway run # foreground
hermes gateway install # service
hermes gateway start
hermes gateway stop
hermes gateway restart
hermes gateway status
hermes logs gateway --since 1h/help /commands /status /profile /platforms /sethome /restart /approve /deny /fast /new
Messaging gateway supports Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email, SMS, Home Assistant, webhooks/API server, and more.
/new /clear /retry /undo /title /compress /stop /rollback /model /tools /skills /cron /reload-mcp
.env, allowed user IDs, and gateway logs./reset or new session; gateway config changes require restart.hermes tools # curses UI
hermes tools list
hermes tools enable terminal
hermes tools disable image_genCommon toolsets: webbrowserterminalfilecode_executionvisionimage_genttsskillsmemorysession_searchdelegationcronjobcomputer_use
Effect: changes take effect in the next session, not mid-turn.
hermes skills list
hermes skills browse
hermes skills search hermes
hermes skills inspect <id>
hermes skills install <id-or-url>
hermes skills config
hermes skills check
hermes skills update
hermes -s hermes-agent,codexSkills are reusable procedures. Use them for workflows; use memory for compact stable facts only.
hermes memory status
hermes memory setup
hermes memory off
hermes memory resetStores durable user/environment facts. Avoid saving temporary task progress.
hermes prompt-size
hermes prompt-size --profile <profile-name>Good for diagnosing huge skill/tool/context overhead.
hermes sessions list
hermes sessions browse
hermes sessions rename <id> "Title"
hermes sessions export sessions.jsonl
hermes sessions prune --older-than 30d
hermes sessions statshermes chat -q "Research X and write ~/x.md"
hermes -w chat -q "Implement feature Y"
tmux new-session -d -s agent1 'hermes -w'
tmux send-keys -t agent1 'Build API' Enterhermes cron list
hermes cron create "0 9 * * *"
hermes cron edit <id>
hermes cron run <id>
hermes cron pause <id>
hermes cron resume <id>
hermes cron remove <id>
hermes cron statusSchedules: 30m, every 2h, cron expressions, or one-shot ISO timestamps.
skills=[...] for reusable procedure context.workdir for project-local jobs and AGENTS.md injection.no_agent=true only when a script prints the exact user-facing output.hermes webhook subscribe build-done
hermes webhook list
hermes webhook test build-done
hermes webhook remove build-doneorigin returns to current chat; local saves only; discord home channel; explicit targets use platform:chat_id[:thread_id].
hermes mcp list
hermes mcp add NAME --command "npx ..."
hermes mcp add NAME --url https://...
hermes mcp test NAME
hermes mcp configure NAME
hermes mcp remove NAME
hermes mcp serve/reload-mcp where supported.hermes model # provider/model picker
hermes auth add # pooled credential wizard
hermes auth list [provider]
hermes auth remove <p> <index>
hermes auth reset <provider>
hermes portal # Nous Portal setup
hermes login --provider qwen-oauth| Provider | Auth | Env/config |
|---|---|---|
| OpenRouter | API key | OPENROUTER_API_KEY |
| OpenAI Codex | OAuth | hermes auth |
| Nous Portal | OAuth | hermes portal |
| Anthropic | API key | ANTHROPIC_API_KEY |
| Gemini | API key | GOOGLE_API_KEY / GEMINI_API_KEY |
| Local Ollama | custom endpoint | base_url=http://127.0.0.1:11434/v1 |
ollama list
curl http://127.0.0.1:11434/v1/models
hermes config set model.provider custom
hermes config set model.default <ollama-model>
hermes config set model.base_url http://127.0.0.1:11434/v1
hermes config set model.api_key ollamaRestart gateway if the messaging bot should use the new model.
hermes config set approvals.mode manual # default
hermes config set approvals.mode smart # LLM-assisted
hermes config set approvals.mode off # same spirit as --yoloCareful: --yolo / approvals off bypasses dangerous command prompts.
hermes config set security.redact_secrets true
hermes config set security.redact_secrets falseRestart required. Redaction is snapshotted at startup.
hermes config set privacy.redact_pii true
hermes security
hermes secrets # external secret sourcesRun broad diagnostics carefully if redaction is off; status dumps may show configured key prefixes.
hermes profile list.hermes -p <profile> status --all.hermes -p <profile> doctor.hermes -p <profile> logs --since 1h.hermes tools list, enable it, then /reset.hermes skills list, skills config, load with /skill name.auxiliary.session_search.provider; do not set only auxiliary.provider.hermes -p <profile-name> config path
hermes -p <profile-name> config env-path
hermes -p <profile-name> status --all
hermes -p <profile-name> logs --since 1h
# If sharing output publicly: enable security.redact_secrets first and restart.| Path | Purpose |
|---|---|
run_agent.py | Core conversation loop |
model_tools.py | Tool discovery and dispatch |
toolsets.py | Toolset definitions |
cli.py | Interactive CLI |
hermes_cli/commands.py | Slash command registry |
tools/ | One file per tool |
gateway/ | Messaging adapters |
cron/ | Scheduler |
tests/ | Pytest suite |
python -m pytest tests/ -o 'addopts=' -q
python -m pytest tests/tools/ -q
python -m py_compile path/to/file.py
hermes dashboard --status
hermes dashboard --no-open
hermes updateUse get_hermes_home() for profile-safe paths. Tests redirect HERMES_HOME to temp dirs.
tools/your_tool.py.tools.registry.registry.register(...).CommandDef in hermes_cli/commands.py.config.yaml, secrets in .env.check_fn and requirement gating.