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.
This repository provides two main folders to store images in:
core_integrations
: Contains images for integrations bundled with the
Home Assistant Core.custom_integrations
: Contains images for custom integrations
(custom components).Each of these two main folders contain domain folders. Each domain folder is
named to the integration domain
and must match the domain set in the
integration manifest.json
file.
A domain folder can contain four files:
icon.png
: A square avatar-like icon, representing the brand or product for that domain.logo.png
: The logo of the brand or product for that domain.icon@2x.png
: hDPI version of icon.png
logo@2x.png
: hDPI version of logo.png
Those images are served in the following format:
https://brands.home-assistant.io/[domain]/icon.png
https://brands.home-assistant.io/[domain]/logo.png
https://brands.home-assistant.io/[domain]/icon@2x.png
https://brands.home-assistant.io/[domain]/logo@2x.png
https://brands.home-assistant.io/_/[domain]/icon.png
https://brands.home-assistant.io/_/[domain]/logo.png
https://brands.home-assistant.io/_/[domain]/icon@2x.png
https://brands.home-assistant.io/_/[domain]/logo@2x.png
The website can service images with and without a fallback to a placeholder image.
This method uses the plain URLs, WITHOUT the /_/
in the URL path.
A missing image will result in a 404 being served.
For example: <https://brands.home-assistant.io/[domain]/icon.png
>
icon.png
file, 404 will be servedlogo.png
file, the icon.png
is served instead (if available).icon@2x.png
file, the icon.png
is served instead (if available).logo@2x.png
file:
icon@2x.png
is served if available and logo.png
is missinglogo.png
is served instead (if available).This method uses the plain URLs, WITH the /_/
in the URL path.
A missing image will result in placeholder image being served telling the logo/icon is missing.
This also applies to domains, in case the integration domain is missing.
For example: <https://brands.home-assistant.io/_/[domain]/icon.png
>
All icons and logos are cached by browsers for 7 days, so additions and changes may take time to reach all users. This gives users the full benefits of local caching with minimal revalidation, and protects against missing content during an internet outage.
Images are simultaneously cached by Cloudflare for 24 hours. This allows changes to begin being distributed to users relatively quickly without losing the CDN benefits. It also guarantees a simple refresh (F5) will bring content no more than 1 day old.
The Cloudflare cache is also fully flushed in each major version of Home Assistant Core.
All images must have the following requirements:
dark_
Additional to the general image requirements listed above, for the icon image, the following requirements are applied as well:
Additional to the general image requirements listed, for the logo image, the following requirements are applied as well:
If the brand uses the same image for the logo and icon (e.g., if the logo has a square aspect ratio), only add the icon images. The icon will be used as a fallback for the logo.
To keep the size of this repository as efficient as possible, symlinking domain folders for the same icon/logos is allowed for core integrations. The deployment process at our hosting provider will unpack these symlinks to actual files during the deployment process.
Please note, symlinks should only be created between integration domain
directories. The _placeholder
& _homeassistant
directories are special
cases and new directories with an underscore (_
) should not be created.
Symlinks are currently not allowed in the custom integrations folder.
The names of directories must always match the integration domain. Additional directories are not allowed.
It is possible for a custom integration and a core integration to collide on
a domain
name level. In these cases, the core integration domain get
preference.
When adding a new set of icons and logos, the following resources can help you finding the needed images and getting them to match our specifications:
A lot of brands (especially the larger ones) often offer a press kit on their (corporate) website, that contains high quality images.
All product names, trademarks and registered trademarks in the images in this repository, are property of their respective owners. All images in this repository are used by the Home Assistant project for identification purposes only.
The use of these names, trademarks and brands appearing in these image files, do not imply endorsement.