Set it up
Budget an evening. The cron jobs wait until step 5.
1 · Install and first run
Linux / macOS / WSL2 / Termux
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Windows (PowerShell)
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
Run hermes once to finish onboarding. Point the
model section of ~/.hermes/config.yaml at Nous Portal,
OpenRouter, OpenAI or your own endpoint. You need a Nous Portal
subscription either way, since Portal serves the web and browser tools
(see the
docs,
integrations → Nous Portal). Secrets go in ~/.hermes/.env,
never in config.yaml.
2 · The messaging gateway
Configure Telegram or Slack (I tested both) and start the daemon. Install it as a systemd or launchd service so it survives reboots.
Start the gateway
hermes gateway
Access is all or nothing: an approved sender gets the whole agent. A new sender gets a one-time pairing code, which you approve:
Approve a paired user
hermes pairing approve telegram <code>
3 · The voice files
Keep ~/.hermes/SOUL.md under a screenful, since it loads
into every session. The style guide goes in a skill:
~/.hermes/skills/editorial/house-style/SKILL.md (skeleton)
--- name: house-style description: > House style for [publication]: voice, banned words, lede rules, sourcing standards, structure, and the 10-point scoring rubric. Apply when drafting or scoring any piece. version: 0.1.0 --- ## Voice [register, reader, what we never do] ## Banned words and constructions [the list — be specific, this is what the score checks] ## Sourcing Every stat and quote carries a numbered source. One source = a hedge or a cut, never a confident claim. ## Structure Headline ≤ 70 chars · dek · lede ≤ 2 sentences · 2–3 sections · further-reading links. ## Scoring rubric (0–100) [10 checks × 10 points — the Summarizer self-scores against these]
Prompt 1 has Hermes write both files from
your samples with skill_manage, and
skills.write_approval makes you confirm each write. There’s a
skills hub (hermes skills browse / search / install), but
don’t install a house style off the shelf.
4 · Safety settings, before any cron
- Keep
approvals.modeonsmartormanual. A scheduled agent on--yolois how you end up in the news yourself. - Leave
skills.write_approvalon so the agent can’t rewrite its own rules mid-run. - If you need an agent-written fetch script, run it on the hardened
docker terminal backend, because
execute_codeisn’t sandboxed on the defaultlocalone.
5 · The cron jobs
Ask the agent to create the jobs (prompt 2), then check them:
Check and control the schedule
hermes cron list hermes cron run <job> # fire one edition now, watch it in Telegram hermes cron status hermes cron pause <job> # holidays exist hermes cron resume <job>
Fire runs by hand for the first few days. A mistake you catch by hand won’t repeat three times a day on a meter.
6 · RSS bridge (optional)
Skip it until cron proves too slow. Point an RSS-to-webhook service or a small crontab script at the webhook gateway:
Bridge target (route configured under platforms.webhook.extra)
POST http://your-server:8644/webhooks/rss-inbox # port 8644 · shared secret · HMAC validation supported # rate_limit 30/min · max_body_bytes enforced
Give the route a prompt template that checks the item against your bar and a delivery target of your Telegram thread.