Agent stack build plans · № 2 · Hermes community manager

Architecture

One daemon, one brain, markdown for memory — and three skills you add to make it a community manager rather than a chatbot in three rooms.

Discordserver + DMs
Slackworkspace
WhatsAppgroup + DMs
↓  messages in, replies out  ↓
hermes gatewayone background daemon serves every platform · at the door: DM pairing + allowlists (binary — in or out)
agent coreyour model via Nous Portal, OpenRouter, OpenAI, or your own endpoint · persona in ~/.hermes/SOUL.md
↓  reads and writes  ↓
MemoryMEMORY.md (2,200-char cap) + USER.md (1,375) injected into the system prompt · session_search over SQLite FTS5 at ~/.hermes/state.db
Skills~/.hermes/skills/<category>/<name>/SKILL.md + scripts/ · the agent edits them via skill_manage, gated by skills.write_approval
Cronbuilt-in scheduler, jobs in ~/.hermes/cron/ · natural-language schedules · delivers to any connected platform
Toolsetsmessaging, discord, discord_admin, terminal, memory, session_search, cronjob, skills
↓  the community-manager layer  ↓
community-notes skill you build thisone markdown file per member under the skill’s references/ — the agent maintains them via skill_manage
changelog skill you build thisscripts/ that fetch your repo’s releases, so answers cite real versions
weekly-shoutouts skill + cron you build thisproposes rewards to you; on approval, discord_admin assigns the role
external memory provider optionalMem0, Honcho, and friends plug in if you want semantic recall beyond keyword FTS

The three flows

Answering

A member posts in any of the three platforms → the gateway checks the door (pairing/allowlist) → the agent answers, pulling from session_search for “have we discussed this before” and from the changelog skill for facts. One brain, so the Slack answer knows about the Discord thread.

Remembering

Built-in memory is deliberately small: two capped markdown files injected into every system prompt, plus full-text search over past sessions. That is not a vector store and it is not per-member — so the plan treats MEMORY.md as an index (“member notes live in the community-notes skill”) and puts the actual dossiers in per-member files the agent maintains itself. Growth without the cap fighting you.

Rewarding

Friday cron → the agent assembles evidence from session search and the notes files → DMs you a proposal list → you approve → the shoutouts skill posts and discord_admin assigns roles. Hermes has no rewards feature; this whole flow is the cron scheduler plus one skill you commission in the prompts. Slack and WhatsApp get the announcement message; role mechanics are Discord-only glue.

Why not one bot per platform?

Because the value is in the joins. “petra asked this on Discord last week” answering a Slack question, one notes file per human regardless of where they typed, one reward queue instead of three. Separate bots give you three amnesiacs; the gateway gives you one employee with three doors. The price of that design is a single blast radius — which is why setup spends most of its time on the locks.

Disagree? Pin a note on it →