← index2026-05-02 16:40 (Beirut)(backfill from DOCUMENTATION/)

Hermes Agent install — 2026-05-02

Hermes Agent install — 2026-05-02

Replaces dormant OpenClaw. Author: Brian (Hetzner). Ack: Jonah.
Shared via /root/Downloads/SHARED COMPUTERS/DOCUMENTATION/ (synced to Mac).

What this is

Nous Research's Hermes Agent (v0.12.0, 129K ⭐, MIT). The official successor to OpenClaw, by the same lineage. Multi-platform messaging gateway, NL cron scheduler, 89 bundled skills, FTS5 session search, closed-loop skill curator (self-improvement).

OpenClaw container had been dormant for 7+ days (0 calls). Stopped 2026-05-02 12:35 UTC, restart-policy=no, preserved for rollback.

Final state

Code /usr/local/lib/hermes-agent/
Data /root/.hermes/
Binary /usr/local/bin/hermes
Service hermes-gateway.service (systemd, system-wide, run-as-user=root, enabled)
Memory 114 MB resident
Skills 24 bundled + 534 OC-imported = 558 total
Cron jobs 3 POC: hermes-hourly-heartbeat, hermes-daily-doctor, hermes-skill-curator
Pre-migration backup /root/.hermes/backups/pre-migration-2026-05-02-133200.zip (2.9 MB, restorable via hermes import)

Model routing (zero-money default)

# /root/.hermes/config.yaml
model:
  default: "primary"
  provider: "custom"
  base_url: "http://localhost:4000"   # LiteLLM proxy enforces PAID_DAILY_CAP_USD=0

OPENROUTER_API_KEY in /root/.hermes/.env is set to LITELLM_MASTER_KEY so the bearer token reaches LiteLLM. Default Hermes calls land on Gemma 3 27B :free via OpenRouter (free), routed through LiteLLM with circuit breakers and the daily $0 cap.

Direct provider keys are wired in ~/.hermes/.env (Anthropic, OpenAI, Google AI Studio). They only fire when explicitly requested:

hermes -m anthropic/claude-opus-4.6  --provider anthropic   -z "..."
hermes -m openai/gpt-5.4             --provider openai-codex -z "..."
hermes -m gemini-2.5-pro             --provider gemini      -z "..."

Status at install:
- Anthropic key valid but balance is $0 — top up at console.anthropic.com → Plans & Billing.
- OpenAI uses OAuth via hermes auth — Jonah needs to log in once with his OpenAI account for Codex CLI to authorize.
- Google AI Studio (Gemini): ✓ working, free quota active.

TG gateway: deferred

Brian's two existing systemd services already long-poll the bots:
- agent-telegram@jonah_claude_bot (COMMS — Jonah convos + business wins)
- agent-telegram-logs@brian_system_logs_bot (LOGS — errors + automation noise)

Two consumers per bot would conflict. Tokens are present in ~/.hermes/.env but commented out to keep hermes-gateway in cron-only mode. To cut over to Hermes:

systemctl stop agent-telegram agent-telegram-logs
sed -i 's|^# TELEGRAM_|TELEGRAM_|' /root/.hermes/.env
systemctl restart hermes-gateway

Open question for Jonah: cut over fully (cleaner — single agent on each bot), keep Brian's (safer — TG lifeline doesn't depend on Hermes), or new bots for Hermes (4 bots total, both stay running).

Discord, Slack, WhatsApp, Signal: not configured — Jonah hasn't asked for any. WhatsApp would conflict with agent-evolution if attempted.

Brian → Hermes dispatch policy

Lives in /root/.claude/projects/-/memory/reference_when_to_delegate_to_hermes.md. Short version:

Hermes for: skill-driven background work matching one of the 558 skills, NL cron jobs that don't write to Brian's TG/CRM/Postgres, skill curator runs, one-shot CLI prompts.

Brian for: anything Jonah is talking to right now (voice/TG/dispatch), 20CRM/Cal/Composio/Stripe/Evolution writes, code edits + specialist agent dispatch, /agency social publishing (hard rule), GEO daily hour, daily evening brief.

Migration log (OpenClaw → Hermes)

hermes claw migrate --source /opt/agent/data/openclaw/config --preset full --overwrite --yes

Health

hermes doctor                                # full check
hermes cron list                             # 3 POC jobs
hermes curator status                        # 530 active skills tracked
systemctl status hermes-gateway              # service running
journalctl -u hermes-gateway -f              # live logs
ls /root/.hermes/sessions/                   # session FTS5 db + per-call dumps

Known minor issues:
- ~/.local/bin/hermes symlink missing (root uses /usr/local/bin PATH — irrelevant). hermes doctor --fix would create it.
- MESSAGING_CWD=~/.openclaw/workspace in .env is a deprecated OC import — harmless warning. Move to terminal.cwd in config.yaml if you want it gone.
- Cron-fired calls hit a LiteLLM 400 No connected db error on first try (interactive -z calls work fine; under investigation — likely a virtual-key / DB-auth path issue when called from the curator's tool-use loop).

Rollback

If Hermes needs to come down:

systemctl stop hermes-gateway && systemctl disable hermes-gateway
rm /etc/systemd/system/hermes-gateway.service && systemctl daemon-reload
docker update --restart=unless-stopped agent-openclaw && docker restart agent-openclaw
hermes uninstall   # nukes /usr/local/lib/hermes-agent + /root/.hermes

File touchpoints this install