Metadata-Version: 2.4
Name: bitcaster
Version: 3.0
Author-email: Bitcaster Team <info@bitcaster.io>
License: OS4D
License-File: LICENSE.md
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.13
Requires-Python: ==3.13.*
Requires-Dist: aiohttp>=3.14.1
Requires-Dist: apscheduler>=3.11.2
Requires-Dist: click>=8.3.1
Requires-Dist: colorlog>=6.10.1
Requires-Dist: cron-descriptor>=2.0.6
Requires-Dist: cryptography>=48.0.1
Requires-Dist: django-ace>=1.43.5
Requires-Dist: django-admin-extra-buttons>=2.1.1
Requires-Dist: django-adminactions>=2.3
Requires-Dist: django-adminfilters>=2.6
Requires-Dist: django-allauth[mfa]>=65.16.1
Requires-Dist: django-anymail>=10.3
Requires-Dist: django-concurrency>=2.5
Requires-Dist: django-constance>=3.1
Requires-Dist: django-csp>=3.8
Requires-Dist: django-debug-toolbar>=4.3
Requires-Dist: django-environ>=0.11.2
Requires-Dist: django-filter>=24.2
Requires-Dist: django-flags>=5.0.13
Requires-Dist: django-jsoneditor>=0.2.4
Requires-Dist: django-markdownify>=0.9.6
Requires-Dist: django-migration-linter>=5.2
Requires-Dist: django-online-issues[github]>=0.6
Requires-Dist: django-push-notifications>=3.1
Requires-Dist: django-pwa>=1.0.12
Requires-Dist: django-redis>=5.4
Requires-Dist: django-regex>=0.5
Requires-Dist: django-reversion>=5.0.12
Requires-Dist: django-smart-selects>=1.7.2
Requires-Dist: django-storages[azure,dropbox,google,s3]>=1.14.3
Requires-Dist: django-strategy-field>=3.1
Requires-Dist: django-stubs>=4.2.7
Requires-Dist: django-svelte-jsoneditor>=0.4.2
Requires-Dist: django-taggit>=5.0.1
Requires-Dist: django-tailwind>=4.4.2
Requires-Dist: django-timezone-field>=6.1
Requires-Dist: django-tinymce>=5
Requires-Dist: django-unfold>=0.72
Requires-Dist: django<6,>=5.2.15
Requires-Dist: djangorestframework>=3.15
Requires-Dist: dramatiq>=2
Requires-Dist: drf-extensions>=0.7.1
Requires-Dist: drf-spectacular-sidecar>=2026.4.14
Requires-Dist: drf-spectacular>=0.27.1
Requires-Dist: httpagentparser>=1.9.5
Requires-Dist: jmespath>=1.0.1
Requires-Dist: jsonschema>=4.24
Requires-Dist: lxml>=6.1
Requires-Dist: mailjet-rest>=1.3.4
Requires-Dist: msgpack>=1.2.1
Requires-Dist: oauthlib>=3.3.1
Requires-Dist: phonenumbers>=9
Requires-Dist: pika>=1.3.2
Requires-Dist: pillow>=12.2
Requires-Dist: pip>=26.1.2
Requires-Dist: premailer>=3.10
Requires-Dist: psycopg2-binary>=2.9.9
Requires-Dist: py-vapid>=1.9
Requires-Dist: pyasn1>=0.6.3
Requires-Dist: pygments>=2.20
Requires-Dist: pyjwt>=2.13
Requires-Dist: pyopenssl>=26
Requires-Dist: python-magic>=0.4.27
Requires-Dist: pywebpush>=2
Requires-Dist: qrcode>=7.4.2
Requires-Dist: requests-oauthlib>=2
Requires-Dist: requests>=2.33.1
Requires-Dist: sentry-sdk>=1.43
Requires-Dist: setuptools>=75.3
Requires-Dist: slack-sdk>=3.27.1
Requires-Dist: twilio>=9.10.5
Requires-Dist: user-agents>=2.2
Description-Content-Type: text/markdown

# Bitcaster

