two¢ents

The traps

Seven ways this build goes wrong.

1 · The admin token

A token from your own HA account is probably an admin token, which lets a language model reconfigure Home Assistant. HA sets the token’s rights, and Hermes can’t shrink them. Use a non-admin user; it takes five minutes.

2 · watch_all and a motion sensor

Motion sensors, plugs reporting watts and a weather feed updating every minute add up to thousands of model turns a day, each carrying your prompt and memory. That’s costly on a frontier model and noisy on any model, and it bloats what the distiller has to search.

Use a short watch_domains list, ignore_entities, a longer cooldown and a cheap model. Widen one domain at a time and watch the turn count in prompt 4’s report.

3 · The wrong lamp

With light.lamp, light.living_room_lamp and light.living_room_lamp_2, “turn off the lamp” is a coin toss. The call succeeds on the wrong entity, usually the reading lamp mid-chapter. The house map’s ask-don’t-guess rule (prompt 1) and ha_get_state checks fix it.

4 · Memory as a database

Let the agent log events in MEMORY.md and it’s full by Thursday, with each new fact pushing out a rule. History belongs in ~/.hermes/state.db, and only the nightly job promotes anything into memory. A hub that needs more than about 20 rules usually needs better rules.

5 · Expecting approvals.deny to protect locks

approvals.deny can’t match arguments, so there’s no glob for “except on lock.*”. If your front-door safety depends on an argument-level rule you invented, nothing is protecting the door. Use manual or smart approvals, and keep locks and the alarm out of watch_domains.

6 · Tool names from AI answers

Prompts using list_entities, read_state or call_services make the agent guess what you meant on every run. The real names are ha_list_entities, ha_get_state, ha_list_services and ha_call_service. Hermes also has no built-in vector memory, and the things it writes for itself are skills, which some guides wrongly call “plugins”.

7 · Everyone you pair controls the house

Access is all or nothing. A visiting cousin you pair as a joke gets the same four tools you have. Different access levels need separate profiles (hermes profile create teen --clone), each with its own toolsets, deny lists and gateway, which is how the family assistant plan works. Until then, pair no one you wouldn’t hand the thermostat.

Disagree? Pin a note on it →