Skip to content

lucor/beebuzz

BeeBuzz logo

Private push notifications for your own devices

Send alerts from servers, scripts, apps, and webhooks without turning notification delivery into a chat system.

BeeBuzz is a focused Web Push delivery system for machine-to-person alerts. It supports two delivery modes:

  • Server-trusted notifications for fast HTTP, webhook, and third-party service integrations.
  • End-to-end encrypted notifications for senders you control, where the CLI encrypts locally and BeeBuzz stores only ciphertext.

BeeBuzz is built around paired personal devices, short-lived delivery state, and a small auditable stack: Go, SQLite, SvelteKit, Web Push, and Hive, its PWA receiver.

Quickstart Demo

Hosted beta flow, shown on the real stack with Site and Hive side by side.

quickstart-demo.mp4

Sign in, create a pairing code, pair Hive, create a token, and deliver the first notification.

BeeBuzz.app

BeeBuzz.app is the hosted BeeBuzz SaaS.

Hosted access is currently a beta for approved users. During the beta you can:

  • sign in after approval
  • pair a device with Hive
  • create API tokens scoped to topics
  • send trusted-mode notifications over HTTP
  • create webhook URLs for external services
  • install the CLI and send end-to-end encrypted notifications

Hosted access is free during beta. After beta, the hosted service is expected to move to a single paid plan so the project can stay sustainable. Self-hosting remains free, open source, and available under the AGPL license.

Start here: BeeBuzz quickstart.

How It Works

BeeBuzz has two delivery modes because not every sender can encrypt before calling the server.

Server-trusted BeeBuzz delivery flow End-to-end encrypted BeeBuzz delivery flow

In both modes, Web Push transport is encrypted in transit between BeeBuzz and the receiving browser. The difference is what the BeeBuzz server can read: trusted mode gives BeeBuzz plaintext notification content; E2E mode gives BeeBuzz only ciphertext plus routing and delivery metadata. In trusted mode, BeeBuzz validates the payload, handles short-lived attachment data when present, and dispatches the notification to paired devices.

Try It

Use trusted mode when the sender can trust BeeBuzz with the notification content:

curl https://push.beebuzz.app \
  -H "Authorization: Bearer $TOKEN" \
  -F title="Hello from BeeBuzz" \
  -F body="Trusted mode test"

Install the CLI from a GitHub release or with Go:

go install lucor.dev/beebuzz/cmd/beebuzz@latest

Then connect the CLI and send an encrypted notification:

beebuzz connect
beebuzz send "Hello from BeeBuzz"

In E2E mode, the CLI fetches paired device public keys, encrypts the payload locally with age, and uploads ciphertext as application/octet-stream. Hive fetches and decrypts the notification on the receiving device.

What's Inside

  • Server: Go + SQLite API for accounts, topics, API tokens, devices, attachments, and Web Push dispatch.
  • Site: SvelteKit web app for sign-in, device pairing, API tokens, webhook setup, and administration.
  • Hive: PWA receiver that handles Web Push, stores pairing state locally, and decrypts E2E notifications on-device.
  • CLI: sender for end-to-end encrypted notifications from terminals, scripts, and automation.

Documentation

Project Status

BeeBuzz is currently optimized for two workflows:

  1. get approved for the hosted beta and send your first notification quickly
  2. run the stack locally with a fast development loop

Detailed production self-hosting docs will come later.

License

BeeBuzz is licensed under the GNU Affero General Public License v3.0 only. See LICENSE.

Third-party dependencies are tracked in the Go and frontend dependency manifests.