Stacks / Backend
ntfy / Gotify
Push notifications you host. ntfy is Apache-2.0; Gotify is MIT — OneSignal without the message pack.
The problem
OneSignal meters push across mobile and web. You wanted a server that accepts PUT/POST and fans out to devices you control. ntfy is Apache-2.0 (binwiederhier/ntfy). Gotify is MIT (gotify/server) if you want that WebSocket server plus a UI. Novu is listed in older catalogs as a pricing page — the novuhq/novu GitHub license file is LICENSE-ENTERPRISE, so it is not this OSS path. This is not every OneSignal journey, email, or SMS channel.
Replaces
OneSignal
Estimated SaaS saved
$1,200
per year, small team, before lock-in
Start on RailwayCentrifugo if this is WebSockets, not push to a phone
Placeholder: ntfy (or Gotify) as a Railway service with a volume. Bind HTTP to 0.0.0.0:$PORT. No one-click template in this repo yet — Start on Railway. WebSockets stay on /stacks/centrifugo-realtime.
The stack
Cost table
| You stop paying | Typical / year | Self-host instead |
|---|---|---|
| OneSignal (small team) | $1,200 | ntfy or Gotify |
Agent setup prompt
Replace OneSignal with ntfy (preferred) or Gotify. - Official image, persist, create one topic, send a test PUT. Install the ntfy or Gotify app on one phone you own. - Do not claim OneSignal journeys, email, or SMS. Write AGENT_PROMPT.md.
Also as markdown: /stacks/ntfy-push.md
FAQ
- ntfy or Gotify?
- ntfy if you want HTTP PUT/POST and phone apps. Gotify if you want a MIT WebSocket server and UI. Pick one.
- Why not Novu?
- novuhq/novu's GitHub license file is LICENSE-ENTERPRISE. This page stays on Apache-2.0/MIT servers.
- Is this Pusher?
- No. Pusher/Ably are WebSockets — /replace/pusher. This page is push notifications.