Set it up
Eight stages, checked against v0.19.0 (July 2026). The order matters.
You need an always-on Linux or macOS box (the one running Home Assistant is ideal), Docker for the member sandboxes, a Telegram or WhatsApp account for the bot, and API access to a model provider (Nous Portal, OpenRouter, OpenAI or your own endpoint).
1 · Install
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Windows uses iex (irm https://hermes-agent.nousresearch.com/install.ps1),
but pick Linux for an always-on box. Run hermes once to finish
onboarding and connect a model provider. Config goes in
~/.hermes/config.yaml, secrets in ~/.hermes/.env.
2 · Create the household profile
hermes profile create household hermes --profile household
Each profile is a separate agent with its own config, model, credentials, toolsets, memory, skills and sessions. The Home Assistant token, the calendar and Notion MCP servers and the Portal browser tools go in this profile and no other.
3 · Start the gateway and pair the lead
hermes --profile household gateway # lead DMs the bot, receives a one-time code, then on the box: hermes pairing approve telegram <code> hermes gateway list
Connect Telegram or WhatsApp following the messaging docs. Both support group chats. Pairing is the security model: unknown senders get a one-time code, you approve it on the box, and revoking works the same way. The gateway runs as a systemd or launchd service, so it survives reboots. Then add the bot to the family group. Leave every allow-all option off. It’s checked before pairing and makes your bot public (trap 1).
4 · Create a member profile
hermes profile create sam-agent --clone-from household hermes --profile sam-agent gateway # Sam DMs the member bot, gets a code: hermes pairing approve telegram <code>
Then trim it in its own config:
- Delete credentials from its
.env:HASS_TOKENand the MCP and Portal keys. Cloning copies them. Ask the member agent to list its tools. You should see noha_*orbrowser_*. - Trim toolsets to roughly
messaging,memory,todo,file,skillsandsession_search. Dropcronjob(one scheduler per house),delegationandhomeassistant. - Set the terminal backend to
dockerin theterminalsection. The container (all capabilities dropped, no-new-privileges, 256-process cap, 512 MB tmpfs) is the boundary for anything a member can trigger.execute_codeon thelocalbackend isn’t sandboxed. - Set
approvals.modeand addapprovals.denyfnmatch globs for package managers, network tools and paths outside the vault. - Limit writes by pointing
HERMES_WRITE_SAFE_ROOTat the family vault (stage 6). Hermes already protects~/.ssh/and.envfiles.
Repeat for each member who wants a private line. People who only use the group chat, or aren’t paired at all, need no profile.
5 · Home Assistant
# in the household profile's .env: HASS_TOKEN=<long-lived access token> HASS_URL=http://homeassistant.local:8123
With HASS_TOKEN set, the
ha_list_entities, ha_get_state,
ha_list_services and ha_call_service tools switch on,
and the gateway can stream state changes. Limit those with
watch_domains or watch_entities under
platforms.homeassistant.extra and avoid watch_all.
cooldown_seconds defaults to 30. The
smart home plan covers the rest.
6 · The vault and MCP
mkdir -p ~/family-vault/members touch ~/family-vault/groceries.md
The vault is a plain folder that skills in both
profiles read and write (see architecture).
Add a Google Calendar MCP server and a Notion MCP server to the
household profile only, with credentials in its
.env. Good server options change monthly, so pick maintained ones
and expect to swap them.
7 · Check
hermes gateway list # expect: household + one per member profile hermes cron list # empty now; the prompts page fills it
You want at least two gateways, each paired with
the right people, and member profiles that can’t see house credentials.
The prompts add cron jobs through the agent’s
cronjob tool. They land in ~/.hermes/cron/ and you
manage them with hermes cron list/pause/resume/remove.
8 · Stop
Don’t configure more tonight. Let the morning brief fire once and tune from there. The prompts are the rest of the build.