# 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.

## 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.

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:

- Alice and Bob connect directly using professional identities for a project.

- A unique set of DIDs is generated for each participant and for the secure channel.

- Later, Alice joins a separate group chat for another project using the same professional identity.

- 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.

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](/products/affinidi-elements/affinidi-messaging/meeting-place/deployment-options/control-plane-open-sourced.md) 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.

      [

Matrix →

Matrix transport for the Meeting Place SDK, enabling native end-to-end encrypted individual and group chats, rich messaging features, and optional audio/video calling via LiveKit.

      ](/dev-tools/meeting-place/matrix.md)

      [

Chat →

Built on top of the core Meeting Place SDK that utilises Decentralised Identifier (DID) and DIDComm Messaging v2.1 protocol to send secure and private messages with end-to-end encryption.

      ](/dev-tools/meeting-place/chat.md)

      [

Credentials →

A Dart SDK for exchanging Relationship cards (R-Cards), Verifiable Relationship Credentials (VRCs), and optionally proving human liveness without sharing biometric data via Human Zero Knowledge Proof (Human ZKP). Built on DIDComm v2.1 and W3C Verifiable Credentials.

      ](/dev-tools/meeting-place/credentials.md)

      [

Core →

The core package implementing the Control Plane and Mediator SDK, including managing multiple digital identities for better privacy and anonymity in digital interactions.

      ](/dev-tools/meeting-place/core.md)

      [

Mediator →

Enables participants to connect and authenticate with mediators, such as the DIDComm mediator, to send messages and connection offers. Mediator does not store permanently the messages and the content is not visible to the mediator.

      ](/dev-tools/meeting-place/mediator.md)

      [

Control Plane →

Enables participants to publish connection offers, allowing other participants to connect and communicate with them securely. It is an interface that integrates with the Affinidi Meeting Place API service.

      ](/dev-tools/meeting-place/control-plane.md)

The Meeting Place SDK also leverages other Affinidi open-source SDKs, such as [DIDComm for Dart](https://github.com/affinidi/affinidi-didcomm-dart), which sends DIDComm messages, and [SSI for Dart](https://github.com/affinidi/affinidi-ssi-dart), which manages decentralised identity and associated cryptographic keys.

## What’s next

  [Integrate Meeting Place into your Flutter project](/products/affinidi-elements/affinidi-messaging/integration-guides/meeting-place.md)

  [Explore different deployment options of DIDComm Mediator](/products/affinidi-elements/affinidi-messaging/didcomm-mediator/deployment-options.md)

  [Run Affinidi Meeting Place Reference App for Flutter](/products/affinidi-elements/affinidi-messaging/run-reference-app.md)

## Pages in this section
- [Control Plane API deployment](/products/affinidi-elements/affinidi-messaging/meeting-place/deployment-options.md): Deployment options for the Meeting Place Control Plane API: Affinidi-hosted via the Portal or self-hosted using the open-source implementation.
- [Run reference app](/products/affinidi-elements/affinidi-messaging/meeting-place/run-reference-app.md): Run the reference app locally to explore and learn more about Meeting Place.

