PiPup shows custom pop-up notifications on your Android TV — camera snapshots, doorbell streams and smart-home alerts — triggered over HTTP from Home Assistant or anything on your network.
No cloud · no account · 100% local network · open source
Rich, styleable overlays with media, sound and speech — sent from your home-automation system in one HTTP request.
Images, animated GIFs, videos, embedded web pages, and live RTSP/HLS camera streams — or inline base64 images.
Read a notification aloud with text-to-speech, or play a sound — great for hands-free alerts.
Custom colors, sizes, on-screen position, rounded corners, borders, a leading icon, and a countdown progress bar.
Multiple notifications coexist on screen at once, each with its own dismissal timer.
One HTTP/JSON endpoint. Call it from Home Assistant, Node-RED, a script, or curl. Unknown fields are ignored.
Advertises itself over mDNS/Bonjour, plus a JSON status endpoint and shown/dismissed delivery callbacks.
Everything stays on your LAN. Optional bearer-token auth and an IP allowlist restrict who can trigger it.
Foreground service with auto-start on boot and a background watchdog keep the server alive.
Android TV (Leanback) native — e.g. NVIDIA Shield. On-screen address, QR code, and a test button.
Show a live doorbell stream the instant the bell rings.
Pop a camera snapshot on the TV when something moves.
Announce it aloud so you hear it from the couch.
Surface any smart-home event on the biggest screen in the house.
Install once, then send notifications from anything that can make an HTTP request.
Get it on Google Play or sideload the APK, then open it once to start the server.
POST a small JSON payload to the TV from Home Assistant, a script, or curl.
A notification overlay shows instantly on the TV, on top of whatever's playing.
Send a notification from any terminal:
# one HTTP request → a pop-up on the TV curl -X POST http://<tv-ip>:7979/notify \ -H 'Content-Type: application/json' \ -d '{ "title": "Front door", "message": "Someone is at the door", "tts": "Someone is at the front door", "media": { "image": { "uri": "https://cam/snapshot.jpg" } } }'
Add a rest_command and call it from any automation — motion, doorbell, appliance, anything.
rest_command: pipup_notify: url: "http://192.168.1.50:7979/notify" method: POST content_type: "application/json" payload: >- {"title": "{{ title }}", "message": "{{ message }}", "tts": "{{ message }}", "position": 0}
Free, open-source, and entirely local. Install PiPup and send your first notification in minutes.