diff --git a/README.md b/README.md index 46ca746..c64b553 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,23 @@ BeeBuzz logo -

Private push notifications for your own devices

+

Your tools. Your notifications. Your keys.

- Send alerts from servers, scripts, apps, and webhooks without turning notification delivery into a chat system. + End-to-end encrypted delivery first. Trusted delivery when needed.

-BeeBuzz is a focused Web Push delivery system for machine-to-person alerts. It -supports two delivery modes: +BeeBuzz is a focused push delivery system for private machine-to-person notifications from +servers, automations, scripts, apps, and webhooks. -- **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. +It is built for developers, homelabbers, and small teams sending notifications from +systems they control. Not chat, not a team inbox, not a general messaging +platform. + +It supports two delivery modes: + +- **End-to-end encrypted delivery** for senders you control, when they can encrypt before sending to BeeBuzz and BeeBuzz stores only ciphertext. +- **Trusted delivery** for fast HTTP, webhook, and third-party service integrations when they cannot encrypt before sending. 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 @@ -20,7 +26,7 @@ receiver. ## Quickstart Demo -Hosted beta flow, shown on the real stack with Site and Hive side by side. +Hosted beta flow, showing setup in BeeBuzz and delivery in Hive side by side. @@ -32,16 +38,8 @@ Hosted beta flow, shown on the real stack with Site and Hive side by side. [BeeBuzz.app](https://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](https://hive.beebuzz.app) -- 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 +Hosted access is currently a beta for approved users. 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. @@ -49,30 +47,31 @@ Start here: [BeeBuzz quickstart](https://beebuzz.app/docs/quickstart). ## How It Works -BeeBuzz has two delivery modes because not every sender can encrypt before -calling the server. +BeeBuzz has two delivery paths because not every sender can encrypt before +sending to BeeBuzz.
- Server-trusted BeeBuzz delivery flow + End-to-end encrypted BeeBuzz delivery flow - End-to-end encrypted BeeBuzz delivery flow + Server-trusted 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. +In both paths, Web Push transport is encrypted in transit between BeeBuzz and +the receiving browser. The difference is what BeeBuzz handles before delivery. +In trusted delivery, BeeBuzz receives the message, prepares delivery, handles +short-lived attachment data when present, and dispatches the notification to +paired devices. In end-to-end encrypted delivery, BeeBuzz stores ciphertext and +relays a minimal delivery envelope while Hive fetches and decrypts the message +on the receiving device. ## Try It -Use trusted mode when the sender can trust BeeBuzz with the notification content: +Use trusted mode when the sender cannot encrypt before sending: ```bash curl https://push.beebuzz.app \ @@ -96,7 +95,7 @@ beebuzz send "Hello from BeeBuzz" ``` In E2E mode, the CLI fetches paired device public keys, encrypts the payload -locally with [age](https://age-encryption.org), and uploads ciphertext as +locally with [age](https://age-encryption.org), and sends ciphertext as `application/octet-stream`. Hive fetches and decrypts the notification on the receiving device. diff --git a/docs/assets/readme/e2e-flow.svg b/docs/assets/readme/e2e-flow.svg index ca6dd79..d84d4e2 100644 --- a/docs/assets/readme/e2e-flow.svg +++ b/docs/assets/readme/e2e-flow.svg @@ -13,7 +13,7 @@ CLI Sender Fetches paired device public keys and encrypts - the payload locally before upload. + the payload locally before sending. ENCRYPTS LOCALLY diff --git a/web/apps/site/src/routes/+page.svelte b/web/apps/site/src/routes/+page.svelte index 7770592..2bbff3d 100644 --- a/web/apps/site/src/routes/+page.svelte +++ b/web/apps/site/src/routes/+page.svelte @@ -3,13 +3,15 @@ import { ArrowRight, BellRing, + Cloud, CodeXml, + Eye, ExternalLink, - Globe, LockKeyhole, + Send, Server, ShieldCheck, - Zap + Smartphone } from '@lucide/svelte'; import { BeeBuzzLogo, isLoggedIn } from '@beebuzz/shared'; import { onMount } from 'svelte'; @@ -32,59 +34,50 @@ icon: typeof Server; }; - type ProofPoint = { - label: string; - value: string; - description: string; - }; - const useCases: UseCase[] = [ { - title: 'Homelab and personal infrastructure', - description: - 'Get private alerts from your server, router, backups, or cron jobs without relying on chat apps.', + title: 'Homelab and self-hosted services', + description: 'Notifications from servers, routers, backups, cron jobs, and homelab services.', icon: Server }, { - title: 'CI, deployments, and automation', - description: - 'Send deploy results, pipeline failures, and workflow notifications directly to the devices you control.', + title: 'Scripts, cron, and CI/CD', + description: 'Notifications from scripts, deployments, pipelines, and scheduled jobs.', icon: CodeXml }, { - title: 'Monitoring that reaches you fast', - description: - 'Deliver operational messages with less noise than email and more control than general-purpose messengers.', + title: 'Private delivery to your devices', + description: 'Direct delivery to your own devices, or to a small set of paired devices.', icon: BellRing } ]; - const proofPoints: ProofPoint[] = [ - { - label: 'Delivery model', - value: 'Trusted or end-to-end encrypted', - description: - 'Start fast in trusted mode or use paired-device encryption when privacy is the priority.' - }, - { - label: 'Client footprint', - value: 'One PWA across desktop and mobile', - description: 'Hive runs from a single install path and pairs devices for encrypted delivery.' - }, - { - label: 'Operational posture', - value: 'Open source and auditable', - description: - 'Inspect the code, self-host your own instance, or evaluate the hosted beta before committing.' - } + type FlowNode = { + label: string; + description: string; + icon: typeof Send; + }; + + const e2eNodes: FlowNode[] = [ + { label: 'Sender', description: 'Encrypts locally', icon: Send }, + { label: 'BeeBuzz', description: 'Stores ciphertext only', icon: Server }, + { label: 'Web Push', description: 'Delivers encrypted envelope', icon: Cloud }, + { label: 'Hive', description: 'Fetches and decrypts', icon: Smartphone } + ]; + + const trustedNodes: FlowNode[] = [ + { label: 'Sender', description: 'Sends the message', icon: Send }, + { label: 'BeeBuzz', description: 'Reads to prepare delivery', icon: Server }, + { label: 'Web Push', description: 'Delivers', icon: Cloud }, + { label: 'Hive', description: 'Shows the message', icon: Smartphone } ]; - BeeBuzz | Encrypted Push For Servers And Apps + BeeBuzz | Your tools. Your notifications. Your keys. @@ -130,20 +123,18 @@
-

