What Home Assistant is for
The Home Assistant plugin, maintained by Nous Research and installed from the plugin catalog, does two jobs. It adds a toolset that lets the agent list entities, read their state, list services and call them, for example turning on a light. It also connects to Home Assistant as a gateway platform, so state changes on entities you choose to watch can reach the agent, and replies come back as persistent notifications. It suits home automation, presence-based routines and status questions. Risky service domains such as shell_command and python_script are blocked by design. This is event ingestion plus notifications and device tools, not a generic phone messenger. These notes describe the official docs; the catalog plugin implementation is maintained in a separate repository.
What you need
- A running Home Assistant instance and a Long-Lived Access Token (short-lived session tokens do not work)
- The homeassistant plugin installed for each Hermes profile that needs it
- Network access from Hermes to the Home Assistant URL
Set it up
- 1
Run
hermes plugins install homeassistant(orhermes -p <profile> plugins install homeassistantfor another profile) - 2
In Home Assistant, open your profile and create a Long-Lived Access Token
- 3
Add HASS_TOKEN and, if not the default http://homeassistant.local:8123, HASS_URL to
~/.hermes/.env - 4
Set platforms.homeassistant.extra.watch_domains or watch_entities in
config.yamlif you want state-change events, then starthermes gateway - 5
Set HASS_HOME_CHANNEL for a bare
deliver=homeassistanttarget, or usehomeassistant:<notify target>. Keep watch filters for inbound events; service credentials differ from human-message allowlists.
Check it works
hermes plugins listshows the plugin as installed and enabled- Run
curl -H "Authorization: Bearer <token>" <url>/api/and expect an "API running" message - After
hermes gatewaystarts, Home Assistant appears as a connected platform
Limits and failure points
- No events are forwarded unless watch_domains, watch_entities or watch_all is set; watch_all is not recommended
- Home Assistant events bypass user allowlists and pairing
- Environment changes only apply after restarting the gateway; a 401 error usually means the wrong token type or URL
Messaging setup
Primary sources
- Hermes Agent docs: Home Assistant (opens in a new tab)
- Hermes Agent docs: Plugins (opens in a new tab)
- Official Hermes Agent source: website/docs/user-guide/messaging/homeassistant.md (opens in a new tab)
- Official Hermes Agent source: website/docs/user-guide/messaging/homeassistant.md (opens in a new tab)
- Official Hermes Agent source: website/docs/user-guide/messaging/homeassistant.md (opens in a new tab)
- Official Hermes Agent source: website/docs/user-guide/messaging/homeassistant.md (opens in a new tab)
Spotted something wrong or out of date? Tell us on X at @HermesWatcher (opens in a new tab) and we will fix it.