Kabu vs ntfy vs Pushover: the difference is the round trip
An honest comparison of Kabu, ntfy and Pushover for developers running AI agents, on knowing what they do and answering when they ask.
If all you need is a buzz on your phone when a script finishes, Pushover and ntfy are excellent, and you should probably use one of them. This post is about the two things they were not built for: keeping you in the know while an agent works for an hour, and letting it ask you something and carry on once you answer.
The short answer
These three products look alike on a feature grid and solve different problems.
- Pushover is the best value for one-way alerts: pay once, get a dependable notification pipe, and never think about it again.
- ntfy is the best if you want to own it: open source, self-hostable, and a well-designed general publish-subscribe service.
- Kabu is for when your agent needs you: it tells you what finished, what failed and how a long run is going, and when it is blocked on a decision, the question comes to your phone and your answer goes back to it.
Facts about Pushover and ntfy were checked against their own documentation on 30 October 2026 and are linked at the end. Where they are better, we say so.
The question that separates them
Run a coding agent for an afternoon and you will hit this moment. It has written the migration and needs to know whether to drop the column. It has three plausible refactors and needs you to pick one. It is about to deploy and wants a yes.
A notification tells you this happened. It does not help you answer. With a one-way push service the loop is: buzz, walk to the laptop, read the terminal, type, resume. The agent sits idle the whole time.
What you want is for the agent to wait, for the question to arrive on your phone with its choices, and for your answer to go straight back to the process that was waiting. That is a round trip, not a notification, and it is where these three really differ.
| The round trip | Kabu | Pushover | ntfy |
|---|---|---|---|
| A question that waits for your answer | Yes: approve or reject, pick one or several options, type a reply, or fill a short form | No: an emergency alert can be acknowledged, nothing more | You build it on topics and HTTP actions |
| The answer goes back to the caller | Yes: the waiting command gets it | A receipt you poll, or a callback, saying it was acknowledged | Whatever your own integration does |
| When nobody answers | The question expires, after 5 minutes unless you set another time | Emergency retries stop after at most 3 hours | Up to you |
Being precise, because this is the whole claim
Pushover has a real round trip for emergency-priority messages: the recipient acknowledges, and the sender polls a receipt or receives a callback. The receipt carries who acknowledged and when, not an answer. ntfy is a general publish-subscribe service, so you can build a reply channel on it: an action button sends an HTTP request of your choosing. You design the correlation, authentication, timeouts and waiting yourself.
What it looks like in Kabu
The kabu command-line tool waits for your answer and turns it into an exit code, so a script or an agent can branch on it:
kabu ask "Deploy v1.4.2 to prod?" # exit 0 approved, 10 rejected, 20 expired
kabu ask "Which environment?" -c staging -c prod # a choice: read .option from the JSONThe plugin for Claude Code and GitHub Copilot CLI teaches the agent when to notify you and when to ask, and Kabu’s MCP server gives any MCP client the same two moves: notify_human and ask_human. You answer from the Lock Screen or the app. If you do not answer, the question expires, kabu exits 20, and the agent carries on with its own fallback instead of waiting forever.
The other half: knowing what your agent is doing
Agents do not produce one-line statuses. They produce diffs, test reports, screenshots and long summaries, and they run for a long time.
| What arrives | Kabu | Pushover | ntfy |
|---|---|---|---|
| Message length | 8,192 characters, with a 120-character title | 1,024 characters, with a 250-character title | 4,096 bytes; a longer message becomes an attachment |
| Files | Up to 10 a message, each up to 2 GiB | One image, up to 5 MB | One file; 2 MB on free ntfy.sh, up to 1 GB on paid plans |
| Formatting | Code, diff and quote blocks, fields and links | HTML or monospace, not both | Markdown, when you turn it on |
| Spoken updates | Yes: Kabu reads the message aloud as audio you can play | No | A text-to-speech phone call, on paid plans with a verified number |
The parts that still matter
| The rest | Kabu | Pushover | ntfy |
|---|---|---|---|
| Priorities | Four: low, normal, high and urgent | Five, including emergency, which repeats until acknowledged | Five, from min to max |
| Who can send to you | Only holders of your API keys; a computer connects by approving a code in the app | Holders of an application token and your user key | On ntfy.sh, anyone who knows the topic name, unless you reserve it on a paid plan |
| Self-hosting | No | No | Yes, under the Apache 2.0 and GPLv2 licences |
| Phones | iPhone | iPhone, iPad, Android and desktop | Android, iPhone and the web |
One row deserves a closer look. ntfy’s public server is open by design: its home page says that without an account, the topic name is essentially a password. For hobby alerts that is a reasonable trade. For an agent that receives approval decisions, a channel a stranger can guess and write to is the wrong shape. Self-hosted ntfy fixes this properly with access control and a deny-all default.
Pricing, honestly
| Service | Free | Paid | Volume |
|---|---|---|---|
| Kabu | Free plan | Pro, $4.99 a month or $39.99 a year | 1,000 notifications a month on Free, unlimited on Pro |
| Pushover | 30-day trial | $4.99 once, per platform; Teams $5 a user a month | 10,000 messages a month, shared by all your applications |
| ntfy.sh | Free, no account needed | $6, $12 or $25 a month ($5, $10 or $20 billed yearly) | 250 messages a day on free; 2,500 to 50,000 on paid plans |
| ntfy, self-hosted | Free | Your server | What your server can carry |
Pushover is the cheapest by a wide margin. A one-time $4.99 against a monthly subscription is the difference between buying something once and paying for as long as you use it. If one-way alerts are all you need, paying for Kabu would be a bad trade. Self-hosted ntfy is cheaper still, at the price of running a server.
Kabu Pro will be a subscription because it runs a stateful service: a question waiting on your answer, files and spoken updates cost money every month, not once.
Where the others are better
Pick ntfy if you want to own it
- It is open source and self-hostable, so your messages never leave your infrastructure.
- It is an excellent general transport: publish from curl, from email or from almost anything.
- Android users get broadcast intents for automation apps.
- One caveat: for instant notifications on iPhone, a self-hosted server must relay through an upstream server such as ntfy.sh.
Pick Pushover if you want cheap and permanent
- $4.99 once per platform, then 10,000 messages a month.
- Emergency priority, which repeats until a human acknowledges, is a good design.
- Optional end-to-end encryption of message content on iPhone and Android.
- It has run since 2012, and that is worth something.
When Kabu is the wrong choice
We would rather you choose correctly than leave in a month.
- You need to self-host. Kabu is a hosted service. Use ntfy.
- You only send one-way alerts. Pushover does that well, for a one-time fee.
- You need email-to-push or Android automation. ntfy has both; Kabu has neither.
- You use Android. Kabu’s app is for iPhone today.
Try it
Kabu is free to start. The quickstart takes about five minutes:
- Install the Kabu app on your iPhone.
- Install
kabuand connect your computer by approving a code in the app:mkdir -p ~/.local/bin && curl -fsSL https://usekabu.com/kabu -o ~/.local/bin/kabu && chmod +x ~/.local/bin/kabu, thenkabu login --device. - Run
kabu ask "Ship it?", answer it on your phone, and watch the command carry on.
Sources
Checked on 30 October 2026. Prices and limits change: if something here is out of date, tell us at support@usekabu.com and we will correct it.