biubiubiu

Open source · runs on Cloudflare

Push notifications from anything, straight to your phone.

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

If it can make an HTTP request, it can reach you.

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.

Quick GET with a device key
curl https://push.example.com/<deviceKey>/Backup%20done
JSON to every device, with an API token
curl -X POST https://push.example.com/api/send \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"title":"Deploy","body":"v2.3.1 is live"}'
Ask a question, then wait for the answer
curl -X POST https://push.example.com/api/send \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"title":"Deploy?","choices":["Ship it","Hold"]}'
Critical: push again until someone opens it
curl -X POST https://push.example.com/api/send \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"title":"Prod down","level":"critical","retry":120}'

Features

Small server, everything you need.

Every platform

iOS 16.4+ as a home-screen web app, Android, and modern desktop browsers. No app store.

Per-device keys

Each device gets its own revocable key; scoped API tokens for scripts; a master key to manage it all.

Flexible targeting

Broadcast to everyone, send to a device group, or pick specific devices.

Message center

Every push is archived with Markdown rendering, category filters, unread badges and TTL expiry.

In-place updates

Reuse an id to update a notification instead of stacking new ones. Ideal for build progress.

Scheduled delivery

Queue a message with scheduledAt; a per-minute cron delivers it on time.

End-to-end encryption

Bark-compatible AES-CBC payloads are decrypted on the device. The server only sees ciphertext.

Reliable delivery

Automatic retries, dead-subscription cleanup, subscription self-healing and per-device delivery logs.

Webhook templates

Point GitHub, Grafana or Alertmanager straight at your server with ?template=github. Anything that posts to Slack, Discord or ntfy works too.

Re-alerts until acknowledged

Send a critical message with retry and it pushes again every few minutes until someone opens it.

Built for AI agents

Walk away from the terminal. Your agent will call.

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.

MCP server

Streamable HTTP at /mcp gives any MCP client a send_notification tool. One command adds it to Claude Code.

ask_human

The 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.

Skill and hooks

An Agent Skill teaches the agent when to notify; Claude Code hooks ping you on every stop or permission prompt.

Claude Code
claude mcp add --transport http biubiubiu \
  https://push.example.com/mcp \
  --header "Authorization: Bearer $BIUBIUBIU_TOKEN"
Agent Skill
npx skills add chada/biubiubiu --skill biubiubiu-notify
Set up your agent

Accounts mode

Share one server with family or a team.

Turn on accounts mode and everyone gets their own sign-in, with:

  • Invites, so you decide who joins
  • Their own devices and inbox
  • Personal send tokens for their scripts
  • Password resets by push or email

Optional and off by default. It needs Workers Paid; without it, biubiubiu runs on the free plan with one master key.

How accounts work

The app

An inbox that lives on your home screen.

Inbox with Needs you, day sections and group filters
A question from an agent, answered with one tap
Markdown messages, updated in place by id

Get started

Your own push server in three steps.

  1. Deploy

    The button copies the repository to your GitHub or GitLab, creates the D1 database, runs migrations and deploys the Worker.

  2. Set a master key

    Fill in MASTER_KEY, your admin password (for example openssl rand -base64 32). VAPID keys are generated for you.

  3. Open it on your phone

    Add the app to your home screen, allow notifications and copy your device key. Send your first biu.

Deploy to Cloudflare

Prefer the command line? See manual deployment.

FAQ

Questions, answered.

Still curious? Ask on GitHub.

What is biubiubiu?

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.

How much does it cost?

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.

Does it work on iPhone without installing an app?

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.

Can I use it as a Bark alternative, including on Android?

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.

How do AI agents like Claude Code notify me?

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.

How is it different from ntfy, Gotify or Pushover?

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.

Who can read my notifications?

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

Your phone, one request away.

Deploy your own push server in about a minute. Free, open source, and yours.