Every platform
iOS 16.4+ as a home-screen web app, Android, and modern desktop browsers. No app store.
Open source · runs on Cloudflare
biubiubiu is a lightweight, self-hosted Web Push server on Cloudflare Workers and D1. One HTTP request from a script, a cron job, CI or an AI agent, and your phone buzzes. No servers to maintain, no native app to install.
Deploys in about a minute. Free-plan friendly.
One line to send
A device key in the URL is all a quick alert needs. The JSON API adds tokens, device groups, Markdown, scheduling, end-to-end encryption and questions with buttons, typed replies and passkey checks. Webhook templates take GitHub, Grafana and Alertmanager as they are, and critical alerts repeat until you open them.
curl https://push.example.com/<deviceKey>/Backup%20done
curl -X POST https://push.example.com/api/send \
-H "Authorization: Bearer $TOKEN" \
-d '{"title":"Deploy","body":"v2.3.1 is live"}'
curl -X POST https://push.example.com/api/send \
-H "Authorization: Bearer $TOKEN" \
-d '{"title":"Deploy?","choices":["Ship it","Hold"]}'
curl -X POST https://push.example.com/api/send \
-H "Authorization: Bearer $TOKEN" \
-d '{"title":"Prod down","level":"critical","retry":120}'
Features
iOS 16.4+ as a home-screen web app, Android, and modern desktop browsers. No app store.
Each device gets its own revocable key; scoped API tokens for scripts; a master key to manage it all.
Broadcast to everyone, send to a device group, or pick specific devices.
Every push is archived with Markdown rendering, category filters, unread badges and TTL expiry.
Reuse an id to update a notification instead of stacking new ones. Ideal for build progress.
Queue a message with scheduledAt; a per-minute cron delivers it on time.
Bark-compatible AES-CBC payloads are decrypted on the device. The server only sees ciphertext.
Automatic retries, dead-subscription cleanup, subscription self-healing and per-device delivery logs.
Point GitHub, Grafana or Alertmanager straight at your server with ?template=github. Anything that posts to Slack, Discord or ntfy works too.
Send a critical message with retry and it pushes again every few minutes until someone opens it.
Built for AI agents
Coding agents finish, fail or get stuck while you are somewhere else. biubiubiu gives them a way to reach you, and a way for you to answer.
Streamable HTTP at /mcp gives any MCP client a send_notification tool. One command adds it to Claude Code.
ask_humanThe agent pushes a question with answer buttons or a reply box, and gets your answer the moment you tap. Risky choices can require Face ID or Touch ID.
An Agent Skill teaches the agent when to notify; Claude Code hooks ping you on every stop or permission prompt.
claude mcp add --transport http biubiubiu \
https://push.example.com/mcp \
--header "Authorization: Bearer $BIUBIUBIU_TOKEN"
npx skills add chada/biubiubiu --skill biubiubiu-notify
Claude Code
The bug is on both main and release/2.4. I can patch one now and open a PR.
askAccounts mode
Turn on accounts mode and everyone gets their own sign-in, with:
Optional and off by default. It needs Workers Paid; without it, biubiubiu runs on the free plan with one master key.
How accounts workThe app
All checks passed on main: 3 commits since v2.3.1.
deploy“Roll back” needs your passkey
412 tests passed in 3m 08s.
pr-52.example.devciGet started
The button copies the repository to your GitHub or GitLab, creates the D1 database, runs migrations and deploys the Worker.
Fill in MASTER_KEY, your admin password (for example openssl rand -base64 32). VAPID keys are generated for you.
Add the app to your home screen, allow notifications and copy your device key. Send your first biu.
Prefer the command line? See manual deployment.
biubiubiu is a free, open-source Web Push notification server that you self-host on Cloudflare Workers and D1. A script, cron job, CI pipeline or AI agent sends it one HTTP request, and it pushes a notification to your phone, tablet or desktop through the standard Web Push protocol.
biubiubiu itself is free. It runs on your own Cloudflare account, and the default master-key mode fits Cloudflare's free Workers plan. Only the optional accounts mode needs Workers Paid, because password hashing uses more CPU time than the free plan allows.
Yes. On iOS and iPadOS 16.4 or later, open your server in Safari, add it to the Home Screen and enable notifications. On Android and desktop, Chrome, Edge, Firefox and Safari receive push straight from the browser.
Yes. biubiubiu follows the URL and JSON API style of Bark, so existing Bark scripts and iOS Shortcuts keep working after you change the server address and device key, and the same messages now reach Android and desktop. A few Bark options, such as custom sounds and alarm-style critical alerts, are not possible with Web Push, but a critical message can re-alert until you open it.
Add the MCP server at /mcp to any MCP client (one command for Claude Code) and the agent gets a send_notification tool and an ask_human tool that pushes a question with answer buttons or a reply box and returns your answer the moment you give it; risky answers can require a passkey (Face ID or Touch ID). An Agent Skill (install it with npx skills add chada/biubiubiu) and Claude Code hooks are also included.
Pushover is a paid hosted service, and a self-hosted ntfy or Gotify needs a server you keep running. biubiubiu runs serverless on your own Cloudflare account, so there is nothing to patch or keep online; it delivers through standard Web Push without a native app, and it includes an MCP server for AI agents. Tools with built-in ntfy support can publish to it with a device key as the topic, and critical messages re-alert until acknowledged, like Pushover's emergency priority.
Only you. Messages are stored in the D1 database in your own Cloudflare account. With end-to-end encryption turned on, payloads are encrypted before they are sent and decrypted on the device, so the server only ever sees ciphertext.
Get started
Deploy your own push server in about a minute. Free, open source, and yours.