MCPSERV.CLUB
Apprise

Apprise

Self-Hosted

Unified notification library for all popular services

Active(92)
14.7kstars
1views
Updated 19 days ago
Apprise screenshot

Overview

Discover what makes Apprise powerful

Apprise is a lightweight, **Python‑centric** notification gateway that abstracts the complexities of dozens of messaging platforms—Telegram, Discord, Slack, Amazon SNS, Gotify, email services, SMS gateways, and many more—into a single, consistent API. From a developer’s perspective it functions as both a **library** and a **CLI utility**, enabling seamless integration into scripts, applications, or DevOps workflows without the need to write platform‑specific adapters. Messages are dispatched asynchronously via thread pools, ensuring that latency does not block the main application flow.

Language

Core Modules

Provider System

Persistence

Overview

Apprise is a lightweight, Python‑centric notification gateway that abstracts the complexities of dozens of messaging platforms—Telegram, Discord, Slack, Amazon SNS, Gotify, email services, SMS gateways, and many more—into a single, consistent API. From a developer’s perspective it functions as both a library and a CLI utility, enabling seamless integration into scripts, applications, or DevOps workflows without the need to write platform‑specific adapters. Messages are dispatched asynchronously via thread pools, ensuring that latency does not block the main application flow.

Architecture & Technical Stack

  • Language: Pure Python 3 (≥3.8), with optional C extensions for performance‑critical sections.
  • Core Modules: apprise package exposes a Apprise() manager that parses URLs, loads providers, and orchestrates delivery.
  • Provider System: Each notification service is implemented as a subclass of apprise.NotifyBase. Providers are dynamically discovered via entry‑points, allowing third‑party extensions without modifying the core.
  • Persistence: Optional SQLite or file‑based storage for failed deliveries and retry queues; fully configurable via JSON/YAML config files.
  • Concurrency: Uses concurrent.futures.ThreadPoolExecutor for non‑blocking I/O; supports event‑loop integration (e.g., asyncio) through optional adapters.
  • Packaging: Distributed on PyPI; vendored with a setup.py that declares dependencies (e.g., requests, aiohttp, pydantic). The CLI (apprise) is a console script entry point.

Core Capabilities

  • Uniform Syntax: All providers accept URLs of the form service://user:pass@host/endpoint. The same syntax works for attachments (?attach=path/to/file) and payload modifiers.
  • Attachments & Media: Supports binary attachments, inline images, and base64‑encoded data for providers that allow it.
  • Retry & Persistence: Configurable retry policies (exponential backoff), persistent queues, and dead‑letter handling.
  • Custom Hooks: Developers can inject custom logic by subclassing NotifyBase or providing a Python module that implements the required interface; these hooks are loaded at runtime.
  • Event Hooks: Callback mechanisms (on_success, on_failure) expose event data to the calling application for logging or metrics.
  • Security: Credentials are stored in environment variables or encrypted config files; supports HTTPS/TLS validation.

Deployment & Infrastructure

  • Self‑Hosting: As a pure Python library, it can run on any OS with Python installed—Linux, macOS, Windows. No external services are required unless the target notification provider demands them.
  • Containerization: Official Docker images exist; a minimal Dockerfile layers the library and exposes only the CLI. Containers can be orchestrated via Docker Compose or Kubernetes, with sidecar patterns for monitoring.
  • Scalability: Thread pool size is configurable; the library can be instantiated per worker in a multi‑process environment (e.g., Gunicorn workers). For high throughput, the optional asyncio integration allows event‑loop scaling.
  • Resource Footprint: The core library is ~1 MB; runtime memory usage stays below 10 MiB for typical workloads.

Integration & Extensibility

  • Python API: Apprise() accepts a list of URLs or configuration files. Example usage (conceptual):
    from apprise import Apprise
    notifier = Apprise(['slack://token@channel', 'email://user:pass@smtp.server'])
    notifier.notify("Build succeeded", title="CI Pipeline")
    
  • CLI Tool: apprise command supports bulk notifications, config files, and environment variable overrides. Useful for cron jobs or alert scripts.
  • Webhooks: Providers that support webhooks (e.g., Discord) can be used to forward arbitrary JSON payloads; the library handles signature verification when configured.
  • Plugin Ecosystem: Third‑party providers are distributed as separate PyPI packages that register entry‑points. Developers can ship their own provider modules to the community.

Developer Experience

  • Documentation: Comprehensive README, API reference, and a detailed wiki covering provider configuration. Inline docstrings are auto‑generated via Sphinx.
  • Community: Active GitHub repository with frequent PR reviews, issue triage, and a Discord channel for real‑time support.
  • Testing: 90 %+ test coverage, continuous integration on GitHub Actions, and Codecov badges. This ensures reliability across provider changes.
  • Licensing: MIT license allows unrestricted use in commercial and open‑source projects.

Use Cases

ScenarioHow Apprise Helps
CI/CD AlertsA single notify call can push build status to Slack, Teams, and email simultaneously.
Infrastructure MonitoringA Prometheus exporter can call Apprise to surface alerts via SMS and Telegram.
IoT Edge DevicesLightweight Python agents on Raspberry Pi send sensor anomalies to MQTT and Gotify.
Cross‑Platform Desktop AppsElectron or Qt apps embed the library to push user notifications to multiple channels.
Enterprise MessagingA microservice aggregates logs and forwards critical events through a unified provider stack.

Advantages Over Alternatives

  • Single Unified API: No need to maintain separate SDKs or wrappers for each provider.
  • Asynchronous Delivery: Non‑

Open SourceReady to get started?

Join the community and start self-hosting Apprise today

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
apis-services
License
BSD-2-CLAUSE
Stars
14.7k
Technical Specs
Pricing
Open Source
Database
None
Supported OS
LinuxWindowsmacOS
Author
caronc
caronc
Last Updated
19 days ago