Areas & Floors
15 services: create, delete, rename, icons, voice aliases, floor levels, and device/entity assignment. Reference →
BRUH Power Tools are 65 admin services, registered by the brAIn integration under the brain.* domain, that manage the parts of Home Assistant which normally require clicking through Settings: areas, floors, labels, entities, devices, integrations, helpers, zones, persons, users, blueprints, statistics, dashboards, and repair issues.
They exist for one reason: so nothing ever has to touch /config/.storage by hand. Every call is validated before anything changes, requires admin rights, and runs through Home Assistant’s own registry APIs. Claude uses them when you ask it to reorganize your home; your automations and scripts can use them too — every service shows up in Developer Tools → Actions with full field pickers.
All of these work by voice, in the terminal, or in a run_task prompt:
shelly_1pm_xxxx lights to what they actually are.”Each service page below shows a 🗣️ line: a natural-language phrasing that works anywhere Claude listens.
Areas & Floors
15 services: create, delete, rename, icons, voice aliases, floor levels, and device/entity assignment. Reference →
Labels
6 services: create, rename, restyle, and delete labels; apply or remove them on entities, devices, and areas in one call. Reference →
Entities
9 services: rename, change entity IDs, enable/disable, hide/unhide, voice aliases and icons, and clean up orphaned registry entries (dry-run by default). Reference →
Devices & Integrations
9 services: rename and enable/disable devices (with parent-hub cascade); enable, disable, reload, or remove integrations; delete devices and sweep out orphaned ones. Reference →
Helpers
2 services: create and delete all 8 helper types — toggles, sliders, selects, timers, schedules — so an automation and its helpers arrive together. Reference →
Zones & Persons
8 services: create, move, and delete zones; create, rename, and delete persons and manage their device trackers. Reference →
Blueprints & Statistics
2 services: import blueprints from URLs; import or backfill long-term statistics. Reference →
Dashboards
7 services: create, edit, restore, and delete dashboards — automatic backup before every change — and register custom-card resources. Reference →
Users
4 services: create, delete, enable, and disable accounts — with a guard that makes locking yourself out impossible. Reference →
Diagnostics & Repairs
3 services: find references to dead entities; raise and clear custom repair issues. Reference →
Nothing is create-only. Every attribute a create_* service accepts has a service that changes it later, and every registry object that can be created can also be renamed and deleted — so a label created with create_label can be renamed, recoloured, and removed again without ever touching .storage. That isn’t a promise, it’s a test: tests/test_power_tools.py asserts the rename_* and delete_* families are complete, so a create_* service can’t ship without its counterparts. And an update_* writes only the fields you name — pass just color and the icon and description stay exactly as they were.
Power Tools are powerful by design, so the guardrails are built into the services themselves — not left to whoever calls them:
| Guardrail | What it means |
|---|---|
| Admin-gated | Calls from non-admin HA users are rejected. Claude, automations, and scripts run as admin. |
| Validated first | Every referenced area/floor/label/device/entity/integration id is checked before any change is applied. A typo fails loudly; it never half-applies. |
| Dry-run defaults | Both sweeps — delete_orphaned_entities and delete_orphaned_devices — only report unless you explicitly pass dry_run: false. find_orphaned_references never changes anything, ever. The targeted deletes (delete_device, delete_integration, delete_label, delete_floor, delete_person) and disable_integration also accept dry_run, but act by default: you named the thing, so it’s not a sweep. |
| Lockout-proof | disable_user refuses owner accounts and system-generated users. |
| Response data | Creation services return the new id (area_id, floor_id, label_id, …) so multi-step workflows chain without guessing. |
| Namespaced | Everything lives under brain.* — no core services are overridden, and running Spook alongside is perfectly fine. |
And the human stays in charge: Claude’s generated context instructs it to confirm with you before disabling devices, integrations, or users, and before deleting anything non-trivial.
In the terminal, Claude pairs Power Tools with two MCP tools:
get_registry — read-only listings of areas, floors, labels, devices, entities, integrations, and users, with exactly the ids the services need. The safe replacement for reading .storage files.call_service — invokes the brain.* service, with return_response to capture returned ids and reports.So “move the office lamp to the bedroom and label everything battery-powered” becomes: look up the ids, validate, call the services, report back. No file edits, no restarts, no guesswork. The same services power voice requests and automation tasks — and because they’re real HA services, your automations can call them with no Claude in the loop. Where this layer sits relative to the MCP and CLI tools: How Claude controls your home.
What Power Tools deliberately don’t do: add an integration (config flows are interactive, so Claude walks you to the screen and you click — removing one it can do), or touch credentials and auth internals.
They also don’t reach objects defined in YAML rather than through the UI, and that is a routing detail rather than a limit. A brain.* service edits the registry, and a YAML-defined dashboard, helper or person isn’t in the registry — so brAIn edits the file instead, validates it, and reloads the domain. It gets there either way; only the layer changes. See how the layers fit.
A well-organized registry also improves every analysis brAIn generates — it reads your areas, labels, and statistics.
Power Tools are adapted from Spook by Franck Nijhof (MIT licensed). brAIn renames, consolidates, and hardens that foundation for an AI-operated home: namespaced services, validation-first handlers, response data, and dry-run defaults. If you don’t run brAIn, use Spook directly — it’s excellent.