Product

A protocol SDK, not an infrastructure dependency.

Own application identity, session state, local secrets, and infrastructure composition while using one coherent JavaScript API.

Identity

Composite identity

A versioned X25519 and Ed25519 identity tuple becomes the trust object used by storage, transcripts, prekeys, rotation, and safety numbers.

Messaging

Session protocols

Build one-to-one and group messaging with explicit session state, replay boundaries, skipped-key limits, and recovery behavior.

Runtime

JavaScript environments

Target modern browsers, Node.js, and Expo through runtime-specific storage and platform adapters rather than separate protocol implementations.

Portable by construction

Private keys stay with your application.

Your runtime owns identity and session state. Explicit adapters connect the encrypted output to infrastructure you choose.

01Your applicationBrowser · Node · Expoprivate state
02Protocol SDKKeys · sessions · groupsciphertext out
03Your adaptersStorage · delivery · objectsexplicit boundary

The SDK defines the cryptographic and adapter contracts. It does not require a hosted Signal Protocol service.

Included

Portable client behavior

  • Identity and prekey lifecycle
  • Session establishment and ratcheting
  • Multi-device and group state
  • Safety-number generation and comparison
  • Storage and delivery contracts

Not imposed

Your infrastructure choices

  • No required hosted relay
  • No required database vendor
  • No access to customer plaintext
  • No SDK phone-home requirement
  • No hidden control-plane dependency

Developer workflow

Start with a local adapter and a test conversation.

Follow the quickstart