Notify is a minimal, free notification center. Send any message to your desktop over a webhook, whether a deploy, an alert, or a ping to yourself. Auto-categorized, never lost offline.
Tray-resident and a few MB of memory. Custom categories, and full history kept in local SQLite.
curl -d "Nightly backup complete" \ notify-server.saasflare.dev/v1/send/ntfy_…
Tap a tab and the card pops top-right. It’s a simulation: exactly how the installed desktop app would render this message.
POST a JSON payload to your personal webhook URL, from CI, cron, a monitor, or any script. Anything that speaks HTTP is a sender; no SDK, no keys.
Each account gets its own Durable Object: an isolated queue with a live WebSocket to your desktop. Messages buffer while you are offline.
The resident desktop app pops a card toast, files it by category, counts unread in the tray, and keeps full history in local SQLite.
A message is a template key plus data, never markup, never code. The desktop app renders it with components compiled into the bundle, so senders stay untrusted and cards stay fast. Unknown templates fall back to plain text; nothing is dropped.
Browse card templates →{
"category": "deploy", // grouping, unread, filters
"template": "deploy", // key into the card registry
"data": { // props for that card
"title": "Build finished",
"branch": "main",
"status": "ok"
},
"style": { "accent": "#22c55e", "urgency": "normal" },
"actions": [{ "label": "View logs", "url": "https://…" }]
}WebSocket from a per-user Durable Object; no polling, idle costs nothing.
Queued before pushed, deleted only after your desktop acknowledges.
Every message lands in local SQLite, searchable and readable offline.
Messages carry a template key and data. Components ship in the app; code never travels.
One Durable Object per user. Your queue, connections and storage are physically yours.
Tray-resident, a few MB of memory, categories with unread counts instead of noise.
Notify is still in beta, so it isn’t Apple code-signed or notarized yet (a paid Developer account is in the works). macOS blocks the first launch — but you only allow it once: open it, dismiss the dialog, then go to System Settings → Privacy & Security and click Open Anyway at the bottom.
The complete source and a private GitHub seat. Self-host, customize, and ship it as your own.