Overview
One shared Home Assistant connection for your machine, served to local apps over a single socket.
Home Assistant Bridge keeps one Home Assistant WebSocket connection open per machine and serves it to local apps over a single Unix socket. Status bars, keyboard shortcuts, scripts and your own apps all share that one connection, instead of each opening their own.
# Toggle light.desk
ha-bridge light toggle desk
# Print sensor.office_temperature now and on every change, as JSON lines
# that status bars, widgets and scripts can read
ha-bridge watch sensor.office_temperature --bar-json
How it fits together
ha-bridge serveruns as a systemd user service. It connects to Home Assistant, caches every entity’s state and keeps it current.- Every other command is a small client. It connects to the bridge socket, makes one request and exits, or streams updates for watchers.
- Your own scripts and apps can use the bridge too:
- Run the same commands. Watchers print JSON lines to parse.
- From TypeScript, use
@timmo001/effect-ha-bridgeto talk to the socket directly. - From any other language, speak the bridge protocol.
Get started
| Page | Why |
|---|---|
| Install | Install the Arch package or a release build |
| Configuration | Set your Home Assistant URL and access token |
| Running the bridge | The user service, logs and upgrades |
| Actions | Control lights, switches, covers, climate, helpers, satellites and cameras |
| Reading entities | Read or stream entity state into scripts and status bars |
| Commands | Every command, alias and flag |
| Libraries | Use the bridge or Home Assistant from your own Effect app |
| Migrating from Go Automate | Command, service and config changes |
Machine-readable docs
| URL | Use |
|---|---|
| https://ha-bridge.timmo.dev/llms.txt | Compact page index |
| https://ha-bridge.timmo.dev/llms-full.txt | Full docs bundle |
| https://ha-bridge.timmo.dev/mcp | Hosted MCP (search, page and navigation) |
/{route}.md |
One page as Markdown |