Dobby·Guide github.com/mhyrr/dobby

Teach Dobby your house

Home Assistant may know about hundreds of entities. Dobby acts on only the things the household deliberately chose to manage.

Dobby's working house should be smaller, cleaner, and closer to household language than Home Assistant's full entity registry.

Describe. Discover. Propose. Confirm.

Start with a question:

Discovery can inspect recognized Home Assistant entities that are not yet managed. It does not dump every entity into the normal conversation. The proposal translates technical entities into a household device with a stable id, name, aliases, type, and exact binding map.

Discovery does not reach every type. The dishwasher, oven, cooktop, microwave, refrigerator, wine cooler, ice maker, coffee maker, washer, dryer, air purifier, and range hood go into the house file by hand, because a Home Assistant entity name does not say which appliance it belongs to. Each entry names its bindings, and Household appliances shows them by type. The water heater, humidifier, and dehumidifier are proposed like any other device.

Proposed is not done

Dobby separates suggesting a house change from making it.

First comes a proposal. Dobby checks that the entity exists, no managed device already uses it, and the new id is free. It returns the exact entry it would write and gives the proposal a number. Nothing changes.

Then comes a confirmation. Somebody confirms that number. The entry goes into the house file, and Dobby restarts the managed devices with the new one included.

What you should see before confirmation

{"applied":false,"proposal":{"id":1,"device":"light:kitchen","name":"kitchen lights", "type":"light","status":"proposed","proposed_by":"Maya's walkthrough", "entry":{"id":"light:kitchen","type":"light","name":"kitchen lights", "aliases":["the kitchen light"],"bindings":{"light":"light.kitchen_lights"}}}}

applied: false, a proposal number, and the exact entry. Dobby says “proposed” until confirmation succeeds. It says “added” only after.

The house can grow in one breath

You do not have to name each device in a separate turn. Say: “We have the downstairs thermostat, these four lights, the robot vacuum, and the printer. They are all in Home Assistant.”

Dobby asks discovery once, matches the recognized devices, and presents one numbered set of proposals. Anything you named that Home Assistant does not show stays unmatched. One clear confirmation can apply the proposed set. However many entries it applies, the managed house restarts once.

You can describe the house loosely. Only what somebody confirms gets written.

Four doors, one house model

  1. Conversation. Discover, propose, and confirm in the shared thread.
  2. The cards. On /house, edit or remove a card and add a device from a form that asks only what its type needs.
  3. The house file. Edit home.yaml and restart Dobby.
  4. An outside agent. Use the same discovery, proposal, and confirmation tools over MCP. See Let other agents speak house.

All four paths end in the same explicit house model. Forms, conversation, and MCP use the same writer. Invalid entries fail before the managed house restarts.

The moment after

A new device reads NOT KNOWN for a moment. Dobby has taken on the device but has not yet received its state from Home Assistant. The first sync fills it in.

What you should see

kitchen lightsNot known
kitchen lights71%Set

The same row a second or two apart.

Removing one

remove on a card asks once, in place: Remove kitchen lights? with remove and keep it. Then the entry leaves the file and the managed house restarts without it. There is no undo. Add it again if you change your mind.