Async Python framework for resilient Signal bots. Build fast on `bbernhard/signal-cli-rest-api` with typed helpers, resilient ingestion, and observability baked in.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file signal_client-0.1.6.tar.gz.
File metadata
- Download URL: signal_client-0.1.6.tar.gz
- Upload date:
- Size: 58.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3d1801cfef0bf2d6ca41e0022e72a941ec301a4078faca7498dcce4feddaec0
|
|
| MD5 |
650a83c0a031f928d4c4d6324f719fc2
|
|
| BLAKE2b-256 |
12610075997c951d2f63762526b7ef5d3d8efe7e1676b22946562fbd8049f5a2
|
Provenance
The following attestation bundles were made for signal_client-0.1.6.tar.gz:
Publisher:
release.yml on cornellsh/signal-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
signal_client-0.1.6.tar.gz -
Subject digest:
a3d1801cfef0bf2d6ca41e0022e72a941ec301a4078faca7498dcce4feddaec0 - Sigstore transparency entry: 749137462
- Sigstore integration time:
-
Permalink:
cornellsh/signal-client@39bfc853a0368bdfe74e1facc0c0f320cae70586 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/cornellsh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@39bfc853a0368bdfe74e1facc0c0f320cae70586 -
Trigger Event:
release
-
Statement type:
File details
Details for the file signal_client-0.1.6-py3-none-any.whl.
File metadata
- Download URL: signal_client-0.1.6-py3-none-any.whl
- Upload date:
- Size: 89.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a451086527ccdea059c16d0954c618eba407e2c4a29501165d9badc87e89f903
|
|
| MD5 |
03d2691bc08859329ae438e279873776
|
|
| BLAKE2b-256 |
37a38bbcec4fc0421e2f1ccf1c8e6277f2bbcadc8eb9902b80e9d7aab828867b
|
Provenance
The following attestation bundles were made for signal_client-0.1.6-py3-none-any.whl:
Publisher:
release.yml on cornellsh/signal-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
signal_client-0.1.6-py3-none-any.whl -
Subject digest:
a451086527ccdea059c16d0954c618eba407e2c4a29501165d9badc87e89f903 - Sigstore transparency entry: 749137465
- Sigstore integration time:
-
Permalink:
cornellsh/signal-client@39bfc853a0368bdfe74e1facc0c0f320cae70586 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/cornellsh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@39bfc853a0368bdfe74e1facc0c0f320cae70586 -
Trigger Event:
release
-
Statement type: