HomeBrain is a local-first home automation and voice-assistant platform. It combines a Node/Express backend, a React web app, optional local AI services, remote room listeners, and an optional iOS companion app into one self-hosted system.
- A web dashboard for devices, scenes, workflows, voice devices, profiles, settings, reverse proxy/domains, operations, SSL inventory, Whisper, Ollama, and platform deploy
- Smart home integrations for SmartThings, Ecobee, INSTEON/ISY, and Logitech Harmony Hub
- Remote listener onboarding and fleet updates for room devices
- Dedicated ESP32 wall panel APIs and firmware for rotary touchscreen room controllers
- Wake-word training and distribution using OpenWakeWord plus Piper-generated training data
- Optional local speech-to-text with Whisper
- Optional local LLM support with Ollama
- An optional iOS app in
HomeBrainAppwith workflow runtime controls, richer workflow editing, settings, and platform administration surfaces
HomeBrain is no longer Jetson-only.
- Best-tested hub: Jetson Orin Nano
- Also supported as a hub: other always-on Ubuntu/Debian
amd64orarm64machines - Best-tested listener: Raspberry Pi 4/5
- Also supported as a listener: other Debian/Ubuntu-based Linux mini PCs or SBCs with a microphone and speaker
- Best-tested wall panel: ELECROW CrowPanel
2.1"ESP32-S3 rotary display - Same panel family, smaller sibling: ELECROW
1.28"round rotary display using the same HomeBrain backend flow but requiring its own board profile
What changes by hardware:
- Core web app, workflow runtime, integrations, and remote listeners work on generic Linux hardware.
- Jetson is still the best target for local GPU workloads such as Whisper and Ollama.
- Non-Jetson hosts can still run HomeBrain; local AI workloads may simply run slower or fall back to CPU.
- Remote voice listeners are still Linux-based room devices.
- ESP32 wall panels connect over
Wi-Fito the HomeBrain/api/panelsendpoints and use the firmware inembedded/elecrow-wall-panel.
- Clone your public repo to the hub machine.
- Run one installer script.
- Open HomeBrain in a browser on port
3000.
Jetson hub:
git clone <your-public-repo-url> HomeBrain
cd HomeBrain
bash scripts/install-jetson.shOther Ubuntu/Debian Linux hub:
git clone <your-public-repo-url> HomeBrain
cd HomeBrain
bash scripts/install-linux.shAfter the installer finishes:
- Open
http://<hub-ip>:3000 - Create your first account
- Continue with
docs/configuration.md
Important:
- Production HomeBrain serves the UI/API on internal port
3000 - Caddy is now the intended public edge on
80/443 - Port
5173is only used by the Vite dev server during local frontend development - The installer uses committed npm lockfiles for deterministic clean deployments
- Browser sessions use
HttpOnlycookies; tokens are not stored in browserlocalStorage - The native iOS app remains a bearer-token client with a 365-day refresh-session lifetime
- Stateful workflow countdowns auto-cancel when their device or sensor trigger stops matching before the workflow finishes
- Beginner Jetson guide:
docs/jetson-setup.md - Full deployment guide:
DEPLOYMENT.md - Post-install configuration:
docs/configuration.md - ELECROW wall panel guide:
docs/elecrow-wall-panel.md - Ollama management:
docs/ollama-management.md - Alexa setup guide:
docs/alexa-admin-setup.md - Alexa integration overview:
docs/alexa-integration.md - Admin workflow:
docs/admin-guide.md - End-user voice usage:
docs/user-guide.md - Troubleshooting:
docs/troubleshooting.md - Security checklist:
docs/security.md - Wake-word setup:
docs/wake-word-setup.md - Remote listener guide:
remote-device/README.md - Docs index:
docs/README.md
From the HomeBrain UI:
- Open
Voice Devices - Click
Add Remote Device - Enter the room/device details
- Copy the generated one-command installer
- Run that command on the listener device
Raspberry Pi cloud-init onboarding is also available from the same dialog. After activation, listeners use a generated device token for config, heartbeat, wake-word asset, and TTS requests.
The new wall panel path is separate from Linux listeners:
- Install the hub and create the first admin account
- Open
Settings -> Hardware Orbsand create the orb - Flash
embedded/elecrow-wall-panel - Return to
Settings -> Hardware Orbsand bind thermostat, searchable room-surface devices/scenes, media, and quiet actions
Full guide:
The installer writes and enables:
homebraincaddy-api
Useful commands:
bash scripts/setup-services.sh status
bash scripts/setup-services.sh logs follow
bash scripts/setup-services.sh health
bash scripts/setup-services.sh update
bash scripts/setup-services.sh refresh-privilegesPublic HTTPS routing is managed from Reverse Proxy / Domains in the HomeBrain UI. The built-in Platform Deploy flow still deploys HomeBrain in place and keeps working behind Caddy because Caddy stays up while only the homebrain app service restarts.
On Linux and Jetson hosts, HomeBrain manages the Ollama runtime itself and uses a narrow privileged helper for install, update, and forced-stop operations. If an older host needs its Ollama helper or sudoers entry repaired, run:
bash scripts/setup-services.sh refresh-privilegesDetails:
Install dependencies:
npm ciRun the backend:
npm run serverRun the frontend dev server:
npm run clientDevelopment ports:
- API/backend:
http://localhost:3000 - Vite frontend dev server:
http://localhost:5173
This repository is set up so secrets should stay local:
- real runtime secrets belong in
server/.env server/.envis gitignored- build output and generated download packages are gitignored
- local Codex/tool state, SQLite databases, certificates, and private keys are gitignored
- firmware defaults in
embedded/elecrow-wall-panel/include/HomeBrainPanelConfig.hmust remain placeholders in git
Before publishing or opening a pull request, run:
bash scripts/check-secrets.sh --historyGitHub Actions also runs the same check against the full checked-out history, plus dependency review, npm audit, and CodeQL. Enable GitHub secret scanning, push protection, Dependabot alerts/security updates, and code scanning in the repository settings before opening the repo.
If old commits contain unsafe local state such as .codex-home, clean it with the coordinated history rewrite in docs/security.md before publishing. One thing git itself can still expose is commit author metadata; hiding older author email addresses also requires a separate git history rewrite.
HomeBrain is licensed under the Apache License 2.0. See LICENSE.
