Detailed installation instructions for Home Assistant Core development.
This guide covers everything you need to install Home Assistant Core for development, including system requirements, dependencies, and various installation methods.
Linux - Recommended for production and development
macOS (Darwin) - Full support for development
Windows (WSL) - Use Windows Subsystem for Linux
Native Windows is not supported. The validation code in homeassistant/__main__.py explicitly checks for Linux, macOS, or WSL.
# From homeassistant/__main__.pydef validate_os() -> None: """Validate that Home Assistant is running in a supported OS.""" if not sys.platform.startswith(("darwin", "linux")): print( "Home Assistant only supports Linux, OSX and Windows using WSL", file=sys.stderr, ) sys.exit(1)
The default configuration directory is determined by get_default_config_dir() in homeassistant/config.py:
def get_default_config_dir() -> str: """Put together the default configuration directory based on the OS.""" data_dir = os.path.expanduser("~") return os.path.join(data_dir, CONFIG_DIR_NAME)
# Create virtual environment with specific Python versionpython3.14 -m venv venv# Activate on Linux/macOSsource venv/bin/activate# Activate on Windows WSLsource venv/bin/activate# Deactivate when donedeactivate
The hass command provides these options (from homeassistant/__main__.py):
usage: hass [-h] [--version] [-c path_to_config_dir] [--recovery-mode] [--debug] [--open-ui] [--skip-pip] [--skip-pip-packages package_names] [-v] [--log-rotate-days LOG_ROTATE_DAYS] [--log-file LOG_FILE] [--log-no-color] [--script ...] [--ignore-os-check]Home Assistant: Observe, Control, Automate.options: -h, --help show this help message and exit --version show program's version number and exit -c, --config path_to_config_dir Directory that contains the Home Assistant configuration --recovery-mode Start Home Assistant in recovery mode --debug Start Home Assistant in debug mode --open-ui Open the webinterface in a browser --skip-pip Skips pip install of required packages on startup --skip-pip-packages package_names Skip pip install of specific packages on startup -v, --verbose Enable verbose logging to file. --log-rotate-days LOG_ROTATE_DAYS Enables daily log rotation and keeps up to the specified days --log-file LOG_FILE Log file to write to --log-no-color Disable color logs --script ... Run one of the embedded scripts --ignore-os-check Skips validation of operating system