Download and extract the repository. Copy the entire
custom_components/anam_assist folder into your
Home Assistant configuration’s
custom_components directory. Create that
directory if needed.
The built browser bundle is included. You don’t need Node.js
on your Home Assistant host.
Restart and add Anam Assist
Restart Home Assistant. Go to
Settings → Devices & services → Add integration
and search for Anam Assist.
Set up your avatar
Enter your Anam API key in Home Assistant. Add a published
persona ID, or leave it blank for the public Cara example. The
saved persona is not modified: this integration supplies its
own prompt and tools for each session.
Portrait is the default, at 768 × 1152. Use a portrait-capable
Cara 4 avatar, or choose landscape in
Reconfigure for an older avatar.
Try a read-only session
Review the entities you expose to Assist. Open
Anam Assist in the sidebar, optionally select
a screen location, and start a conversation. Ask about an
exposed sensor. Turn off Use microphone to
test by typing.
Opt in to a light test
End the session, choose Lights only under Home
controls,
and start again. Ask for one exposed light by name. Check the
physical result, then end the session when you’re done.
Installing through HACS?
Repository metadata is included, but the full HACS
install/update/removal lifecycle has not been validated. This
project is not in the default HACS catalog. Use manual
installation for the verified path.
If you want to test the custom-repository route, add
https://github.com/Smidge/anam-assist with type
Integration, following the
HACS custom repository guide. This is a custom integration, not a Supervisor app/add-on or
a Lovelace card.
Anam talks. Home Assistant acts.
The browser connects the two. Your existing Assist pipelines stay
in place; this adds a separate conversation panel using Home
Assistant’s Assist LLM API.
Conversation & media
The browser uses the Anam JavaScript SDK for microphone audio,
typed input and avatar playback. Anam handles speech
recognition, the conversation model, voice and video.
Home Assistant creates a short-lived session token. The Anam API
key stays in the server’s config entry and normal HA backups.
Tool calls & results
Anam requests a client tool. The browser forwards it over Home
Assistant’s authenticated WebSocket connection. The server
checks the session, tool allowlist and arguments, then invokes
the Assist API.
The result goes back to Anam before it answers. There is no
public webhook, separate long-lived HA token, or HA server media
relay.
Current preview capabilities
Task
Support
Read exposed state and live context
Available in read-only sessions
Switch lights and set brightness
Opt in before each session; exposed lights only
Media, fans, locks, covers, climate, switches, scripts and
scenes
Available through Assist controls when Home Assistant supplies
the tools. Review entity exposure first; actions have no separate
confirmation. Exposed scripts and scenes may affect other devices.
Broader physical-device testing is still pending.
Authenticated kiosk browser
Can open the panel; unattended recovery is not implemented
Wake words, casting and RTSP
Not supported
Know what leaves your home.
This is a cloud-connected conversation. Anam receives audio or
typed messages, Assist prompt context and tool results.
Live context can include all exposed entity states, even if you ask about just one sensor. Review Assist exposure
before connecting.
57 backend tests and 40 Chromium/WebKit browser tests passed,
alongside lint, a reproducible browser build and a runtime
dependency audit.
Live testing on Home Assistant 2026.10.3 verified a portrait
stream, a temperature query, and an exposed light turning off and
back on. The owner confirmed both physical transitions. The final
state matched the starting brightness.
What’s still open
Full clean-install HACS lifecycle testing, broader HA
compatibility, and microphone/audio checks on physical mobile
browsers. The live light check used typed commands. There has been
no independent security audit.
A little help getting connected.
For bugs, include your HA version and a synthetic reproduction.
Keep API keys, home-state payloads and real transcripts out of
public issues.
Check that the folder is exactly
custom_components/anam_assist inside your HA
configuration directory, with
manifest.json directly inside it. Restart Home
Assistant and refresh the browser.
The microphone or video won’t start
Open Home Assistant over HTTPS and allow microphone access when
you want to speak. Try a typed session with
Use microphone unchecked. If the browser blocks
playback, use the panel’s playback control.
For an older avatar, try landscape through the integration’s
Reconfigure action. Check the Anam account’s streaming access
and usage allowance.
The assistant can’t find my device
Check that the entity is exposed to Assist and use its exact
name. Read-only sessions cannot change devices. Even with light
control enabled, unsupported device types remain unavailable.
A tool timed out or the browser disconnected
An action may have completed even if its result timed out. Check
the device’s state before asking again. After a disconnect,
start a new conversation; an old session cannot transfer control
to a new connection.
How do I update or remove it?
End active sessions, back up your configuration, replace the
whole component, restart Home Assistant and refresh the browser.
Update frontend and backend together.
To remove it, delete the integration through
Devices & services before removing its
folder. Your existing Assist pipelines remain unchanged.
Is this fully local or free to run?
No. The integration’s source is MIT licensed, but Anam supplies
the cloud conversation and media. You need an Anam account and
streaming usage. See Anam for
current account options.
Try it with one question.
Start read-only, keep exposure deliberate, and tell us what you
find.