Affinidi Messaging
Complete trusted communication stack
Comprehensive messaging solution with DID-based protocols for encrypted message routing, and multi-party discovery and engagement mechanisms into integrated components.
Explore MoreEnable communication between people, business and AI agents without exposing identities. End-to-end encrypted channels built on DIDComm and open standards: privacy by default, trust by cryptography.
Affinidi Messaging is a communication system built on the DIDComm v2.1 protocol. It gives people, businesses and AI agents a way to discover each other, exchange verifiable data and hold private conversations without depending on a centralised platform or sharing personal identifiers up front.
A mediator routes encrypted messages between parties without ever seeing their contents, working like a decentralised SMTP relay. The same channel carries verifiable credential exchange, agent-to-agent calls and human conversations, all under the same identity model.
Less data exposure, faster onboarding, and no vendor dependency for every team.
Establish a channel with a passphrase or QR code, no email or phone number required before trust is built.
End-to-end encryption keeps message bodies private; the mediator only forwards sealed envelopes.
Built on DIDComm v2.1 and W3C DIDs. Switch providers, self-host on your own infrastructure, or connect with any compliant ecosystem without rebuilding your integration.
One trusted messaging capability with supporting infrastructure components for secure communication in the Internet of Trust.
Complete trusted communication stack
Comprehensive messaging solution with DID-based protocols for encrypted message routing, and multi-party discovery and engagement mechanisms into integrated components.
Explore MoreMessaging implementation for building DID-based peer-to-peer encrypted messaging into applications.
Explore MoreMessage relay providing routing and temporary storage without accessing message content.
Explore MoreBuild applications to discover, connect, and engage individuals, businesses, and AI agents.
Explore MoreEach party is identified by a DID. Messages are sealed end-to-end and handed to a mediator, which stores and forwards them without seeing the contents.
Identifies the sender with a Decentralised Identifier and signs and encrypts the message for the recipient.
+ seals messagePasses sealed envelopes between parties without decrypting them.
Holds messages until the recipient is online to collect them.
Sees routing metadata only; never the message body or credentials.
Picks up the encrypted message, verifies the sender and decrypts it with its own keys.
.. decrypts & verifiesUse the same encrypted channel for human conversations, credential exchange and agent-to-agent traffic, with the controls each team needs at their layer.
A customer scans a QR code or shares a passphrase and is connected to your business over an end-to-end encrypted DIDComm channel. No email, no phone number, no account is required to establish trust. From there, you can exchange verifiable credentials, run multi-party workflows, or let AI agents talk to each other on the same channel.
Because the mediator never sees the content of any message, you reduce data exposure by default. And because everything is built on open standards, you can self-host the mediator, switch providers, or interoperate with any DIDComm v2.1 system without rewriting your application.
Reduce regulatory exposure by collecting less data and proving every interaction with cryptography.
Drop a DIDComm channel into your stack without taking on cryptography or vendor lock-in.
Install the SDK, point at a mediator and you can send your first encrypted DIDComm message in three steps. Run the open-source Mediator on your own infrastructure or via AWS Marketplace.
From SDK setup to encrypted DIDComm messaging in minutes. Switch between Dart and Rust to see the same flow in your language.
# pubspec.yaml
dependencies:
didcomm: ^2.3.3
ssi: ^3.6.0 import 'package:didcomm/didcomm.dart';
import 'package:ssi/ssi.dart';
// Initialize DID manager with key store
final didManager = DidKeyManager(
wallet: PersistentWallet(InMemoryKeyStore()),
store: InMemoryDidStore(),
);
// Generate key and create DID
await wallet.generateKey(keyId: keyId, keyType: KeyType.p256);
await didManager.addVerificationMethod(keyId);
final didDoc = await didManager.getDidDocument(); // Create and encrypt message
final message = PlainTextMessage(
id: Uuid().v4(),
type: Uri.parse('https://example.com/protocols/1.0'),
from: clientDid, to: [recipientDid],
body: {'msg': 'Hello, secure world!'},
);
final signer = await didManager.getSigner(clientDid);
final encrypted = await DidcommMessage.packIntoSignedAndEncryptedMessages(
message, keyType: keyType,
recipientDidDocuments: [recipientDidDoc], signer: signer,
);
// Send via mediator
await mediatorClient.sendMessage(encrypted); Deploy the open-source DIDComm Mediator on your infrastructure or one-click from AWS Marketplace. Move between self-hosted and managed without changing app code.
See the open-source MediatorArchitecture overview, integration guides, Meeting Place SDK reference and DIDComm protocol details.
View DocumentationAffinidi Messaging is one part of the Affinidi Elements suite. Used with Elements Services and Vault, it closes the loop from issuing credentials to keeping them with the user to sharing them securely.
Issue, verify, request and manage Verifiable Credentials
A user-owned digital wallet
Join the Affinidi Messaging beta or start exploring the open-source stack today.
Sign up for early access to Affinidi Messaging and start building privacy-first channels.
Join Beta ProgrammeTalk to our team about your use case, deployment topology and integration plan.
Schedule a DemoSee architecture, integration guides and the open-source Mediator quickstart.
View Documentation