Labels
Only trigger on specific object types. Set labels: [person] to ignore cars, animals, and other objects on a per-camera basis.
Get detection alerts in under 1 second, even when the app is closed
Frigate publishes detection events to your MQTT broker, but it does not support HTTP webhooks natively. The Lumen Push Relay is a lightweight bridge that subscribes to your MQTT broker, filters events based on your rules, and forwards a small notification payload to Apple's push notification service (APNs) through Lumen's relay endpoint.
The relay runs on your network. Your camera feeds and detection images never leave your server — only a compact notification payload (camera name, object label, zone) is sent to deliver the alert to your device.
Open Lumen on your iPhone or Mac. Go to Settings → Push Notifications → Copy Push URL. This URL is unique to your device and links the relay to your Apple push token.
On any machine that can reach your MQTT broker (a NAS, Raspberry Pi, or the same server running Frigate):
docker run -d --name lumen-push-relay \
--restart unless-stopped \
-e MQTT_HOST=192.168.1.50 \
-e PUSH_URL="paste-your-url-from-lumen-app" \
lorislab/lumen-push-relayReplace 192.168.1.50 with your MQTT broker's IP address, and paste the URL you copied from Lumen.
Detection alerts will start arriving on your iPhone immediately. Try walking in front of a camera to test it.
If you prefer not to use Docker, you can run the relay directly with Python 3.11 or later.
Install the required Python packages:
pip install aiomqtt httpx pyyamlCreate a config.yaml in the same directory as the relay script:
mqtt:
host: 192.168.1.50
port: 1883
# username: optional
# password: optional
push:
url: "paste-your-url-from-lumen-app"Start the relay process:
python3 relay.pyTo keep the relay running after reboot, create a systemd service file:
[Unit]
Description=Lumen Push Relay
After=network.target mosquitto.service
[Service]
Type=simple
User=lumen
WorkingDirectory=/opt/lumen-push-relay
ExecStart=/usr/bin/python3 relay.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl enable --now lumen-push-relayCustomize which events trigger notifications by adding camera-specific rules to your configuration. This lets you reduce noise without missing important detections.
mqtt:
host: 192.168.1.50
port: 1883
push:
url: "paste-your-url-from-lumen-app"
cameras:
front_door:
labels:
- person
- package
required_zones:
- porch
- walkway
cooldown: 60 # seconds between alerts
driveway:
labels:
- car
- person
required_zones:
- street
schedule:
start: "22:00"
end: "07:00" # only notify at night
cooldown: 120
garden:
labels:
- person
cooldown: 30
# Cameras not listed here will use default
# behavior: all labels, all zones, no cooldownOnly trigger on specific object types. Set labels: [person] to ignore cars, animals, and other objects on a per-camera basis.
Only notify when the detection is inside a specific Frigate zone. Combine with labels for precise control — "person on porch" but not "person on sidewalk."
Restrict notifications to specific hours and set a minimum cooldown between alerts to prevent notification fatigue during busy periods.
Verify the relay can reach your MQTT broker. Run mosquitto_sub -h 192.168.1.50 -t "frigate/#" from the same machine to confirm connectivity. Check that port 1883 is not blocked by a firewall.
The Push URL contains your device's push token. If you reinstall Lumen or reset notification permissions, the token changes. Go back to Settings → Push Notifications in Lumen and copy a fresh URL.
Make sure MQTT is enabled in your Frigate configuration (mqtt.enabled: true) and that the broker address matches. Check Frigate's logs for MQTT connection errors.
Ensure the relay is running on a machine with low latency to your MQTT broker (ideally the same network). Apple's APNs delivery is typically under 500ms. If using a VPN or remote relay, network latency adds to the total time.
Check that notifications are enabled for Lumen in iOS Settings → Notifications → Lumen. Also verify that Focus modes or Do Not Disturb are not silencing alerts.
Frigate publishes detection events over MQTT but does not support HTTP webhooks or direct push notification delivery. The relay is a small, self-hosted bridge that listens to your MQTT broker and forwards notifications to Apple's push service on behalf of Lumen. It runs entirely on your network.
Yes. Your camera feeds and detection images stay on your local network. The relay only sends a small notification payload to Apple — the camera name, object label, and zone. No images, no video, no personally identifiable data leaves your server. The connection to Apple's push service is encrypted with TLS.
Yes — that is the entire point. Push notifications are delivered by iOS at the system level, independent of whether Lumen is running. You will receive alerts on your Lock Screen, in Notification Center, and on your Apple Watch even if Lumen has not been opened in days.
Push notifications are a native iOS capability with negligible battery impact. Unlike polling or background fetch, APNs uses a single persistent connection managed by iOS itself. The relay has zero effect on your phone's battery.
Yes. Copy the Push URL from each device running Lumen and configure a separate relay instance (or multiple PUSH_URL entries) for each one. Each device has its own unique push token.
Any standard MQTT broker works — Mosquitto, EMQX, HiveMQ, or the broker built into Home Assistant. The relay connects as a standard MQTT client.