34.1k stars · Apache-2.0 · v2.28.0 (2026-08-27)
Push notification to your phone from one line of curl — the missing last step of every alert and long job in this ledger.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A tiny publish–subscribe notification service. Any script sends an HTTP POST to a topic URL, and the message appears as a push notification on your phone or in a browser tab. There is a free public server and a self-hosted single Go binary; the mobile apps are on both stores.
Why it matters
Count the things in this ledger that end with "and then it tells you": Uptime Kuma when the site is down, Bugsink when a new error appears, RSSHub and n8n when somebody on Reddit asks the question Grasppy answers, Procrastinate when a three-hour backtest sweep finishes. Every one of them currently ends in an email you will read tomorrow or a dashboard you will not open. This is the two-minute fix that turns all of them into a phone buzz — and for the Reddit case the difference between arriving first and arriving on page four is measured in hours. It is the wildcard because it is not a marketing tool in itself; it is the thing that makes the marketing tools you already have actually reach you.
- Absurdly simple to use:
curl -d "message" ntfy.sh/your-topicis the whole integration, from any language or shell script - Uptime Kuma has it as a built-in notification target, so wiring 01 to your phone is a dropdown, not a project
- Self-hostable as one small Go binary if you want the messages off the public server, which you eventually will
- On the public server, a topic name is the password. Anyone who guesses it can read or post to it — use a long random topic, and self-host before anything sensitive goes through it
- Self-hosting iOS push reliably is the fiddly part of an otherwise trivial tool; the Android path is much smoother
- Notifications are habit-forming in the wrong direction. Send only what you would genuinely stop filming for — three topics, not thirty
# subscribe to a topic in the phone app, then from anywhere: curl -d "Grasppy ingest finished: 412 nodes" \ ntfy.sh/grasppy-a7f3k9x2