Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/openmls/openmls/llms.txt

Use this file to discover all available pages before exploring further.

What is OpenMLS?

OpenMLS is a Rust implementation of the Messaging Layer Security (MLS) protocol, as specified in RFC 9420. It is a software library that can serve as a building block in applications that require end-to-end encryption of messages. OpenMLS has a safe and easy-to-use interface that hides the complexity of the underlying cryptographic operations, allowing you to focus on building secure messaging applications.

Key features

RFC-compliant

Full implementation of the MLS protocol as specified in RFC 9420

Multiple ciphersuites

Support for industry-standard ciphersuites including the mandatory-to-implement X25519 suite

Pluggable providers

Flexible architecture with interchangeable cryptographic, storage, and random number providers

Cross-platform

Built and tested on Linux, Windows, macOS, and mobile platforms including iOS and Android

Supported ciphersuites

OpenMLS supports the following MLS ciphersuites:
  • MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519 (mandatory-to-implement)
  • MLS_128_DHKEMP256_AES128GCM_SHA256_P256
  • MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519

Architecture highlights

Pluggable cryptography

OpenMLS does not implement its own cryptographic primitives. Instead, it relies on existing implementations through provider traits. This allows you to:
  • Use the built-in libcrux or Rust Crypto providers
  • Bring your own cryptographic implementation
  • Meet compliance requirements with specific crypto libraries

Safe and ergonomic API

The library provides a high-level MlsGroup API that abstracts away protocol complexity:
  • Create and manage groups
  • Add and remove members
  • Send and receive encrypted messages
  • Handle key updates and commits

Get started

Installation

Add OpenMLS to your Rust project and configure features

Quickstart

Build your first two-party encrypted group in minutes

Core concepts

Learn about MLS protocol fundamentals

User manual

Dive into detailed guides for group operations

Platform support

OpenMLS is built and tested on the following platforms: Fully supported and tested:
  • x86_64-unknown-linux-gnu
  • i686-unknown-linux-gnu
  • x86_64-pc-windows-msvc
  • i686-pc-windows-msvc
  • x86_64-apple-darwin
Built but not tested:
  • aarch64-apple-darwin
  • aarch64-unknown-linux-gnu
  • aarch64-linux-android
  • aarch64-apple-ios
  • aarch64-apple-ios-sim
  • wasm32-unknown-unknown
  • armv7-linux-androideabi
  • x86_64-linux-android
  • i686-linux-android
OpenMLS supports 32-bit platforms and above.

Maintenance and support

OpenMLS is maintained and developed by Phoenix R&D and Cryspen.

Community

Join the OpenMLS community: