Home AssistantHome AssistantContributors
On this page

Apps are extra programs that run next to Home Assistant: an MQTT broker, a file editor, a database, a media server. Apps used to be called add-ons, and you still see that name in the code, the API, and in older posts. They run on Home Assistant OS, where the Supervisor installs them, starts them, updates them, and includes them in backups.

Under the hood, an app is a container image plus a small configuration file. The configuration tells the Supervisor what the app needs: which ports, which folders, which hardware, and which options the user can set. Users install apps from the App store under Settings > Apps, and anyone can publish a repository with their own apps.

Who this is for

This area is for you if you want to package software as an app, for yourself or for others. You need to be comfortable with a terminal, Docker or another container tool, and a bit of shell scripting. You do not need to know Python or the Home Assistant code base.

If you want to work on the Supervisor itself, the part that runs the apps, see OS and Supervisor.

Start here

Follow these in order:

  1. Contribute to the official apps: your first contribution, from your own app to the official apps, the base images, and the build tooling.
  2. Your first app: build a "Hello world" app, install it, and grow it into a small web server with options. About half an hour.
  3. Build a real app: walk through a complete example app, with services, options and logging with Bashio, translations, documentation, CI, and releases.
  4. How apps work: the Supervisor, repositories, the app folder, and what happens when an app starts.

Guides

Reference

  • App configuration: every key of config.yaml.
  • Bashio: every function of the shell library in the base images, to read options, write logs, and call the Supervisor API.
  • App files: the files in an app folder and a repository.
  • Runtime environment: environment variables, folders, and network addresses inside an app container.
  • Security rating: how the Supervisor rates your app.
  • Supervisor API: every endpoint, its payload, and the data models.

Useful repositories

Who to talk to

  • The #developers channel on the Home Assistant Discord is where app developers help each other. Questions about how the Supervisor runs apps fit #operating-system, the channel for Home Assistant OS and the Supervisor. Can't see the channels? Under Channels & Roles, choose I want to contribute dev skills to Home Assistant.
  • Found a bug in how the Supervisor handles apps? Open an issue in home-assistant/supervisor.
  • Something wrong with an official app? Use the issues of home-assistant/addons.
  • Ready to show your app to the world? Post it in the Share your Projects category of the community forum.
Was this page helpful?

Last updated on .