Self-hosted web push Cloudflare Worker, works on iOS

saiday1 pts1 comments

Kukuroo: self-hosted web push worker for iOS

Self-hosted web push worker,<br>works on iOS.

A push endpoint you own, in one Cloudflare Worker.

Notifications you have to act on should not be buried in a Telegram<br>channel, a Discord server, or email.

The other way onto a lock screen is shipping a native app whose only<br>job is that one line.

Install Kukuroo<br>Try it on your iPhone

Thursday, 7 August

9:41

Task W13 finished W14 is unblocked and ready to start

now

Watchlist Omnium Cargo is down 14%

9m ago

Deploy finished kukuroo.cc is live

25m ago

New post &ldquo;Moving to the US because I&rsquo;m too rich&rdquo;

1h ago

No server to keep alive.<br>A Worker and a KV namespace. Nothing to host, renew, or restart at 3am.

No company in the middle.<br>Your keys stay in your Worker, and the payload is encrypted to the<br>device. Nobody's dashboard sees your alerts.

No app to build.<br>iOS has rendered these natively since 18.4. No App Store, no $99 a<br>year for four words on a lock screen.

Send a push notification in seconds

From the agent you left running, the moment it finishes<br>or stops to ask. From cron, CI, a Raspberry Pi, your backend, a shell<br>alias. Anything that can make an HTTP call can ring your phone.

bash

$ curl -X POST https://push.example.com/push/send \<br>-H "authorization: Bearer $KUKUROO_SEND_TOKEN" \<br>-d '{"notification":{"title":"Task W13 finished",<br>"body":"W14 is unblocked and ready to start",<br>"navigate":"https://push.example.com/"}}'<br>{"delivered":1,"removed":0,"failures":[]}

One-Click Integration

Setup takes less than a minute. One command writes the Worker, generates<br>every key, installs them, provisions storage, and deploys.

bash

$ npx kukuroo init my-push

That's it. You now have a push server of your own. Open<br>the printed URL in Safari on your iPhone, Add to Home Screen, and open it<br>from the icon. Apple's rule, once per device.

Already have a Worker running as your website?

Then Kukuroo mounts into the router you already have, rather than asking<br>for a Worker of its own. Devices enroll on your hostname, which is where<br>a notification tap should land.

The mounted setup, step by step &rarr;

Prerequisites

Kukuroo supports a short list, on purpose:

Cloudflare Workers. The only place it runs. No Docker image,<br>no binary, no other host.

Safari. Declarative Web Push has shipped nowhere else yet.<br>Other browsers are turned away at the enrollment page rather than left<br>half working.

iOS 18.4 or later , with the page on your Home Screen and<br>opened from the icon. A Safari tab will not do, and that is Apple's rule<br>rather than ours. macOS Safari 18.5 receives too, if you can think of a<br>reason to want it.

A Cloudflare account. Push and Workers suit each other<br>unusually well, and the free plan carries a personal setup without<br>noticing: 50 devices per send, 100,000 requests a day. If it ever grows<br>past you, $5 a month takes that to 10,000 devices per send and 10<br>million requests.

push worker kukuroo cloudflare screen send

Related Articles