Android App
Phone notifications, straight to your desktop.
A lightweight Android app that listens for Google Messages notifications and relays them as JSON webhooks over Tailscale. No Termux. No root. Just install and go.
Architecture
softwaresoftware-relay implements Android's NotificationListenerService to watch for incoming Google Messages notifications. When one arrives, it extracts the sender and message body and POSTs JSON to your desktop over Tailscale.
Webhook payload
{
"source": "notification",
"app": "com.google.android.apps.messaging",
"sender": "Alice",
"body": "hey, are you around?",
"self": false,
"timestamp": "2026-04-01T18:30:00Z"
}
Self-text detection flags messages from your own name/number as "self": true, enabling automated workflows triggered by texting yourself.
Setup
Install the APK
Download the APK and sideload it onto your Pixel. You may need to enable "Install unknown apps" for your browser or file manager.
Grant notification access
Open the app and tap "Open Notification Access". Find softwaresoftware-relay in the list and toggle it on. Android will warn you -- this is required for the notification listener to work.
Configure the webhook URL
The default webhook points to http://100.99.44.89:8789 over Tailscale. Change it if your desktop has a different Tailscale IP or you're running the webhook on a different port.
Set your name (optional)
Enter your name or contact name for self-text detection. When the sender matches, the payload includes "self": true.
Test it
Tap the "Test Webhook" button to send a test payload. If your desktop webhook is running, you should see the JSON arrive.
Details
Targets Android 13+ (API 33). Built for Pixel 7 Pro. Kotlin, no external dependencies beyond AndroidX core. Notifications prefixed with [TaskPilot] are automatically ignored to prevent feedback loops with autonomous agents.
The app uses HttpURLConnection for webhook delivery -- no OkHttp, no Retrofit, no bloat. Connection timeouts are set to 5 seconds. Failures are logged silently; the app never crashes on network errors.