3 jobs, one per editionArchitecture
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.
Telegram / Slack thread2 · Watch metered · Nous Portal
Every web tool goes through the paid Nous Portal gateway. Each run checks the watchlist since the last run and applies your bar.
web_search → web_extract (Firecrawl-powered)x_search on your handle listweb_extract on the subreddit page, or a fetch script you build this3 · Draft desk: subagents metered + LLM tokens ×3
Three delegate_task calls per story, each spawning an isolated subagent. Hermes’ own user-stories doc shows this with a model per role.
web_extract 4 to 6 primary sources → numbered claims-to-URLs list. Cheap fast model./house-style and SOUL.md, cites by claim number, scores itself against your rubric rubric is yours. Strongest model.web_extract, marks each claim verified or unverified. A different model from the Summarizer.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.
hermes gateway: Telegram, Slack, Discord and about 20 othersWhere 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
web_extractfirst. It handles most article pages.browser_navigateandbrowser_snapshot(cloud Chromium, also metered) when a page is behind JavaScript or a cookie maze.browser_visionis the expensive last resort.- 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.