Define message templates, send to lists via your own Twilio account or SMTP. Manage opt-ins and opt-outs. The notification layer every app eventually needs, owned by you.
Every operation in Notify is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/alerts — list all alerts with optional search and filter query parametersPOST /api/alerts — create a new alert recordGET /api/alerts/{id} — retrieve a single alert by IDPUT /api/alerts/{id} — update an existing alertDELETE /api/alerts/{id} — remove a alertGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringSaaS tools hold your data hostage. Export formats are incomplete, migrations are painful, and pricing changes whenever the vendor feels like it. Notify stores everything in SQLite on your own server. Your data is a file you control, back up, and query directly.
On first launch, Notify initializes a WAL-mode SQLite database and starts an HTTP server. The web dashboard and API share the same port. Creating an alert is a POST with JSON — the only required field is recipient. The response includes the generated ID and timestamp. Listing supports search, filtering, and returns items in reverse chronological order.
A regulated company runs Notify inside their air-gapped network. No data leaves the building. Compliance auditors can inspect the SQLite file directly. When the team needs a report, they query the API and format the output however the auditor expects.
GET /api/alerts — List all alerts. Supports ?q=keyword for search and ?status=value for filteringPOST /api/alerts — Create a new alert. Send JSON with at least recipientGET /api/alerts/{id} — Fetch one alert by IDPUT /api/alerts/{id} — Update fields on an existing alertDELETE /api/alerts/{id} — Remove a alertGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted SMS and notification sender. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool notify
PORT=9760 ./notify
http://localhost:9760
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 NOTIFY_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./notify
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.