A small and self-hosted service for sending push notifications.
pingd is a small, self-hosted push notification service. It lets you send notifications to your phone or desktop from any script, app, or service you run, with user accounts, fine-grained permissions, and automatic retries on transient delivery failures. Free software, runs in one Docker container.
How it works
curl -s https://pingd.example.com/topics/news/messages \
-H 'Content-Type: application/json' \
-d '{ "payload": { "body": "Hello" } }'
pingd-cli messages publish --topic news --body "Hello"
import requests
requests.post(
"https://pingd.example.com/topics/news/messages",
json={"payload": {"body": "Hello"}},
)
What pingd gives you
Access you can reason about
Public read/write flags, per-topic tokens for limited access, and NATS-style pattern permissions such as alerts.> and deploy.* with ro, wo, rw, or deny.
Per-device state
Each push to each device has a delivery row, so missed notifications are inspectable instead of mysterious.
Messages can go stale
Set a TTL for time-sensitive alerts. Late deliveries are marked expired instead of being pushed after they no longer matter.
Accept JSON from other tools
Give a service a webhook URL and a small template. Incoming JSON becomes a message on the topic you choose.
Use the surface that fits
Use the dashboard for interactive work, or pingd-cli from scripts and terminals.
Small deployment shape
Runs as a small Docker container and is quick to set up.