- Private push for servers and apps -

- Simple, private push notifications with real end-to-end encryption. + Your tools.
Your notifications.
Your keys.

- BeeBuzz delivers alerts over Web Push with a small, auditable stack. In E2E mode, the - server stores ciphertext instead of plaintext. + BeeBuzz is a push delivery system for private machine-to-person notifications from + servers, automations, scripts, apps, and webhooks. Use end-to-end encrypted delivery + when the sender can encrypt; use trusted delivery when it can't.

@@ -172,50 +163,9 @@ {#if isSaasMode}

- Hosted access is free during beta. After beta, the hosted service will move to a - single paid plan, priced to keep the project sustainable. Self-hosting remains free - and open source. -

-

- If your email is already approved, you can sign in now. Otherwise the same flow - submits your access request. + Hosted access is currently in beta. Self-hosting is open source under AGPL.

{/if} - -
-
-
- -

Optional end-to-end delivery

-
-

- In E2E mode, pair devices so BeeBuzz stores ciphertext instead of plaintext message - bodies. -

-
- -
-
- -

One job, done simply

-
-

- BeeBuzz is not a general messaging platform. It is a focused delivery path for the - alerts you actually care about. -

-
- -
-
- -

Minimal client model

-
-

- Use the same Hive PWA across desktop and mobile without extra apps or extra moving - parts. -

-
-

- How it works + Quickstart

From sign-in to first message

@@ -284,8 +234,7 @@ Create one API token or webhook

- Choose the integration path that matches your system, from API calls to outbound - event hooks. + Choose the integration path that matches your sender.


@@ -302,54 +251,37 @@

Send your first message

- Start with the fastest setup path, then refine delivery mode and privacy controls - as needed. + Use encrypted delivery when possible, or trusted delivery when the sender cannot + encrypt.

- - {#if isSaasMode} -
-

Already approved?

-

- Continue to your account, then pair a device in Hive. -

- -
- {/if}
-
-

- Who it is for -

-

- BeeBuzz is strongest when the alert matters and the audience is small. +
+

+ Built for private machine-to-person notifications

- This is not another team chat surface. It is a delivery path for messages you want to - send directly from machines to people, with tighter control over privacy and attention. + For developers, homelabbers, and small teams sending notifications from systems they + control. Not chat, not a team inbox, not a general messaging platform.

{#each useCases as useCase (useCase.title)}
-
- +
+
+ +
+

{useCase.title}

-

{useCase.title}

{useCase.description}

{/each} @@ -358,50 +290,178 @@
-

- Trust and evaluation +

How delivery works

+

+ Two delivery modes, chosen by one question: can the sender encrypt before it talks to + BeeBuzz?

-

- Strong product claims need a fast way to verify them. -

-
- {#each proofPoints as point (point.label)} -
-

- {point.label} -

-

{point.value}

-

{point.description}

-
- {/each} -
+
+ +
+
+
+
+ +
+
+
+

+ End-to-end encrypted delivery +

+ Recommended +
+
+
-
-
-

- Evaluate BeeBuzz through the path that fits your risk profile. -

-

- Read the setup guide, inspect the code, or test the hosted beta if you want the - shortest path to first delivery. -

+
+ {#each e2eNodes as node, index (node.label)} + {@const isPivot = node.label === 'BeeBuzz'} +
+
+ +
+

+ {node.label} +

+

+ {node.description} +

+
+ + {#if index < e2eNodes.length - 1} + + {/if} + {/each} +
+ +
+ +

+ BeeBuzz can't read the message. +

+
+ +
+

+ Example senders +

+
+ BeeBuzz CLI + BeeBuzz libraries + Home Assistant plugin +
+
+
-
- {#if isSaasMode} - Quickstart - {/if} - - View Source - + + +
+
+
+
+ +
+
+
+

Trusted delivery

+ When needed +
+
+
+ +
+ {#each trustedNodes as node, index (node.label)} + {@const isPivot = node.label === 'BeeBuzz'} +
+
+ +
+

+ {node.label} +

+

+ {node.description} +

+
+ + {#if index < trustedNodes.length - 1} + + {/if} + {/each} +
+ +
+ +

+ BeeBuzz can read the message to prepare delivery. +

+
+ +
+

+ Example senders +

+
+ Webhooks + cURL + CI/CD +
+
+