Hermes on its own is a chat loop with file and terminal tools. The value shows up when you wire it to things: a place to run code safely, a chat app you already use, a schedule, and the wider ecosystem of skills other people have published. None of it needs a plugin SDK.
01. Where it runs code
seven backends, Docker for anything untrusted
Every command Hermes runs goes through a terminal backend. There are seven, and you pick per profile:
| Backend | Use it for |
|---|---|
local | your own machine, full access, the default |
docker | a sandboxed container, code cannot touch the host |
ssh | a remote box you own |
daytona, modal, vercel-sandbox | ephemeral cloud sandboxes for throwaway work |
singularity | HPC and research clusters |
hermes config set terminal.backend dockerThe rule: if the agent is going to run code you did not write, or you have opened it to a messaging channel, put it in Docker. A container that gets wrecked is a rebuild, not an incident.
02. The messaging gateways
one gateway process, many channels
Hermes listens on Telegram, Discord, Slack, WhatsApp, Signal, Email, Microsoft Teams and Home Assistant at the same time, from a single gateway process. Set it up with one wizard:
hermes gateway setup # pick a platform, paste a bot token, set the allowlist
hermes gateway status # confirm it is connected and runningTwo things to get right. The allowlist: a bot with terminal access that anyone can message is a liability, so never open it to everyone. And the home channel: run /sethome in the channel where you want scheduled results to land, or they go back to wherever the job was created.
03. Scheduling a job with cron
built in, no external scheduler
Hermes has its own cron. You describe the task in plain language; the schedule itself is cron syntax or an interval, not "every morning."
/cron add "<schedule>" "<prompt>" --name "<job>" --deliver <target>
# or from the shell:
hermes cron create "<schedule>" "<prompt>" --name "<job>" --deliver <target>| Field | What goes in it |
|---|---|
| schedule | a delay (30m), an interval (every 2h), a cron expression (0 9 * * *), or an ISO timestamp |
| prompt | the task, in plain language, fully self-contained |
| deliver | origin, local, telegram, discord, slack, or a chat id |
/cron list # every job
/cron run <id> # run it now, to test
/cron edit <id> --schedule "every 4h"
/cron remove <id>Part of the Hermes set
This is the integrations deep dive. Read the overview for the shape, the setup guide to install, the skill-loop guide for how it learns.
- Overview
- Setup and first run
- The skill loop
- Integrations and automations
- Where it pays off
04. The self-contained-prompt rule
a cron job has amnesia
This is the one that catches everyone. A cron job runs in a fresh session with no memory of the chat you created it in. It does not know your name, your project paths, your preferences, or what "the usual report" means. Every URL, every instruction, every bit of context has to be in the prompt itself.
Test with /cron run <id> before you trust it. If it asks a clarifying question or guesses wrong, the prompt is missing something. Fix it and run again.
A useful pattern for monitoring jobs: tell the agent to reply with [SILENT] when nothing has changed. That suppresses the notification, so you only hear from the job when it actually has something.
05. A daily briefing, end to end
the docs' own example, made concrete
A morning briefing job pulls a few sources, formats them, and drops one message in your chat before you open your laptop.
/cron add "0 7 * * *" \
"Build my morning briefing. Include: today's weather for Chandigarh;
my Google Calendar events for today; the top 5 Hacker News posts
tagged AI; my unread GitHub notifications. Format as a single short
message with four headed sections. If a source fails, note it and
carry on." \
--name "Morning briefing" --deliver telegramIt combines web search, the calendar tool, scheduling, and messaging delivery, and none of it is code. The same shape covers a weekly team summary, an hourly price check, or an overnight batch job.
06. Posting to X without the paid API
a browser-driven MCP server
X's official API starts at 100 dollars a month, which is a lot for "post a tweet." The community answer is an MCP server that drives a logged-in browser session instead, so Hermes can post and read X for the cost of nothing. Setup is a few minutes: add the server, authorise it once against your account.
Treat any browser-automation integration the way you would a scraper. It works against the real site, it can break when the site changes, and heavy volume on one account draws attention. Fine for your own posting cadence, not for a firehose.
07. MCP servers and installed skills
two ways to add capability
Skills are markdown procedures Hermes loads on demand. You can install ones other people wrote from a few sources:
hermes skills install official/security/1password
hermes skills install openai/skills/k8s
hermes skills install https://example.com/SKILL.md --name my-skillSources include a built-in official tap, Vercel's public directory, direct GitHub repos, any site serving /.well-known/skills/index.json, and plain URLs. Every install is security-scanned. MCP servers are the other route: they give the agent live tools rather than instructions, and the same install path handles them. Composio, for example, exposes hundreds of SaaS APIs through one MCP connection.
08. The community directory
125-plus projects, maturity-tagged
The independent awesome-hermes-agent list is the map of the ecosystem. Worth knowing what is in it:
- Memory backends that outlast the bounded default: hindsight, mem0, Mnemosyne, screenpipe.
- Web surfaces if you do not want to live in a terminal: hermes-workspace, Hermes Studio, mission-control.
- Deployment recipes: a minimal Docker sandbox, Nix builds, fleet control planes.
- Skills for real jobs: incident response, multi-agent orchestration, Microsoft 365.
Every entry is tagged production, beta or experimental, so you can tell what is safe to lean on. Start with one memory backend and one surface, not ten. The where-it-pays-off guide is the last one in the set.
Sources and further reading
- Automate with cron and the daily briefing bot guide. The
/cronsyntax, the delivery targets and the briefing example come from these. - The docs for the seven terminal backends and the
hermes gateway setupwizard. - awesome-hermes-agent, the 125-plus project community directory, every entry tagged production, beta or experimental.
- agentskills.io, the standard behind
hermes skills install, and the Nous Discord archive of real community builds. - One community write-up on posting to X from Hermes without the paid API.
// Free newsletter
I send out guides like this every week
Real setups, real sources, no hype. Drop your email and I'll send you the next one.