Rabun.sh

Push to your phone and desktop.

Self-hosted HTTP pub-sub notifications. Publish with curl. The API is ntfy-compatible.

Scripts finish. Backups complete. Builds fail. You want a tap on the shoulder — not another inbox.

Rabun.sh is a single Rust binary that speaks the ntfy HTTP API. POST to a topic and every subscriber hears it: the official Android and iOS apps, a browser PWA with Web Push, or rabun-sh subscribe --notify on the desktop. Topics are created on the fly. The topic name is the password.

You run it. No cloud account. MIT licensed.

Start using it, or read the code on GitHub.

Terminal session: rabun-sh init, serve, then curl posts Backup successful to a topic.

Compatible

Speaks ntfy

Publish with PUT or POST. Subscribe with a streaming GET. Official ntfy Android and iOS apps work as-is.

Private

Topics are the password

Topics appear on first publish or subscribe. Pick an unguessable name. You host the hub.

Phone

Web Push and ntfy apps

Install the bundled PWA, or point the official ntfy app at your origin and turn on instant delivery.

Desktop

CLI toasts

rabun-sh subscribe --notify talks to the desktop notification daemon. Scripts already know curl.

Simple

One Rust binary

init, check, serve, publish, subscribe, topic. No extra services to stand up for a first notification.

The hub

A notify server you run.

Publish from a backup script. Hear it on the devices you already carry.

Publish

curl or CLI

POST a body to /{topic}. Title, priority, and tags are headers — the same contract as ntfy.

Subscribe

Stream or poll

JSON, SSE, raw, or WebSocket. Replay recent messages with since= or poll the cache.

Phone

Background push

VAPID Web Push for an installed PWA. Instant delivery over /ws for the ntfy apps.

Custody

Your origin

MIT licensed. Optional write token. Production is systemd and Caddy on a host you administer.

Reach

One POST. Every subscriber.

The hub fans out to live streams, Web Push, and the official ntfy apps. Keepalive events keep the pipe open.

  1. Scripts

    curl, the rabun-sh CLI, or anything that can HTTP.
  2. Browser

    Open the page, generate a topic, allow notifications. Install it as a PWA for background push.
  3. Phone

    Add your origin in ntfy for Android or iOS. Same topic, instant delivery.

Send the first toast.

Clone it, init, serve. The topic name is the password.