Two kinds of document live here, and they answer different questions.
Guides answer "how do I use this". Start with the Quick Start and the
integration guide for your platform.
Reference answers "what is the contract" and "why is it like this". Read it
before changing behaviour, not before using the SDK.
| Guide |
Description |
| Architecture |
Design philosophy, crate organization, and system overview |
| API Reference |
Core types, configuration structs, main API, and events |
| Configuration |
All configuration parameters with use-case examples |
| Guide |
Description |
| DORS Deep Dive |
How the transport selection engine works (scoring, switching, escalation) |
| DORS Configuration |
Tuning DORS for different use cases with parameter reference |
| Message Delivery |
Delivery lifecycle, retry/ACK system, flush triggers, and client-side persistence |
| Mesh Networking |
Peer discovery, connection management, message delivery, and routing |
| Replicated Documents |
Offline-first shared state: spaces, collections, how edits merge, attachments, storage |
| MLS Encryption |
End-to-end encryption with auto-encryption and manual MLS APIs |
| Service Discovery |
Decentralized service registration, discovery, and request/response |
| Telemetry |
Wire up a telemetry sink for metrics, routing decisions, and MLS lifecycle |
| Transport Architecture |
Transport abstraction layer and how to add new transports |
| Reticulum Transport |
Reticulum mesh transport setup, architecture, and platform integration |
| Nostr Transport |
Nostr relay transport, censorship-resistant routing over WebSockets |
The wire and behaviour contract, independent of this implementation. A second
implementation written against these documents should interoperate.
| Document |
Scope |
| Specification index |
Layering, conformance language, the two overriding invariants |
| Identity and addressing |
Address derivation, canonical form, session and group identifiers |
| Message model and wire format |
The abstract message, the JSON floor, binary v1, the extension TLV registry |
| Control messages |
Reserved prefix registry, control-plane signing, the two exemption classes |
| Document replication |
Sync frames, anti-entropy, attachment references, blobs over the media path |
| Encryption envelopes |
MLS envelope forms, media chunk envelope, sealed rich payload |
| Group protocol |
Group frames, membership commits, leaf identity binding, relay broadcast |
| Capability negotiation |
What peers advertise, what it gates, what absence means |
| Leaf node provisioning |
What a constrained device owes at pairing, the never-committing profile |
| Document |
Governs |
| Overview |
The invariant that spans all six |
| Delivery and acknowledgements |
What happens to an inbound frame, and when a receiver acknowledges |
| Outbox and retries |
An outbound message from send to terminal state |
| Session lifecycle |
1:1 MLS establishment, confirmation, desync, and heal |
| Group message lifecycle |
A group message through fan-out, buffering, and drain |
| Transport lifecycle |
Transport availability, scoring, switching, escalation |
| Document replication |
A document from edit to durable record, a space from offer to convergence, an attachment fetch |
| Document |
Scope |
| ADR index |
Twenty-three decisions that are expensive to reverse or easy to undo by accident |
If something in the codebase looks redundant or over-engineered, check here
before simplifying it.
What each language binding owes the core, and what the core owes it. Every rule
in here fails silently when violated.
| Document |
Scope |
| Shared contract |
The ten rules every binding shares |
| Swift |
iOS native and the React Native iOS bridge |
| Kotlin |
Android native and the React Native Android bridge |
| Python |
Desktop and tooling |
| TypeScript |
The React Native JavaScript surface |
| Resource |
Description |
| CHANGELOG |
Unreleased changes and the current release |
| Changelog archive |
Older releases, one file per minor series |
| Resource |
Description |
| React Native Example App |
Complete messaging app demonstrating all SDK features |
| Example App Setup |
First-time setup for the example app |
| Example App Integration Guide |
Step-by-step project integration walkthrough |
| Mesh Wiki |
Mesh services: a device answering queries over BLE with no internet |
| Storage adapters |
SQLite ProtocolStateStorage implementations for Swift, Kotlin and Python |
cargo run -p offline-protocol --example replicated_notes |
Replicated documents: open a store, edit, persist, reopen |
cargo run -p offline-protocol-data --example offline_merge |
What two people editing the same document offline actually get back |
| Resource |
Description |
| Contributing Guide |
Development setup, code quality standards, and PR process |
| Resource |
Description |
| Licensing FAQ |
The dual license in practice: app stores, the AGPL's reach, commercial licensing |
| Export Control Notice |
Encryption export status of the SDK and what app teams must handle themselves |