Send web push notifications to your users without Firebase. VAPID keys, subscription management, delivery tracking. For apps that need push without Google in the middle.
Every operation in Bellringer is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/notifications — list all notifications with optional search and filter query parametersPOST /api/notifications — create a new notification recordGET /api/notifications/{id} — retrieve a single notification by IDPUT /api/notifications/{id} — update an existing notificationDELETE /api/notifications/{id} — remove a notificationGET /api/stats — aggregated statisticsGET /api/health — health check endpoint for monitoringMost notifications tools fall into two camps: free products that harvest your data, or enterprise platforms that cost more than the problem they solve. Bellringer exists because neither option makes sense when you just need a reliable web push notification server under your own control.
A devops team integrates Bellringer into their CI pipeline. A post-deploy hook creates a notification record via the API. The stats endpoint feeds a Grafana panel. When something goes wrong, the team searches notifications by keyword to find related records without switching tools.
The data model stores each notification with 7 fields: title, body, url, icon, channel. All fields are queryable through the search API. The dashboard renders notifications as cards with inline metadata. Creating, editing, and deleting records is immediate — no save-and-deploy cycle.
GET /api/notifications — List all notifications. Supports ?q=keyword for searchPOST /api/notifications — Create a new notification. Send JSON with at least titleGET /api/notifications/{id} — Fetch one notification by IDPUT /api/notifications/{id} — Update fields on an existing notificationDELETE /api/notifications/{id} — Remove a notificationGET /api/stats — Returns total countGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted web push notification server. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool bellringer
PORT=10050 ./bellringer
http://localhost:10050
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export BELLRINGER_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./bellringer
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.