two¢ents

Architecture

One Hermes instance, four stages. Metered steps and the parts you build are marked.

1 · Schedule: built-in cron

The built-in cronjob tool takes natural-language schedules and stores jobs in ~/.hermes/cron/. Manage them with hermes cron list/run/pause/status. Each run delivers to your messaging app.

07:00 · 12:30 · 17:303 jobs, one per edition
Delivery targetTelegram / Slack thread
↓ each tick

2 · Watch

Every web tool goes through the paid Nous Portal gateway. Each run checks the watchlist since the last run and applies your bar.

Topicsweb_search → web_extract (Firecrawl-powered)
X accountsx_search on your handle list
Subredditsweb_extract on the subreddit page, or a fetch script you build this
RSS feedsnot built in, see the bridge below you build this
↓ story clears the bar

3 · Draft desk: subagents

Three delegate_task calls per story, each spawning an isolated subagent. Hermes’ own user-stories doc shows this with a model per role.

Researcherweb_extract 4 to 6 primary sources → numbered claims-to-URLs list. Cheap fast model.
Summarizerdrafts with /house-style and SOUL.md, cites by claim number, scores itself against your rubric rubric is yours. Strongest model.
Fact-Checkergets only claims and URLs, fetches each source again with web_extract, marks each claim verified or unverified. A different model from the Summarizer.
↓ queue message

4 · Review: you

Drafts, sources, the fact-check table and the style score reach you through the hermes gateway daemon. You approve, edit in the thread, or spike. No CMS credentials exist anywhere in this system.

Gatewayhermes gateway: Telegram, Slack, Discord and about 20 others
Publish stepyou, by hand

Where the voice lives

~/.hermes/SOUL.md loads into every session, cron runs included, so it holds the short version: your reader, your register and three hard rules. The skill at ~/.hermes/skills/editorial/house-style/SKILL.md, called as /house-style, holds banned words, lede rules, sourcing, structure and the rubric, and loads only when the Summarizer drafts.

Stubborn pages

  1. web_extract first. It handles most article pages.
  2. browser_navigate and browser_snapshot (cloud Chromium, also metered) when a page is behind JavaScript or a cookie maze. browser_vision is the expensive last resort.
  3. Don’t get around paywalls or logins, and respect robots files and rate limits. Link and label a paywalled source instead.

RSS bridge (optional, you build it)

An RSS-to-webhook service or a small crontab script posts items to http://your-server:8644/webhooks/<route-name>. Routes live under platforms.webhook.extra (port 8644, shared secret, 30/min rate limit, max body size) and support HMAC, prompt templates and delivery targets, so a big item can wake the desk between runs. Budget an hour, and skip it until cron proves too slow.

State

“Since the last run” and “already covered” come from session_search over ~/.hermes/state.db (SQLite) plus a covered-stories list the cron prompt keeps. There’s no built-in vector store.

Disagree? Pin a note on it →