Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

NotiDeck

One platform. Every notification.

Send an event once. Route it to the right channels. Track every delivery attempt.

NotiDeck is a self-hosted notification hub for application events, database alerts, and operational messages. Manage your sources, channels, templates, and delivery queue from a web console, with your data stored in your own database.

Get started · Documentation · GitHub · Report an issue

Release status: NotiDeck is currently a pre-release. Install with --pre and review deployment guidance before using it in production.

Quick start

You need Python 3.11 or newer. The installed package includes the web console; Node.js is only needed when building from source. SQLite is the simplest way to try it.

1. Install in a virtual environment

python -m venv .venv

Activate it on macOS/Linux with source .venv/bin/activate, or in Windows PowerShell with .venv\Scripts\Activate.ps1. Then install and start NotiDeck:

python -m pip install --pre notideck
notideck serve

2. Complete browser setup

Open http://127.0.0.1:8000. The terminal prints the location of your private bootstrap.token file. Copy its contents into the setup wizard, choose your database, and create your administrator account. Keep this token private; it is different from a source API key.

3. Start delivery processing

In a second terminal, activate the same virtual environment and run:

notideck worker

Leave both processes running: the server receives events and serves the console; the worker sends queued notifications.

What you can do

  • Connect your applications: submit events using source API keys or signed webhooks.
  • Choose who gets notified: route by severity, environment, tags, or event metadata.
  • Make alerts readable: use templates for database errors, replication lag, backups, and more.
  • Keep track of delivery: inspect attempts, retries, failures, and queued notifications.
  • Stay in control: pause dispatch, retry failed jobs, and cancel pending jobs from the console.

How it works

Notification flow: your application sends an event to NotiDeck, routing rules select channels, a persistent queue holds deliveries, and workers send them to email, chat, or webhook destinations.

  1. Your application submits an event with a title, message, severity, and optional metadata.
  2. NotiDeck matches your routing rules and saves the notification and delivery jobs.
  3. A worker sends each delivery and records the result. Retryable failures are rescheduled.

Send your first notification

In the console:

  1. Add a Channel, configure its credentials, and use Test to check delivery.
  2. Add a Routing rule targeting that channel. For this example, match environment equals production and severity gte ERROR.
  3. Add a Source and create its API key. Copy the key when it is displayed.
  4. Submit an event and open Notifications to inspect the result.

Example for macOS/Linux:

export NOTIDECK_API_KEY='replace-with-your-source-api-key'

curl -X POST http://127.0.0.1:8000/api/v1/notifications \
  -H "Authorization: Bearer $NOTIDECK_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "environment": "production",
    "severity": "ERROR",
    "title": "Database replication lag",
    "message": "Replication lag exceeded 120 seconds.",
    "idempotency_key": "replication-alert-001"
  }'

A 202 response means the event was saved. A delivery marked SENT means the provider accepted it; it does not confirm that the recipient read or received it. Delivery is at least once, so a crash after provider acceptance can cause a duplicate send.

Channels and databases

Channel Verification so far
Email (SMTP), Telegram Live delivery confirmed during user testing
HTTP webhook Real HTTP delivery covered by automated smoke tests
Slack, Discord, WhatsApp templates, Twilio SMS, Signal bridge Adapters included; live account testing still needed

See channel setup for provider requirements and configuration.

Database Installation
SQLite Included; use one worker thread and local storage
PostgreSQL python -m pip install --pre "notideck[postgres]"
MySQL python -m pip install --pre "notideck[mysql]"
Oracle Experimental; see the support boundaries

PostgreSQL setup includes a TLS/SSL switch. Leave it unchecked for a server that does not use TLS. When enabled, certificate and hostname verification is the default.

Prefer Docker?

Docker Compose runs the server and worker with a shared persistent data volume.

git clone https://github.com/simtiaz019/NotiDeck.git
cd NotiDeck
docker compose up --build -d web
docker compose exec web cat /data/bootstrap.token

Open http://127.0.0.1:8000, enter the bootstrap token, and finish setup. Then start the worker:

docker compose up --build -d worker

The web port is bound to localhost. Keep the data volume and encryption key backed up; docker compose down -v deletes the volume. See the deployment guide for PostgreSQL, HTTPS, supervision, and backups.

A console for everyday operations

View recent events, find failed deliveries, manage channels and routing rules, and inspect the queue without writing SQL.

NotiDeck web console showing notification totals, recent events, and severity breakdown.

Console screenshot uses synthetic demonstration data.

Learn more

I want to… Guide
Install or configure NotiDeck Installation · Configuration
Integrate an application API · Routing
Customize messages Notification templates
Deploy safely Deployment · Security
Understand current scope Support boundaries · Changelog
Contribute or build a provider Development · Provider plugins

NotiDeck is licensed under Apache-2.0.

Metadata

Release files for notideck 0.1.0rc2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for notideck 0.1.0rc2
File Size Uploaded Provenance Actions
notideck-0.1.0rc2.tar.gz 1.0 MB With provenance Details for notideck-0.1.0rc2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for notideck 0.1.0rc2
File Interpreter ABI Platform Actions
notideck-0.1.0rc2-py3-none-any.whl Python 3 none any Details for notideck-0.1.0rc2-py3-none-any.whl

Total release size: 1.6 MB

Release files / notideck-0.1.0rc2.tar.gz

Download URL notideck-0.1.0rc2.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
ffa7d579a7433ad737dfbf5cce48c7bafe32f9ceade5bfdf3a84b48539983cd7
BLAKE2b-256 checksum
How to use checksums
9627f3c930d8ca2481d703ef16574a4ceb1c017e9315cd3b35eb97f682667198
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Release files / notideck-0.1.0rc2-py3-none-any.whl

Download URL notideck-0.1.0rc2-py3-none-any.whl
Size 634.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc4619b4ccbd151e688291f68b40431d7d76c796b4c50c8d0377eee911008500
BLAKE2b-256 checksum
How to use checksums
f3ee0e86d1a665b83de408c86a05bbc08c201d00506bfb1feb9912e6dcb7e747
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

Security for notideck 0.1.0rc2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for notideck-0.1.0rc2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page