Ntfy

TAS Score: S3/3 — D5/5 — A3 / T2

Brief Description

Simple HTTP-based pub-sub notification service. Send push notifications to your phone or desktop from any script, cron job, or monitoring tool with a single curl command. No account, no API key, no app registration.

Architectural Role

Notification layer: the glue between your infrastructure and your attention. Uptime Kuma detects downtime → ntfy pushes alert to your phone. Backup script finishes → ntfy notifies you. Any service that can make an HTTP request can send notifications through ntfy.

Technical Autonomy

  • ✅ Works without internet (LAN delivery to connected clients)
  • ✅ Stores messages locally (configurable cache)
  • ✅ Does not require external accounts
  • ✅ Allows data export (messages are plain text over HTTP)
  • ⚠️ iOS push requires upstream relay through ntfy.sh (Apple restriction)

Philosophical Assessment (whose.world criteria)

Criterion Status Comments
Pause Stop the container, no data loss. Messages queue on sender side.
Exit Messages are ephemeral. Configuration is a single YAML file.
Recoverability Stateless by design. Redeploy from config in minutes.
Visibility Fully open source, dual-licensed Apache 2.0 / GPL 2.0.
External Dependencies Fully self-hosted. iOS push optionally uses ntfy.sh relay.

Configuration (Minimal)

services:
  ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    command: serve
    ports:
      - "2586:80"
    volumes:
      - ./data/ntfy/cache:/var/cache/ntfy
      - ./data/ntfy/etc:/etc/ntfy
    restart: unless-stopped

Send a notification:

curl -d "Backup complete" http://your-server:2586/alerts

Alternatives

Alternative Autonomy Notes
Gotify A3 / T2 Similar concept, WebSocket-based instead of HTTP pub-sub. No iOS app.
Pushover A0 / T0 Cloud-only, proprietary. One-time purchase.
Firebase Cloud Messaging A0 / T0 Google’s push service. Required for iOS/Android background push.

Trajectory

Direction: stable.

ntfy has been consistently maintained by a single developer with a clear vision: simple, self-hostable notifications. The dual license (Apache 2.0 / GPL 2.0) is maximally permissive. Paid plans exist for the hosted service but do not gate any self-hosted features.

Signal assessment:

Signal Status Evidence
License Dual Apache 2.0 / GPL 2.0. No changes.
Feature gating All features available in self-hosted version. Paid plans are for hosted service only.
Self-hosting First-class self-hosting support. Single binary or Docker.
Governance ⚠️ Single maintainer (binwiederhier). Bus factor = 1.

Signal key: ✅ opening · ➖ neutral · ⚠️ closing


Sources


This site uses Just the Docs, a documentation theme for Jekyll.