Skip to content

Conversation

@hughns
Copy link
Member

@hughns hughns commented Nov 3, 2025

This is an implementation of the rendezvous transport session part of MSC4388. This is part of the 2025 version of MSC4108

The implementation is independent of the existing experimental MSC4108 support in Synapse which is for the 2024 version.

Usage

It is configured using:

experimental_features:
  msc4388_mode: <mode>

Where mode is one of:

  • off (default): feature is disabled
  • authenticated: enabled and requires an authenticated user to create a rendezvous
  • public: enabled and no authentication is required

Implementation notes

For future reference when implementing a final/non-experimental version:

  • it would make sense to persist the rendezvous over a server restart
  • consider how this would work with workers - currently needs to be main worker
    • maximum concurrent sessions
    • specific rate limits?
    • maximum session duration?
  • would it be more maintainable in Python?

Notes once the MSC is accepted

Once this MSC is accepted into the spec I would propose that the default mode in Synapse be authenticated.

The is a trade-off between capabilities across the modes:

Mode Existing device can generate QR New device can generate QR
authenticated
public

For Element clients the user flow impact would be as follows:

Mode New EX can sign in using QR New EW can sign in using QR Existing EX can sign in a new EW/EX Existing EW can sign in a new EX
authenticated
public

Pull Request Checklist

  • Pull request is based on the develop branch
  • Pull request includes a changelog file. The entry should:
    • Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from EventStore to EventWorkerStore.".
    • Use markdown where necessary, mostly for code blocks.
    • End with either a period (.) or an exclamation mark (!).
    • Start with a capital letter.
    • Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry.
  • Code style is correct (run the linters)

This is an implementation of the rendezvous transport session part of MSC4388. This is part of the 2025 version of MSC4108

The implementation is independent of the existing experimental MSC4108 support in Synapse which is for the 2024 version of MSC4108.
@hughns hughns force-pushed the hughns/msc4108-2025 branch from 7a06a34 to a1305e2 Compare January 21, 2026 17:12
@hughns hughns changed the title Proof of MSC implementation of MSC4108 version 2025 Implementation of unstable MSC4388 Jan 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants