A private, fully-local chat for your Home Assistant dashboard.
Real-time messages, delete & admin moderation, emoji picker โ no cloud, no servers.
โ Stable release โ v2.2.2. Production-ready and installable via HACS. See the latest release and the changelog.
Unofficial community integration โ not affiliated with or endorsed by Home Assistant or Nabu Casa.
Home Assistant is the screen everyone in the household already looks at โ yet there's no built-in way to leave each other a quick message on the dashboard. Notifications are one-way; chat-style alternatives need cloud accounts.
HA Local Chat adds a real chat card that runs 100 % inside your own instance. Messages live in Home Assistant's storage, sync in real time over the event bus, and never touch an external server.
| Feature | What it does |
|---|---|
| ๐ฌ Real-time chat | Messages appear instantly on every open dashboard via the HA event bus |
| ๐พ Persistent history | The last 100 messages survive a restart (stored locally in .storage) |
| ๐ค Identity & avatars | Uses the logged-in HA user's name; coloured initials avatars |
| ๐๏ธ Delete & moderate | Delete your own messages; admins can delete any โ enforced server-side |
| ๐ Emoji picker | Built-in emoji panel, full UTF-8 โ great for wall tablets without an emoji keyboard |
| ๐ ๏ธ Visual editor | Set title and height in the UI; leave the title empty for a header-less card |
| ๐งฑ Real chat feel | Date separators (Today / Yesterday), multi-line input (Shift+Enter), smart auto-scroll |
| ๐จ Themed | Follows your Home Assistant light/dark theme automatically |
| ๐ One-click setup | Add it from the UI โ no YAML, no www copying, no manual Lovelace resource |
See ROADMAP.md for what's planned next.
- HACS โ Integrations โ โฎ (top right) โ Custom repositories
- Add
https://github.com/lupzn/ha-local-chat, category Integration - Install Home Assistant Local Chat, then restart Home Assistant
Manual alternative: copy
custom_components/ha_chatintoconfig/custom_components/, then restart.
Settings โ Devices & Services โ + Add Integration โ search โHome Assistant Local Chatโ โ Submit.
That's the only setup step. No configuration.yaml, no www copying, no Lovelace resource โ the chat card registers itself.
Edit a dashboard โ + Add Card โ search โLocal Chat Cardโ.
First time the card isn't listed? Hard-refresh the browser (Ctrl/Cmd + Shift + R) โ the frontend is cached โ then reopen the picker.
You can also add it manually (+ Add Card โ Manual):
type: custom:ha-chat-card
# title: Familien-Chat # optional โ omit for no header
# height: 320 # optional โ chat-area height in pxOpen the card's โฎ โ Edit to use the visual editor โ or set the same options in YAML:
| Option | Type | Default | Description |
|---|---|---|---|
title |
string | (none) | Header text โ leave empty for no header |
height |
number | 320 |
Height of the chat area, in px |
| Service | Description |
|---|---|
ha_chat.send_message |
Send a message (field message). Works from automations & scripts too. |
ha_chat.delete_message |
Delete a message by message_id. Succeeds only for the author or an admin. |
Example โ post a note when someone gets home:
automation:
- alias: "Chat: arrival note"
trigger:
- platform: state
entity_id: person.daniele
to: "home"
action:
- service: ha_chat.send_message
data:
message: "๐ {{ trigger.to_state.name }} is home."Hover a message and click the ๐ icon. You can always delete your own messages; administrators can delete anyone's. The check is enforced in the backend, so it can't be bypassed from the UI.
- 100 % local โ messages stay in your instance, no external servers, no telemetry.
- XSS-safe โ messages render as plain text, so no HTML/script injection is possible.
- Server-side moderation โ delete permission (author / admin) is verified in the backend.
Full policy: PRIVACY.md.
ha-local-chat/
โโโ custom_components/ha_chat/
โ โโโ __init__.py โ backend: services, WebSocket history, storage, frontend registration
โ โโโ config_flow.py โ one-click UI setup (no YAML)
โ โโโ const.py โ constants (events, limits, storage keys, URLs)
โ โโโ manifest.json
โ โโโ services.yaml โ send_message / delete_message
โ โโโ strings.json + translations/ โ setup dialog (en, de)
โ โโโ frontend/ha-chat-card.js โ Lovelace card (served + auto-registered)
โ โโโ brand/ โ icon.png, icon@2x.png (HA 2026.3+ local brand)
โโโ hacs.json ยท icon.png
โโโ README.md ยท ROADMAP.md ยท PRIVACY.md ยท CHANGELOG.md
โโโ LICENSE ยท NOTICE
- Backend (
__init__.py) registers two services and stores the last 100 messages in Home Assistant'sStore(.storage/ha_chat_history). - Sending fires a
ha_chat_messageevent on the event bus; every open card appends it instantly. - Deleting verifies author/admin server-side, then fires
ha_chat_message_deletedso all cards drop the message. - History is fetched point-to-point via the WebSocket command
ha_chat/get_messagesโ no global broadcast, so other dashboards don't flicker. - The card is served from the integration's
frontend/folder and registered (as a Lovelace resource + module URL) once Home Assistant has finished starting โ so it appears automatically, no manual resource needed.
Card not in the picker, or โCustom element doesn't exist: ha-chat-cardโ:
- Add the integration first. Settings โ Devices & Services โ it must be listed. This is a config-flow integration โ it only loads (and registers the card) once it has been added.
- Make sure you're on the latest version in HACS and restarted HA.
- Hard-refresh the browser (Ctrl/Cmd + Shift + R) โ the frontend is cached.
Quick checks:
- Open
http://YOUR-HA:8123/ha_chat_frontend/ha-chat-card.jsโ you should see JavaScript, not a 404. - The browser console should log
HA-LOCAL-CHAT vX.Y.Zwhen the card loads.
Manual fallback (always works): copy
custom_components/ha_chat/frontend/ha-chat-card.js to /config/www/, add a
dashboard resource (Settings โ Dashboards โ โฎ โ Resources) with URL
/local/ha-chat-card.js, type JavaScript Module, then hard-refresh.
If this saves your household some sticky notes, consider supporting development:
- โญ Star this repo on GitHub
- โฅ Donate via PayPal
- ๐ Report bugs in the Issues
- ๐ก Suggest features โ same place
Apache License 2.0 ยฉ LUPZN โ see LICENSE and NOTICE.
HA Local Chat is a third-party custom integration, not affiliated with, endorsed by, or sponsored by Home Assistant or Nabu Casa, Inc. "Home Assistant" is a trademark of Nabu Casa, Inc., used here only to identify the platform this integration runs on.