Real-time, without compromise

When someone in your family sends you a message, you want to know immediately. Shoal handles this with the open Web Push standard — the same protocol Slack, GitHub, and most modern PWAs use.

But unlike most apps, Shoal sends encrypted payloads. The push services that route the notification (Apple’s APNs, Google’s FCM, Mozilla’s Mozilla Push Service) see metadata — your subscription endpoint, the size of the payload, the time it arrived — and nothing else.

How it works

  1. When you grant notification permission, your device generates a VAPID keypair and registers with the appropriate push service.
  2. When a new message arrives at the Shoal server, an encrypted payload is queued via Cloudflare Queues.
  3. A queue consumer encrypts the notification payload to your device’s public key and dispatches it through Web Push.
  4. Your device receives the encrypted blob, decrypts it locally, and displays the notification.

What this gives you

  • Notifications arrive within seconds, anywhere your device is connected.
  • The push service infrastructure can never see what your messages say.
  • Notifications work whether the app is open, backgrounded, or completely closed.
  • Granular per-conversation muting, with a global “do not disturb” — coming soon.