/presage

A high-level library to write a client for the Signal Messenger written in Rust. Comes with a CLI to test everything.

Primary LanguageRustGNU Affero General Public License v3.0AGPL-3.0

Presage

CI License

A Rust library that helps building clients for the Signal Messenger, using libsignal-service-rs. It is designed to provide everything you need to get started.

⚠️ The API is considered unstable - I am still experimenting here.

Features:

  • Configuration and secrets storage (using sled)
    • Local encryption
  • Registration
    • SMS
    • Voice call
  • Link as secondary device from Android / iOS app (like Signal Desktop)
  • Synchronize contacts from primary device
  • Receive messages
  • Download + decrypt attachments
  • Send messages
  • Groups support

Instructions

Included in this repository is a CLI very similar (on purpose) to the great signal-cli:

# print help section
cargo run --example=cli -- --help

# link as secondary device, a PNG with a QR code to scan should open
cargo run --example=cli -- link-device --device-name presage

# start receiving messages
cargo run --example=cli -- receive

For usage of the library, a few examples are included under the examples/ directory, and most features are demonstrated in examples/cli.rs.