Desktop notifications, without the noise

Webhook in.Toast on your desktop.

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.

Download free ↓Read the docs
Lives in your menu bar

One quiet place for everything.

Tray-resident and a few MB of memory. Custom categories, and full history kept in local SQLite.

Notify
NotifyNotify
onStack toasts
All4
alerts1
ci2
deploy1
Sign outSign out
All · 4Mark all read
offline msg 2
ci · 2026/6/10 17:55:45
offline msg 1
ci · 2026/6/10 17:55:45
M2 alert check
alerts · 2026/6/10 17:54:13
M2 persistence check
deploy · 2026/6/10 17:54:13
ci · text
offline msg 2
Received while offline and replayed on reconnect. Stored in local SQLite, searchable and readable any time.
RECEIVED
2026/6/10 17:55:45
MESSAGE ID
89a088cc-4cc3-4b45-a0b0
Mark readCopy payload
Sending is one POST to a URL
curl -d "Nightly backup complete" \
  notify-server.saasflare.dev/v1/send/ntfy_…
Start with a line. Add structure when you need it.

Tap a tab and the card pops top-right. It’s a simulation: exactly how the installed desktop app would render this message.

How it works

Webhook to toast in three moves.

01

Send

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.

02

Route

Each account gets its own Durable Object: an isolated queue with a live WebSocket to your desktop. Messages buffer while you are offline.

03

Receive

The resident desktop app pops a card toast, files it by category, counts unread in the tray, and keeps full history in local SQLite.

The protocol

Only data over the wire, templates in the app.

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://…" }]
}
Built in

Everything a quiet inbox needs.

Real-time push

WebSocket from a per-user Durable Object; no polling, idle costs nothing.

At-least-once delivery

Queued before pushed, deleted only after your desktop acknowledges.

Local-first history

Every message lands in local SQLite, searchable and readable offline.

Card templates

Messages carry a template key and data. Components ship in the app; code never travels.

Tenant isolation

One Durable Object per user. Your queue, connections and storage are physically yours.

Quiet by design

Tray-resident, a few MB of memory, categories with unread counts instead of noise.

Free foreverreadyNothing to deploy — download, sign in, done.

Get the app.

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.

Download for macOS.dmg · Apple Silicon
Download for WindowsComing soon
Download for LinuxComing soon
Source license

Own the whole thing.

The complete source and a private GitHub seat. Self-host, customize, and ship it as your own.

Source License

For teams & tinkerers
$99$79one-time · per seat
Get the source →
  • includedFull source — server, web, desktop
  • includedComplete AGENTS.md guides covering every dev detail
  • includedA private GitHub repository seat
  • includedOne-click private deploy to Cloudflare
  • includedRebrand and rebuild the desktop app
  • includedEvery future update, no add-on fees
Pay once, keep it forever.