HA Alias Manager — Bulk manage entity aliases and Assist exposure via Lovelace Card

HA Alias Manager — Bulk manage entity aliases and Assist exposure via Lovelace Card

The problem

If you use Home Assistant's voice assistant (Assist) with a large number of entities, you know the pain: to add an alias or toggle Assist exposure, you have to navigate to each entity individually, click the settings icon, and make your changes one by one. With 200, 500, or 1800+ entities, this is extremely time-consuming.

I built a custom Lovelace card that solves this with a spreadsheet-like interface.


What it does

HA Alias Manager gives you a full table view of all your entities where you can:

  • Edit aliases directly in the table (comma-separated)

  • Toggle Assist exposure with a single click

  • Filter by domain, area, Assist status, or free-text search

  • Save all changes at once with the bulk save button

  • Reload the entity list without refreshing the page

![Screenshot showing the HA Alias Manager with a table of entities, alias input fields, and Assist toggles]


How it works

The card uses the Home Assistant WebSocket API directly via this._hass.callWS():

  • Entity list: config/entity_registry/list for basic data

  • Aliases: config/entity_registry/get per entity (lazy-loaded, 50 per page)

  • Save aliases: config/entity_registry/update

  • Toggle Assist: homeassistant/expose_entity with assistants: ['conversation']

Aliases are lazy-loaded per page (50 at a time) to avoid flooding the WebSocket with thousands of requests at startup. The card caches already-loaded pages so navigating back is instant.


:rocket: Installation

Option A: HACS (Recommended)

Note: Currently in the official HACS inclusion process.

  1. Open HACS in your Home Assistant instance.
  2. Search for HA Alias Manager.
  3. Click Download.
  4. Refresh your browser.
  5. Add the card to your dashboard via the Card Picker.

Option B: HACS (Custom Repository)

Use this method to install it immediately before the official approval:

  1. Navigate to HACSFrontend.
  2. Click the three dots in the top right corner and select Custom repositories.
  3. Paste the URL: https://github.com/andreasbloch/HA-Alias-Manager
  4. Select Dashboard as the category and click Add.
  5. You can now find and install the HA Alias Manager via the HACS search.
  6. Add the card to your dashboard via the Card Picker.

Option C: Manual Installation

  1. Download the ha-alias-manager.js file from this repository.
  2. Copy the file into your Home Assistant config folder: /config/www/.
  3. Go to SettingsDashboardsResources.
  4. Add a new resource with the following settings:

URL: /local/ha-alias-manager.js

Type: JavaScript Module

  1. Hard-refresh browser (Ctrl+Shift+R)
  2. Add card to dashboard:

type: custom:ha-alias-manager

:light_bulb: How to use

Tip: Since this tool provides a comprehensive table view, it works best when used in Panel Mode (Dashboard → Edit View → View Type: Panel).


GitHub

https://github.com/andreasbloch/HA-Alias-Manager


Background / motivation

I'm building a smart home voice assistant setup using Home Assistant with a custom AI pipeline:

  • Wake word detection (Hey Jarvis, local on HA Voice PE - ESP32)

  • Voxtral STT (Mistral Cloud API)

  • Mistral ministral-8b as conversation agent

  • ElevenLabs TTS

With 1800+ entities in my setup, managing aliases through the default UI was simply not feasible. I needed to carefully curate which entities are exposed to the AI and add meaningful aliases so the voice assistant can understand natural language commands in German.

The HA Alias Manager saved me hours of clicking.


Known limitations

  • No bulk Assist toggle for multiple selected entities

  • Pagination is fixed at 50 per page


Feedback welcome

This is my first published Lovelace card. Any feedback, bug reports, or pull requests are very welcome!

Tested on Home Assistant 2026.4.1

Just noticed that there was no screenshot.

Update: v1.1.1 released — Localization support :globe_showing_europe_africa:

HA Alias Manager just got its first feature update!

HACS support

What’s new in v1.1.1

The card is now localized in 10 languages:

English, German, French, Spanish, Italian, Dutch, Polish, Portuguese, Czech, and Swedish.

The language is detected automatically from your Home Assistant user profile — no configuration needed. If you want to force a specific language, you can override it in the card config:

type: custom:ha-alias-manager
language: en

Regional codes are normalized automatically (de-DEde, pt-BRpt), and anything unknown falls back to English, so the card never breaks regardless of your locale.

Under the hood

  • Translations live in separate translations/<lang>.json files and are loaded on demand relative to the card’s script URL
  • Loaded languages are cached across card instances — one fetch per language, ever
  • An English dictionary is embedded in the card itself as a fallback, so even a missing or unreachable translation file just means English UI instead of a broken card

Important for existing installations

Distribution has switched to zip releases: the release now ships ha-alias-manager.zip containing the card plus the translations/ folder.

  • HACS users: just update as usual — HACS handles the zip automatically
  • Manual installs: extract the zip into config/www/ so that translations/ sits next to ha-alias-manager.js. The resource must be registered as JavaScript Module (as before). Then hard-refresh (Ctrl+Shift+R) — the browser console should show HA-ALIAS-MANAGER v1.1.0

