Dobby
The house elf for Home Assistant.
You built a smart home. Somehow, you became its remote control.
You know which dashboard to open. You know what the thermostat is called. You know which automation does what.
Everyone else asks you.
Dobby gives them someone else to ask.
- Maya
Set it to 70.
- Dobby
Which thermostat—the main thermostat or the downstairs thermostat?
- Greg
Send the vacuum out.
- Dobby
I told the robot vacuum to start cleaning.
Everyone at home talks to the same Dobby. It knows the devices the household chose to manage. It knows their names, their allowed actions, and the standing instructions people have set. It asks when a request could mean two things.
Home Assistant still runs the machinery. Dobby makes the house feel run.
A smart home that feels run
A family should not have to understand the automation system to benefit from it. Someone is cold. Someone wants the vacuum to run. Someone wants the same temperature every weekday morning. Someone wants to see why a schedule was held. Each request should feel like asking a competent person who lives there.
Dobby is not a private chat account attached to a few devices. It is one house-scoped agent. The shared thread keeps the household conversation. The activity record keeps what the house did. A phone, the kitchen tablet, and an outside agent are different doors into the same house.
Magic above. Machinery below.
Dobby uses a language model where language is ambiguous. It uses deterministic code where the house must be exact.
- you
- Dobby
- house tools
- device agents
- Home Assistant
- the physical house
Dobby's model cannot call a Home Assistant service. It can ask the downstairs thermostat agent to set a temperature. That agent knows which entity represents the thermostat, what the hardware supports, what the household allows, and which Home Assistant command to emit.
On the control path, the model speaks house. It gets capabilities, not plumbing.
Household rules outrank the model
thermostat_set_temperature("hall thermostat", 85) → refused: 85° is above the hall thermostat's maximum of 78° → no Home Assistant call
The device agent owns the range. The same refusal applies to the thread, a card, a schedule, and an outside agent.
A model can still misunderstand a person and choose a valid action on a valid device. Dobby does not pretend otherwise. The design limits the available devices and actions, validates every request, and turns unresolved ambiguity into a question.
Tell it once. The house remembers.
“Set the thermostat to 70” changes something now. “Set it to 70 at seven every weekday” teaches the house what to do later.
Dobby interprets the second request once. It stores a named schedule with a device, an action, a value, a time, and the person who asked. At seven, deterministic code reads that record and calls the device agent. The model does not reinterpret the sentence each morning.
What Dobby writes down
morning warmup weekday at 07:00 · downstairs thermostat · set_temperature 70° created by Greg · ready
Creating the schedule changes nothing now. When it fires, the activity record shows the stored instruction and its result.
One house. One Dobby.
Dobby belongs to the place, not to one person's account. Names give each request context and attribution. They are not permission tiers. The full transcript persists, and Dobby reasons over a recent working window from that shared record.
Today that shared place is the web thread. Ambient voice, faster local speech, local models where they help, richer household preferences, and fewer screens are the destination. Voice will not make Dobby intelligent. It will make Dobby disappear.
What Dobby is today
Dobby is early software that you run yourself. These parts work now:
- One persistent household thread with named speakers, a control on the house page for every device that takes a number or a word, and a full activity record.
- Named schedules that the model can author and deterministic code can fire without a model call.
- A household record that answers who changed a device, when something last happened, how many times, and which commands did not arrive.
- Standing rules that the household agrees to and manages on the house page, watching for a condition without changing a device.
- A curated house model with thirty-one household device types: thermostats, lights, speakers, locks, doorbells, cameras, shades, fans, and sensors, and the kitchen, laundry, water, and air appliances.
- Conversational adoption that discovers Home Assistant entities, proposes managed devices, and writes nothing until somebody confirms.
- One constrained tool set for Dobby's own model and outside agents over MCP.
The permanent-box deployment has not been walked yet. Ambient voice does not exist yet. The guide says so where those edges appear.
Contents
- 01Living with DobbyPicture the shared thread, the cards, the household record, and a weekday morning.
- 02Magic above. Machinery below.Why Dobby can interpret language without giving the model the keys to Home Assistant.
- 03Teach Dobby your houseDiscover, propose, and confirm the small household model Dobby manages.
- 04Bring Dobby homeCheck the wiring, start Dobby, and give the household one address.
- 05Let other agents speak houseGive another agent the house tools without giving it Home Assistant's plumbing.
- 06The house, written downThe explicit source of truth for managed devices, names, bindings, and limits.
- 07A place for Dobby to liveThe always-on hardware, still a proposal, and the installed service, walked on a stand-in.
- 08Build DobbyA testable house-facing contract, a local Home Assistant, and the development tools.
Hand-written HTML, served as committed. The source is the page.