Anam Assist

Give your home
a face.

Talk to an Anam avatar inside Home Assistant. Ask about your exposed devices, or opt in to Assist controls.

Anam handles the conversation and avatar. Home Assistant runs the supported tools through your signed-in browser.

Experimental · Unofficial · MIT licensed

Follow a request

Illustration

“What’s the temperature in the living room?”

  1. Your browser

    You speak or type into the Anam Assist panel.

  2. Anam cloud

    The conversation requests an available state-reading tool.

  3. Home Assistant

    Checks the session and reads Assist-exposed state.

Avatar response

“It’s 21 degrees in the living room.”

Illustrative data. This page doesn’t start a session, use your microphone, or connect to your home.

Tested with
Home Assistant 2026.10.3
Runs in
Your HA browser sidebar
Starts in
Read-only mode
Requires
Anam account + HTTPS

Start with a question.
Then try a light.

Manual installation is the verified route for this preview. Back up Home Assistant before adding a custom integration.

Download source ZIP
  1. Copy the integration

    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.

    config/
    └── custom_components/
        └── anam_assist/
            ├── manifest.json
            ├── __init__.py
            └── …

    The built browser bundle is included. You don’t need Node.js on your Home Assistant host.

  2. Restart and add Anam Assist

    Restart Home Assistant. Go to Settings → Devices & services → Add integration and search for Anam Assist.

  3. 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.

  4. 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.

  5. 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.

Read the security model

Limits enforced by the integration

  • Administrator access is required by the panel and server commands.
  • Read-only by default. Light control is an explicit choice for each session.
  • Bridge sessions are connection-bound and expire after 10 minutes.
  • Tool names, arguments and repeated call IDs are checked on the server.

Session video recording and stored transcripts are disabled. That does not mean zero provider retention. Local transcripts remain in page memory.

Light changes can trigger your existing automations. Ending a session cannot undo a command already sent to a device.

A working preview.
Still an experiment.

Evidence for this version, without a production-readiness claim.

View CI results

What’s been checked

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.

Report a bug
Anam Assist doesn’t appear in Add integration

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.

Read the setup guide