Beacon is a lightweight monitoring, alerting, and secure remote access agent. It runs as a background service that:
- Monitors services via HTTP, port, and command checks
- Alerts you via Discord, Slack, or webhooks when something goes down
- Reports device health (CPU, memory, disk) to a local dashboard
- Connects to BeaconInfra cloud for multi-device dashboards and secure remote tunnels (optional)
Without an API key, Beacon runs fully offline with zero cloud connectivity or telemetry.
- In Home Assistant, go to Settings > Add-ons > Add-on Store
- Click the ... menu (top right) > Repositories
- Add:
https://github.com/Bajusz15/beacon-home-assistant-addon - Find Beacon in the store and click Install
- Configure options (see below), then click Start
| Option | Type | Default | Description |
|---|---|---|---|
device_name |
string | (hostname) | Friendly name for this device in dashboards |
api_key |
password | (empty) | BeaconInfra API key (usr_...). Leave empty for offline mode |
heartbeat_interval |
integer | 30 |
Seconds between cloud heartbeats (10-300). Only used when API key is set |
metrics_port |
port | 9100 |
Port for the local dashboard and metrics API |
After starting the add-on, click Open Web UI in the add-on info page (or use the sidebar entry). Beacon's local dashboard shows:
- Device health (CPU, memory, disk, load)
- Project status and check results
- Tunnel status (if configured)
The dashboard is also available as a Prometheus metrics endpoint at /metrics for integration with Grafana or other tools.
The Beacon dashboard is exposed inside Home Assistant via Ingress — HA proxies
authenticated requests to the add-on's internal HTTP server. This is configured in the
add-on's config.yaml:
ingress: true
ingress_port: 9100ingress: truetells HA to proxy the add-on's web UI through the HA frontend (no extra ports need to be opened on your network).ingress_port: 9100is the port Beacon's dashboard listens on inside the container. This must match themetrics_portoption. If you changemetrics_port, updateingress_portto match.
Internally, the add-on sets metrics_listen_addr: "0.0.0.0" so the HA Supervisor can
reach the dashboard from outside the container's network namespace. This is handled
automatically — no user configuration needed.
Beacon comes pre-configured with a Home Assistant health check that pings http://homeassistant:8123/api/ every 30 seconds.
- Install the File Editor or SSH add-on
- Navigate to
/data/beacon/config/projects/ - Create a new directory for your project (e.g.,
my-service/) - Create a
monitor.ymlfile inside it:
checks:
- name: "my_service_http"
type: http
url: "http://192.168.1.100:8080/health"
interval: 60s
timeout: 10s
- name: "my_service_port"
type: port
host: "192.168.1.100"
port: 5432
interval: 30s- Add the project to Beacon's config at
/data/beacon/config.yamlunder theprojectslist:
projects:
- id: "home-assistant"
config_path: "/data/beacon/config/projects/home-assistant/monitor.yml"
- id: "my-service"
config_path: "/data/beacon/config/projects/my-service/monitor.yml"- Restart the add-on to pick up the new project.
- http: Send HTTP requests and check for expected status codes
- port: Check if a TCP port is open
- command: Run a shell command and check exit code
Beacon supports alerting via Discord, Slack, and generic webhooks. Alert configuration is per-project in the project's config directory.
Create an alerts.yml file alongside monitor.yml:
alert_channels:
webhook:
url: "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
method: POST
content_type: application/json
template: |
{"text": "{{.Title}}: {{.Message}}"}
alert_routing:
- severity: "critical"
channels: ["webhook"]See the Beacon documentation for the full alert configuration reference.
With a BeaconInfra API key, Beacon can establish secure reverse tunnels to your Home Assistant instance. This provides remote access without exposing ports or configuring a VPN.
Visit beaconinfra.dev to create an account and get your API key.
If no api_key is configured, Beacon runs in fully offline mode:
- No cloud connectivity or telemetry
- Local dashboard and monitoring still fully functional
- Alerts (webhooks, etc.) still work — they are outbound HTTP only
- No tunnel or remote access features
All Beacon data is stored under /data/beacon/ which persists across add-on restarts and updates:
config.yaml— main Beacon configuration (regenerated on each start from HA options)config/projects/— project monitoring configs (preserved across restarts)state/— check state, log cursorslogs/— project-specific logs
The default Home Assistant health check config is only written if it doesn't already exist, so your customizations are preserved.