signal-client
Async Python framework for resilient Signal bots. Build fast on bbernhard/signal-cli-rest-api with typed helpers, resilient ingestion, and observability baked in.
Features
- Resilience First: Backpressure, DLQ retries, and rate/circuit breakers keep handlers stable during bursts.
- Typed Context Helpers: Replies, reactions, attachments, locks, and receipts all live on one ergonomic context.
- Operations Ready: Health and metrics servers, structured logging with PII redaction, and storage options (memory, SQLite, Redis).
Quick Start
1. Prerequisites
- A Signal phone number registered with
signal-cli. - A running
bbernhard/signal-cli-rest-apiinstance. - Export these environment variables:
export SIGNAL_PHONE_NUMBER="+15551234567" export SIGNAL_SERVICE_URL="http://localhost:8080" export SIGNAL_API_URL="http://localhost:8080"
2. Install
# Using poetry
poetry add signal_client
# Using pip
pip install signal-client
3. Create a Bot
import asyncio
from signal_client import SignalClient, command
@command("!ping")
async def ping(ctx):
await ctx.reply_text("pong")
async def main():
bot = SignalClient()
bot.register(ping)
await bot.start()
if __name__ == "__main__":
asyncio.run(main())
4. Run It
python your_bot_file.py
Documentation
For full guides, examples, and API references, see the official docs site.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
- Set up your development environment with
poetry install. - Activate pre-commit hooks with
poetry run pre-commit install.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for signal-client 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| signal_client-0.1.6.tar.gz | 58.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| signal_client-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 148.4 kB
Release files / signal_client-0.1.6.tar.gz
| Download URL | signal_client-0.1.6.tar.gz |
|---|---|
| Size | 58.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3d1801cfef0bf2d6ca41e0022e72a941ec301a4078faca7498dcce4feddaec0
|
|
BLAKE2b-256 checksum How to use checksums |
12610075997c951d2f63762526b7ef5d3d8efe7e1676b22946562fbd8049f5a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 8, 2025.
Transparency logRelease files / signal_client-0.1.6-py3-none-any.whl
| Download URL | signal_client-0.1.6-py3-none-any.whl |
|---|---|
| Size | 89.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a451086527ccdea059c16d0954c618eba407e2c4a29501165d9badc87e89f903
|
|
BLAKE2b-256 checksum How to use checksums |
37a38bbcec4fc0421e2f1ccf1c8e6277f2bbcadc8eb9902b80e9d7aab828867b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 8, 2025.
Transparency log