[![Test](https://github.com/bitcaster-io/bitcaster/actions/workflows/test.yml/badge.svg)](https://github.com/bitcaster-io/bitcaster/actions/workflows/test.yml)
[![Lint](https://github.com/bitcaster-io/bitcaster/actions/workflows/lint.yml/badge.svg)](https://github.com/bitcaster-io/bitcaster/actions/workflows/lint.yml)
[![security scan](https://github.com/bitcaster-io/bitcaster/actions/workflows/security.yml/badge.svg)](https://github.com/bitcaster-io/bitcaster/actions/workflows/security.yml)
[![GitHub Code Scanning](https://img.shields.io/github/search/bitcaster-io/bitcaster/label%3Asecurity-event?label=security%20issues)](https://github.com/bitcaster-io/bitcaster/security)
[![codecov](https://codecov.io/gh/bitcaster-io/bitcaster/graph/badge.svg?token=kAuZEX5k5o)](https://codecov.io/gh/bitcaster-io/bitcaster)
[![License](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbitcaster-io%2Fbitcaster%2Fdevelop%2Fpyproject.toml&query=project.license.text&label=license)](https://github.com/bitcaster-io/bitcaster?tab=License-1-ov-file)
[![Docker](https://img.shields.io/docker/pulls/os4d/bitcaster)](https://hub.docker.com/r/os4d/bitcaster/tags)
[![GitHub Release](https://img.shields.io/github/v/release/bitcaster-io/bitcaster)](https://github.com/bitcaster-io/bitcaster/releases)


Bitcaster is a system-to-user **signal-to-message** notification system.

In a usual IT environment, every application must implement multiple protocols to deliver messages to its users (email, SMS, chat, push notifications) — a costly and hard-to-manage problem. Bitcaster moves the notification system from the application layer to the infrastructure layer: it receives signals from any of your applications and systems through a simple RESTful API and converts them into messages distributed across a plethora of channels.

- **Intelligent routing** — payload filtering with JMESPath, dynamic recipient filtering, and environment-aware routing so signals reach exactly the right audience.
- **Flexible templates** — plain text, HTML, and Markdown rendering per channel, with dynamic context injection via a Django-based template engine.
- **Omnichannel delivery** — Email, SMS, Slack, Microsoft Teams, and WebPush through a single REST API.
- **Multi-tenancy & governance** — hierarchical Organizations > Projects > Applications isolation, scoped API keys, SSO (Azure AD, GitHub Enterprise, Google Workspace), and full auditability of every occurrence.
- **User empowerment** — a preference console lets recipients choose how and where they receive each type of message.
- **Operational scalability** — scheduled monitoring agents and a cloud-native Python/Django core built for high-volume signal processing.

## Available Dispatchers

| Dispatcher | Channel |
| --- | --- |
| [EmailDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/email.py) | Email (SMTP) |
| [GMailDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/gmail.py) | Email (Gmail) |
| [MailgunDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/mailgun.py) | Email (Mailgun) |
| [MailJetDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/mailjet.py) | Email (Mailjet) |
| [SendGridDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/sendgrid.py) | Email (SendGrid) |
| [SystemDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/sys.py) | Email (system) |
| [TwilioSMS](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/twilio.py) | SMS |
| [SlackDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/slack.py) | Slack |
| [TeamsDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/teams.py) | Microsoft Teams |
| [XDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/x.py) | X (Twitter) |
| [RabbitMQDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/rabbitmq.py) | Message queue |
| [UserMessageDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/user_message.py) | In-app user messages |
| [LocalDatabaseDispatcher](https://github.com/bitcaster-io/bitcaster/blob/develop/src/bitcaster/dispatchers/log.py) | Log (local DB, for testing) |

## Getting Started

- [Quick start](https://bitcaster-io.github.io/bitcaster/run/) — install and run Bitcaster
- [Documentation](https://bitcaster-io.github.io/bitcaster/) — full user and admin guides
- [API reference](https://bitcaster-io.github.io/bitcaster/api/) — RESTful signal API
- [Stack samples](https://github.com/bitcaster-io/bitcaster/tree/develop/stack-samples) — ready-to-use deployment examples
- [Docker Hub](https://hub.docker.com/r/os4d/bitcaster/tags) — container images

## Resources

- [Home](https://www.bitcaster.io/)
- [Documentation](https://bitcaster-io.github.io/bitcaster/)
- [Bug Tracker](https://github.com/bitcaster-io/bitcaster/issues)
- [Code](https://github.com/bitcaster-io/bitcaster/)
- [Transifex](https://explore.transifex.com/bitcaster/bitcaster/) (Translate Bitcaster!)
- [License](https://github.com/bitcaster-io/bitcaster/blob/develop/LICENSE.md)
- [Security policy](https://github.com/bitcaster-io/bitcaster/blob/develop/SECURITY.md)

## Contributing

Please read [CONTRIBUTING.md](https://github.com/bitcaster-io/bitcaster/blob/develop/CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.
