Pushover Alternative? ntfy vs Pushover vs Nodd Compared
Published:2026-11-08
Pushover and ntfy are strong tools for sending notifications. They reach Android and desktop, and ntfy can be self-hosted. Nodd is iPhone only: you approve or reject a request from a script or AI agent with Face ID, and the answer goes back to the program that asked. Use Pushover or ntfy to notify, and Nodd when you need the answer.
Short answer
Pushover and ntfy are mature tools for notifying a person from a program, and they reach Android and desktop as well as iPhone. Nodd is an iPhone app for asking a person to decide: the Face ID approval or rejection goes back to the program that asked. Pick Pushover or ntfy to notify, and Nodd when the program needs the answer.
Notify or approve
When you compare notification services, start with the direction of the flow.
- Notify: a build finished, a monitor fired, a batch job failed. One way, from program to person. What matters is that it arrives and gets noticed
- Approve: a production deploy, a database change, a risky AI agent action. The answer goes back to the program, which continues on approval and stops on rejection or silence
For approvals you need to know who answered and how, never treat silence as yes, and get the answer back to the sender reliably. Below is what each service's official docs say on these points, as of November 8, 2026.
Pushover
Pushover is a dedicated notification service with apps for iPhone and iPad, Android, and desktop. For individuals it is a one-time purchase per platform: the official pricing page lists $4.99 USD per platform with a 30-day free trial, and no subscription fees for individuals (checked November 8, 2026).
Priorities run from -2 to 2. Emergency priority (2) needs retry and expire, and repeats the notification until someone acknowledges it. The response has a receipt you can poll to learn whether and by whom it was acknowledged, or you can pass a callback URL.
curl -s https://api.pushover.net/1/messages.json \
--form-string "token=$PUSHOVER_APP_TOKEN" \
--form-string "user=$PUSHOVER_USER_KEY" \
--form-string "message=Disk is at 95%" \
--form-string "priority=2" \
--form-string "retry=60" \
--form-string "expire=3600"
# Poll the receipt (no more than once every 5 seconds)
curl -s "https://api.pushover.net/1/receipts/$RECEIPT.json?token=$PUSHOVER_APP_TOKEN"
Sent to a group, the first person to acknowledge stops the retries for everyone. That suits on-call paging, where it should keep ringing until somebody notices. What comes back is acknowledgment, though, not an approve or reject decision or a reason.
ntfy
ntfy is an open source notification service, dual licensed under Apache 2.0 and GPLv2. Use the public ntfy.sh server or run your own. There are Android, iOS, and web apps.
There is no sign-up: pick a topic name and publish. Priorities run from 1 to 5. As the ntfy docs say, on a server without sign-up the topic is essentially a password, so choose one that is hard to guess. Servers with access control take an access token in Authorization: Bearer.
A notification can have up to three action buttons. view opens a URL, and http sends an HTTP request (POST by default) to a URL when tapped. broadcast is Android only.
curl -H "Title: API is not responding" -H "Priority: high" \
-H "Actions: http, Restart, https://ops.example.com/restart, method=POST" \
-d "api-1 failed its health check 3 times" ntfy.sh/your-hard-to-guess-topic
With an http button you can make a tap trigger something. You run the receiving endpoint yourself, though, and you also build the way to check who tapped and the way to get the result back to the original script.
Self-hosting keeps messages under your control. By default the server keeps messages in memory for 12 hours. For instant delivery to iOS, the ntfy docs have you set upstream-base-url to forward through ntfy.sh. Only the message ID goes upstream, and the device fetches the message from your server. Without it, delivery can take hours.
Nodd
Nodd is an iPhone app that receives notifications and questions from scripts, CI, and AI agents. An approval request has Approve and Reject buttons answered with Face ID. The answer returns to the sender by reading the message state, through signed callbacks, or from the events API, and nodd ask turns it into an exit code. A rejection can carry a reason, which also goes back to the sender.
Bodies are encrypted to each recipient device's public key and deleted once the device receives them. The server handles the body before it is encrypted, and metadata, responses, and rejection reasons are not encrypted to devices. It is not end-to-end encrypted.
Team plans add approvals that need more than one person (up to 3) and escalation to other people when nobody responds. There are also inbound URLs for Grafana, Alertmanager, Datadog, Sentry, PagerDuty, and more, a GitHub Action, MCP, and a Claude Code hook.
Comparison table
| Pushover | ntfy | Nodd | |
|---|---|---|---|
| Main use | notifications, and emergency pages that repeat until acknowledged | notifications, self-hostable | approval and choice requests, plus notifications, alerts, and heartbeats |
| Devices | iPhone and iPad, Android, desktop | Android, iOS, web | iPhone only (iOS 17.0 or later) |
| What comes back to the sender | with emergency priority, whether and by whom it was acknowledged (receipt, callback) | nothing; an http button can call your URL | approve, reject, or the chosen option, a reason, who answered, and whether Face ID was used |
| Identity check when answering | not documented | not documented | approvals need Face ID |
| Self-hosting | no | yes (open source) | no |
| Message bodies | handled by the service | the server default keeps messages 12 hours; under your control if self-hosted | encrypted per device and deleted on receipt; the server handles the body before encryption |
| Teams | send to a group; the first acknowledgment stops retries | subscribe to the same topic | multiple approvers and escalation on Team |
| Pricing model | one-time purchase per platform for individuals | public server or your own | Free plan, Team 5, and Team 10; prices are shown on the App Store purchase screen |
"Not documented" means we could not confirm it in the official API docs. Nodd is not available in the EU at this time.
Which one to pick
Pushover is the better fit when
- You want notifications on Android or desktop too
- You want a one-time purchase for plain notifications
- You page on-call people and want it to keep ringing until someone acknowledges
ntfy is the better fit when
- You want to run the server yourself, or keep everything inside your network
- You want open source you can read and change
- You want to start right now with curl and no sign-up
Nodd is the better fit when
- A script or CI job must wait for a person and branch on the answer
- Approvals should need Face ID and record who approved
- Production changes need two approvers, or should go to someone else when nobody answers
- You want to stop an AI agent's action on your iPhone before it runs
For notifications alone, there is little reason to switch to Nodd. If Pushover or ntfy already works for you, you can add Nodd only where you need approvals.
Getting an approval back with Nodd
Sign in with Apple in the app, create a channel, and issue a send key. In the API, set kind to approval. An Idempotency-Key header makes a retry safe.
curl https://api.nodd.blipdrop.net/v1/messages \
-H "Authorization: Bearer $NODD_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: restart-482" \
-d '{
"kind": "approval",
"level": "high",
"title": "Restart api-1?",
"expires_in": 1800
}'
Read the result with GET /v1/messages/{id} and continue only when response.option_id is approve. An expired request with no response is never approval. With the CLI:
nodd send "api-1 restarted" --level low
nodd ask "Restart api-1?" && ./restart.sh
nodd ask "Start the production DB migration?" --approvals 2 --escalate-after 600 && ./migrate.sh
nodd ask exits 0 on approval, 10 on rejection, 11 when it ends without a response, and 12 when it stops waiting. --approvals above 1 and --escalate-after need Team. See push notifications from a shell script, monitoring alerts on iPhone, the API and CLI docs, and use cases.
The Free plan is 1 member, 1 device, 1,000 messages a month, a 24-hour delivery window, and 3 open questions. Markdown and image display, and answering text or secret requests, need Nodd 1.1 or later.
FAQ
- Is Nodd a Pushover alternative?
- It is if you receive on iPhone only and want approvals or choices returned to your program. If you need Android or desktop, or only want notifications, Pushover is the better fit.
- What is the difference between ntfy and Pushover?
- ntfy is open source and can be self-hosted. Pushover is a hosted service you cannot run yourself, with an emergency priority that repeats until acknowledged and receipts and callbacks that report the acknowledgment.
- Can I build approvals with ntfy action buttons?
- An http button sends a request to your URL when tapped, so you can if you build the receiving server. You also have to decide how to verify who tapped and how to get the result back to the original script.
- Does Nodd work on Android or in the EU?
- No. Nodd is iPhone only and is not available in the EU at this time.
Nodd delivers questions from scripts, CI, and AI agents to your iPhone, and returns your Face ID approval to the program that asked. There is a free plan.