Kukuroo
Self-hosted Web Push for iPhone, iPad and Mac Safari, triggered by one authenticated POST from scripts, cron or CI
Kukuroo homepage with an iPhone lock screen showing a "Task W13 finished" push notification
Kukuroo turns one Cloudflare Worker and a KV namespace into a Web Push endpoint for Apple devices. Devices enroll in Safari through Declarative Web Push, and anything that can send an HTTP request can then notify them.
Safari displays Declarative Web Push notifications without a service worker. Once a device has opened the enrollment page and allowed notifications, a POST to /push/send with a bearer token reaches it. The deployment holds the VAPID keys, and the push service only relays encrypted payloads it cannot read. The npx kukuroo init wizard writes a standalone Worker project and deploys it to a workers.dev address or a custom domain already on Cloudflare. Enrollment requires an invite code by default, and the same CLI later rotates the send token and the invite code. Kukuroo can also be mounted inside an existing Worker, so the push routes share the site's origin and a notification click lands back in that site. The repository itself is a Claude Code plugin marketplace whose plugin lets a coding agent send a notification, for example when tests finish.
Built for: Developers with an iPhone, iPad or Mac who want push notifications from their own scripts, CI or Workers without a push vendor or a native app.
What you can use it for
- Get a phone alert when a deploy, backup or CI job finishes
- Send notifications from cron jobs and scripts without a chat bot
- Add push routes to an existing Worker on the same origin
- Let a coding agent notify you when a long task is done
Deploy
CLI
Branch main
The wizard generates the keys, creates the KV namespace and deploys. Back up my-push/kukuroo.credentials.json afterwards.
npx kukuroo init my-push
Run npx kukuroo init and answer the prompts, then open the enrollment page on each device and allow notifications.
What it needs to run
- KV namespacesKUKUROO_SUBS
Good to know
Receiving works only in Safari with Declarative Web Push: an iPhone or iPad on iOS 18.4 or later, or Safari 18.5 or later on macOS. Chrome, Firefox and Android cannot enroll. On iOS the page must be added to the Home Screen and opened from its icon. The enrollment origin is fixed once a device enrolls. A custom hostname needs a Worker route or a proxy that rewrites Host; a bare DNS CNAME does not work. kukuroo.credentials.json holds the only copy of the keys, and the VAPID keypair cannot be rotated.
Cost on Cloudflare
Likely fits the free plan
The project documents that Workers Free handles about 20 devices comfortably and 50 per send at most, set by the 50-subrequest limit per invocation with the 10 ms CPU budget close behind. Workers Paid raises the ceiling to 10,000 devices per send.
The estimate is based on Cloudflare’s documented limits and the app’s configuration. What you pay depends on your usage and plan.
Where this comes from
- Repositoryhttps://github.com/saiday/kukuroo
- App websitehttps://kukuroo.cc
- Demohttps://demo.kukuroo.cc/
An alternative to Pushbullet, Pushover.
Listing history
- Oct 2, 2026 · Kukuroo listed
Similar apps
All Messaging & Notifications apps
Telegram bot that answers private and group chats with OpenAI, Anthropic or Workers AI models, set up in a Mini App
- Deploy
- One-click
- License
- MIT
- GitHub stars
- 3.8k stars
- Last commit

Telegram bot that pushes a domain's incoming email to chat, with a Mini App inbox and replies through Resend
- Deploy
- One-click
- License
- MIT
- GitHub stars
- 903 stars
- Last commit

Team chat with groups, DMs, voice notes and a Telegram bridge, deployed to your Cloudflare account via GitHub Actions
- Deploy
- Manual
- License
- GPL-3.0
- GitHub stars
- 751 stars
- Last commit