
Home Assistant
github.com/home-assistant/core- Category
- Lifestyle
- Type
- APP
- Builder
- home-assistant
- GitHub
- 90.1k stars
- Latest release
- 2026.8.3
- Date
About
Home Assistant is open-source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers, it's ideal for running on a Raspberry Pi or a local server.
What it does
A Python service you run on your own hardware to automate devices. One command starts a process that reads a configuration directory, loads integrations, and keeps an in-memory state machine plus an event bus. Every supported device or service is its own package that registers entities and services under a single domain name. A local web interface exposes current states, fires events, calls services, and streams every event over server-sent events with a ping every 50 seconds. Sign-in is a pluggable layer of login providers with optional multi-factor modules, issuing signed tokens.
Why it's ranked here
The verdict: this is infrastructure, not a weekend project, and the repository shows it. Apache licensed, marked production stable in its packaging metadata, with 59 core runtime requirements nearly all pinned to exact versions, and an in-house manifest validator running 29 checks that every integration must pass. Adding device support starts from a scaffold command that generates code and then reruns validation, requirements generation, and translation extraction. The cost of that rigor is bulk: every supported integration lives in this one repository, so contributing means working inside a very large tree with a strict review surface.
What's good
Operational care shows up in small places. Startup takes a lock so only one instance runs per configuration directory, enables a crash handler writing to a fault log, removes that log when it stays empty, and counts stray non-daemon threads on exit. Recovery mode and skipping dependency installs are command line flags; safe mode is read from the configuration directory. The web interface filters states by per-entity read permission for non-admin users, and firing events or opening the event stream requires an admin token. Embedded maintenance scripts install their own declared dependencies before running, and filename and path helpers reject traversal characters outright.
Tradeoffs
Not for every host. The launcher refuses to start outside macOS and Linux and points Windows users at a Linux subsystem, though one flag bypasses the check. Python 3.14.2 or newer is required, which is aggressive. The container build installs an exact pinned dependency set plus a bundled streaming binary, so running outside the official image means matching those versions yourself. The lint configuration disables a long list of checks, most delegated to a second linter and several marked as pending cleanup, so the rules actually enforced are narrower than the tooling list suggests.
How to use it well
Pick this if you want device automation running on hardware you control, with state, events, and services reachable over a local HTTP interface you can script against. It suits people comfortable running a long-lived service and editing a configuration directory by hand. If you plan to add device support, the generator and the manifest validator make the contribution path explicit. What it does not give you is a hosted service, an account you sign up for, or a general application framework: the entity and service model assumes homes, devices, and rooms.
Technical notes+
The console entry point declared in pyproject.toml maps hass to homeassistant/__main__.py, which validates interpreter and platform, takes a single-execution lock per config directory, then hands a runtime config to the runner. homeassistant/components/__init__.py states the integration contract: one domain per package, entity ids as domain plus object id. homeassistant/components/api/__init__.py registers twelve aiohttp views for states, events, services, config, and templates, plus a stream pinging every 50 seconds. homeassistant/auth/__init__.py assembles providers and multi-factor modules into a manager issuing JWT tokens. homeassistant/scripts/__init__.py discovers embedded scripts by directory listing and installs their declared requirements first. script/hassfest/__main__.py runs 29 validation plugins; script/scaffold/__main__.py generates an integration then calls it. Dockerfile installs requirements.txt with uv.
Observed
- License
- Apache-2.0, declared in pyproject.toml
- Language
- Python, async throughout
- Install surface
- Python package exposing a hass console script; container image built from the repo Dockerfile
- Interfaces
- command line launcher, local HTTP state and service API, server-sent event stream
- Platform support
- Linux and macOS only; Windows via a Linux subsystem
- Structure
- one package per integration under a single components directory
- Configuration
- file-based configuration directory on the host machine, not a hosted account
Read from README.rst, pyproject.toml, requirements.txt, Dockerfile, homeassistant/__init__.py, homeassistant/__main__.py, homeassistant/auth/__init__.py, homeassistant/components/__init__.py, homeassistant/helpers/__init__.py, homeassistant/util/__init__.py, homeassistant/scripts/__init__.py, homeassistant/generated/__init__.py, homeassistant/components/api/__init__.py, script/hassfest/__main__.py, script/scaffold/__main__.py.
What it can do
Control smart home devices locally
Connected IoT devices and user commands → Device state changes and automation responses
Automate home processes based on triggers
User-defined rules, schedules, and sensor data → Automated device actions and notifications
Integrate multiple smart home platforms
Various smart home device protocols and APIs → Unified device management interface
Monitor and display device states
Real-time sensor and device data → Dashboard with current home status
Create custom automation components
Python code and configuration files → Custom integrations and automations
Run home automation server on local hardware
Raspberry Pi or local server hardware → Self-hosted home automation system
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.