Why does Home Assistant rely on external URLs (e.g., https://brands.home-assistant.io/...) for integration logos instead of serving them locally?
This causes issues when there’s no Internet access (e.g., in isolated networks).
Local hosting would improve reliability, security, and support for offline setups. It also aligns better with Home Assistant’s philosophy of local control.
It would cause a pretty significant increase in install size having to package/bundle all of the logos.
It’s problematic for completely airgapped/offline installs, but I’m not sure its worth it for the relatively small number of installs that have 0 internet connectivity.
I get that we don’t not want all images locally, but installed integrations could at least store there own image(s).
Zigbee2MQTT has the capability to “localize” used images.
For some reason I also see hacs images comming from this domain,
no idea why this is.
Anyway, I would agree on the fact that I prefer local. But If size is an issue, I see all (most) images are PNG, if we would use SVN instead the size would be reduced.
This repository holds the icons and logos for all the brands Home Assistant supports.
This repository is used to generate a static website, serving these images for use in our Home Assistant projects. The goal is to have a centralized repository of brand images.
I think an approach similar to Zigbee2MQTT would work - the icon is downloaded when the integration is first setup, and after that it’s cached locally. On updates the cache is cleared and updated in case logos change or something like that.
This way only actually used images are stored.
Would it actually? I checked the brands repository and core_integrations and core_brands have a combined size of just shy of 150 MB. Unless I’m missing something, that should be everything that is actually used, right?
Surely most users can spare an additional 150 megabytes on their installation?
Agree on this topic - I had a problem with internet connection and went out to check status in HomeAssistant and when I’ve opened devices there was no logos on any integration. Really strange outlook.
But seriously.
Pulling logos from internet is questionable. In home assistant all integration present in distribution by default. Using this logic HA should keep only integrations we needed and pull required on demand.
Another problem - if for any reason URL would be changed and HA instance is not updated then user would lost all icons.
Devices can break, businesses can close but if I my device working I should not get non properly working software if something has gone wrong in the internet.
I find it controversial with HA core values that device should work without cloud services.
P.S. internet can be blocked on purpose due to “political reasons”.
I don’t like that it retrieves these from the internet, it’s seems unnecessary, and isn’t in keeping with my privacy-preserving ideals and also provides a form of tracking capability; I’m not saying HA actually log it or that they are doing anything with that, but the origin is included in the request which provides the address of our HA instance to the server we’re requesting the images from, meaning the integrations we’re using can be tracked to a HA server address; for those using LAN IPs that’s not a big deal, but for me it contains the public domain of my HA instance.
Anyway, I’m not here to complain, HA either will or won’t do anything about it, until then, I’ve written a quick and dirty python script i run in an Alpine container and have built the brand repo output, redirected brands.home-assistant.io to the container address on my LAN so any machines on my network will retrieve them from there rather than the HA site.
If anyone would like instructions (and assuming HA don’t have an issue with me sharing it here) I’m happy to put a quick write up together.
I would love to see some traction on this one. I don’t know if this is done this way on purpose or it has just grown this way. And I can imagine for some installs with a small SD card 150MB can have a huge impact.
I sometimes hit ctrl+F5 to update data and this actually vanishes the cache from brands.
Lately I notice a delay on those images sometimes. and this means a dependency on the site itself.
I don’t know the reasons for any choice so I cannot judge but for me it would be ideal if all needed files for daily operations are local.
Leveraging more modern file formats like .webp and .avif (instead of the currently used .png) would reduce the file-size immensely, making delivering logos and images with HA feasible.