Your language is missing?

Adding a translation is a ~5 minute job: copy translations/en.json, translate the 26 values (keep keys and {placeholders} unchanged), add the language code to the SUPPORTED_LANGUAGES array, open a PR. Details in the README.

Translation PRs are very welcome!

Links

As always — feedback, bug reports, and PRs welcome!

Update v1.2.0 — Bulk Assist Toggle :tada:

The most requested feature is here: you can now toggle Assist exposure for many entities at once.

If you’ve ever read the WTH threads about this (“you can un-expose 500 entities at once, but you have to add them back ONE AT A TIME”) — this release is for you.

How it works

  • The row checkboxes (previously decorative, I admit it :grinning_face_with_smiling_eyes:) are now functional
  • The header checkbox selects all filtered entities across all pages — so the workflow is exactly what you’d expect: filter by domain light, tick the header checkbox, hit Assist ON, done
  • Selection survives page and filter changes, so you can combine entities from different filters: select all lights, then switch the filter to switch and add those too
  • A bulk action bar appears once something is selected: Assist ON / Assist OFF / Clear selection

Safety by design

Bulk actions are staged, not written immediately — just like single edits. The save button shows exactly how many changes you’re about to make, and nothing touches the entity registry until you press Save. So an accidental “un-expose 1,800 entities” is one click away from being undone instead of one click away from ruining your evening.

Entities already in the target state produce no change, and saving still happens with a single WebSocket call per direction (homeassistant/expose_entity is bulk-capable), so this is fast even with large selections. Tested on my own instance with ~1,800 entities.

Also in this release

  • All 6 new UI strings translated in all 10 supported languages
  • Reload now clears the current selection

Updating

Update via HACS as usual (release ships as zip with the card + translations). Manual installs: copy ha-alias-manager.js and the translations/ folder into /config/www/. Don’t forget the hard refresh (Ctrl+Shift+R) afterwards.

Full changelog: HA-Alias-Manager/CHANGELOG.md at 84ffa02618b2309a5c50a636c2acb06436456c2b · andreasbloch/HA-Alias-Manager · GitHub

Next on the roadmap: export/import of aliases (backup your aliases before replacing devices, or migrate them to a new instance). Feedback and feature requests welcome — here or on GitHub!

Update v1.3.0 — Export & Import your aliases :tada:

If you’ve ever replaced a Z-Wave stick and re-included 100 devices, or migrated to a fresh HA instance, you know the pain: all your carefully curated aliases live only in the entity registry, and there’s no way to get them out. Until now.

Export

One click downloads a JSON file with every alias and the Assist exposure state of every entity. Keep it with your backups, commit it to your config repo, whatever works for you. The file is plain, readable JSON — you can inspect and edit it by hand.

Import

Load an export file and the card diffs it against your current registry:

  • Differences are staged as pending changes — nothing is written until you press Save. You see exactly how many alias and Assist changes are about to happen, can review them in the table, and back out anytime
  • Entities that don’t exist anymore (or not yet) are counted and skipped, with a summary report
  • Entities that already match produce no change at all

So a typical device replacement becomes: export → replace device → fix the entity_ids if they changed → import → review → save. Re-importing an unchanged export stages exactly 0 changes — that’s your roundtrip sanity check.

Also new in 1.3.0

  • Filter “Exposed without alias” — finds entities that are exposed to Assist but have no alias yet. These are the ones your voice assistant is most likely to misunderstand
  • Exposure counter in the status line (“1823 entities · 412 exposed to Assist”). If you run an LLM-based assistant, keeping that number small keeps your context window (and your token bill) small — now you can actually see it
  • Export/import load all aliases in parallel chunks with a progress indicator — seconds instead of minutes, tested on my ~1,800-entity instance
  • All new UI strings translated in all 10 supported languages

Heads-up if your card broke recently

v1.1.1 and v1.2.x had a packaging bug (“Custom element doesn’t exist” after updating — the Lovelace resource pointed at a zip archive instead of the js file). This was fixed in v1.2.2 with a switch to the standard dist/ layout. If you’re still seeing the error: redownload the latest version via HACS, and check that your resource entry points to /hacsfiles/HA-Alias-Manager/ha-alias-manager.js. Sorry for the hassle, and thanks to everyone who reported it.

Updating

Update via HACS as usual. Manual installs: copy the contents of dist/ (the js and the translations/ folder) into /config/www/. Hard refresh (Ctrl+Shift+R) afterwards.

Full changelog: HA-Alias-Manager/CHANGELOG.md at c3d51e97284fe0a99e612e2b397eaba94498b121 · andreasbloch/HA-Alias-Manager · GitHub

Feedback and feature requests welcome — here or on GitHub. Next candidates on the roadmap: multi-assistant support (Alexa / Google exposure alongside Assist) and column sorting. Let me know what would help you most!