Meeting Place

Toolkits for building messaging applications that provide secure methods to discover, connect, and communicate with individuals, businesses, and AI agents.

Meeting Place is an implementation of Affinidi Messaging that leverages the DIDComm v2.1 protocol, built on top of Decentralised Identifiers (DIDs). Unlike traditional identifiers such as email addresses or phone numbers, DIDs act as both the identity and the communication endpoint, enabling secure, private, and anonymous connections between parties. This approach keeps identity ownership with each participant, providing confidentiality and integrity in message exchange.

Affinidi Meeting Place Overview

Key features

Multi-DID identity

Each connection generates a unique set of DIDs, keeping interactions in separate privacy contexts across different relationships.

Consent-gated connections

Connection requests require the publisher's approval before a channel opens, preventing unsolicited inbound messages.

Private peer discovery

Participants publish connection offers via the Control Plane API. Others claim offers with a passphrase; the publisher approves before messaging begins.

DIDComm individual messaging

Encrypted one-to-one messaging over DIDComm v2.1 channels with presence indicators and delivery receipts.

Matrix E2EE group chat

Native end-to-end encrypted group rooms with persistent history, rich attachments, reactions, and message editing via Matrix transport.

Audio and video calling

LiveKit-powered calls in Flutter apps using Matrix RTC signalling and per-participant end-to-end encryption.

Verifiable credential exchange

Issues and exchanges Relationship Cards (R-Cards) and Verifiable Relationship Credentials (VRCs) over DIDComm, with optional Human ZKP liveness proof.

Key components

Identity

Unlike traditional chat apps that use email or phone numbers, Meeting Place allows users to maintain multiple identities for different contexts. Each connection, whether direct or in a group, creates a unique set of DIDs, enhancing privacy by separating identity contexts.

Affinidi Meeting Place Identities

Each connection established with another participant, whether direct or in a group chat, generates a unique set of Decentralised Identifiers (DIDs). This dynamic DID assignment enhances user privacy by separating identity contexts across different interactions.

Example:

  1. Alice and Bob connect directly using professional identities for a project.
  2. A unique set of DIDs is generated for each participant and for the secure channel.
  3. Later, Alice joins a separate group chat for another project using the same professional identity.
  4. A new DID is created for Alice in this context and another for the group channel.

This approach prevents identity reuse across conversations, improving privacy.

Discovery

The Control Plane API enables discovery and secure channel creation using DIDComm v2.1. Participants can publish a connection offer or invitation with one of their identities (e.g., gaming persona) for direct or group chat.

Affinidi Meeting Place Control Plane API

An invitation includes a description, validity, and optional vCard details.

Other participants claim the invitation using a passphrase, sending a connection request to the publisher. The publisher must approve the request before a secure channel is created.

When the channel is established, the system generates:

  • Channel DID to establish the connection.
  • DIDs for each participant using their selected identity.

  Deploy Control Plane API locally from source.

Meeting Place SDK

The Meeting Place SDK is a suite of composable Dart and Flutter packages. A minimal deployment needs only meeting_place_core and meeting_place_chat for DIDComm individual messaging. A full Matrix deployment adds meeting_place_matrix for group rooms and meeting_place_livekit_flutter for audio and video calls.

The Meeting Place SDK also leverages other Affinidi open-source SDKs, such as  DIDComm for Dart, which sends DIDComm messages, and  SSI for Dart, which manages decentralised identity and associated cryptographic keys.

What’s next

  Integrate Meeting Place into your Flutter project

  Explore different deployment options of DIDComm Mediator

  Run Affinidi Meeting Place Reference App for Flutter