Why we built it
Most notification tools force a choice: a chat app humans love but machines can't easily post to, or a paging tool machines love but humans dread. Pingwire collapses that gap. Every message — whether it comes from a deploy script, a GitHub webhook, a cron reminder, or a teammate typing in the app — follows the exact same path: persist, notify the realtime worker, fan out, and push to anyone offline.
How it works
The web app runs on OpenLiteSpeed with PHP and MariaDB. A separate Workerman daemon handles realtime fan-out over WebSockets, with an internal broadcast worker that the web tier notifies after every persisted message. A system cron job delivers scheduled and recurring reminders every minute. The frontend is a vanilla-JS Progressive Web App — installable, offline-aware, and push-enabled.
Our principles
- Developer experience first. One endpoint, one token, copy-paste examples in every language.
- Your data, your choice. On the managed service your data is encrypted in transit, never sold, and deletable anytime per our Privacy Policy — and Pingwire is also self-hostable for teams who want it on their own server.
- Secure by default. Argon2id passwords, hashed API keys, prepared statements, scoped tokens, and rate limits.
- Humans and machines, unified. No second-class senders — automation and people share the same realtime chat.
The stack
OpenLiteSpeed · PHP 8 · MariaDB · Workerman (WebSocket + internal broadcast worker) · system cron scheduler · vanilla JS PWA · Web Push (VAPID). Open, inspectable, and yours to extend.