element-hq / element-hq/synapse
Synapse 1.150.0 does not expose MatrixRTC transports endpoint despite msc4143_enabled=true
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 600
- Avg merge
- 5d 22h
- Merged PRs (30d)
- 51
Description
### Description
I am trying to enable MatrixRTC (MSC4143) with Element Call + LiveKit on a self-hosted setup, but the endpoint `/_matrix/client/v1/rtc/transports` is not recognized by Synapse.
### Setup
- Synapse deployed via matrix-docker-ansible-deploy
- Element Web + Element Call
- LiveKit + lk-jwt-service working
- Reverse proxy: Traefik (playbook-managed)
### Configuration
In homeserver.yaml:
```yaml
experimental_features:
msc4143_enabled: true
matrix_rtc:
transports:
- type: livekit
livekit_service_url: "https://rtc.kimiu.fr/livekit/jwt"
```
### Well-known
`https://kimiu.fr/.well-known/matrix/client` returns:
```json
{
"m.homeserver": {
"base_url": "https://matrix.kimiu.fr",
"server_name": "kimiu.fr"
},
"org.matrix.msc4143.rtc_foci": [
{
"type": "livekit",
"livekit_service_url": "https://rtc.kimiu.fr/livekit/jwt"
}
]
}
```
### LiveKit
Health endpoint works:
`curl https://rtc.kimiu.fr/livekit/jwt/healthz` → HTTP 200
### Problem
This request returns 404 / M_UNRECOGNIZED:
```
curl -i https://matrix.kimiu.fr/_matrix/client/v1/rtc/transports \
-H "Authorization: Bearer "
```
Response:
```json
{
"errcode": "M_UNRECOGNIZED",
"error": "Unrecognized request"
}
```
### Expected
Synapse should expose the MatrixRTC transport endpoint when MSC4143 is enabled.
### Notes
- Synapse config clearly includes msc4143_enabled: true
- matrix_rtc block is present in homeserver.yaml
- Synapse has been restarted after config changes
Is there an additional flag or requirement to enable this endpoint?
Thanks
### Steps to reproduce
- list the steps
- that reproduce the bug
- using hyphens as bullet points
### Homeserver
matrix.kimiu.fr (self-hosted)
### Synapse Version
1.150.0
### Installation Method
Docker (matrixdotorg/synapse)
### Database
PostgreSQL (single server, no SQLite migration, no backup restore)
### Workers
Single process
### Platform
Debian 12 (OVH VPS), Synapse running in Docker via matrix-docker-ansible-deploy, Traefik reverse proxy, LiveKit + lk-jwt-service for MatrixRTC
### Configuration
MSC4143 enabled (`experimental_features.msc4143_enabled: true`)
```yaml
matrix_rtc configured with LiveKit:
matrix_rtc:
transports:
- type: livekit
livekit_service_url: "https://rtc.kimiu.fr/livekit/jwt"
```
No custom modules, no unusual presence or message retention settings.
### Relevant log output
No relevant errors found in Synapse logs.
The issue is reproducible via API:
```
curl -i https://matrix.kimiu.fr/_matrix/client/v1/rtc/transports \
-H "Authorization: Bearer "
```
Response:
HTTP/2 404
```
{"errcode":"M_UNRECOGNIZED","error":"Unrecognized request"}
```
### Anything else that would be useful to know?
Element Call standalone (https://call.kimiu.fr) works correctly.
LiveKit and JWT service are reachable and healthy:
`https://rtc.kimiu.fr/livekit/jwt/healthz` → HTTP 200
The `.well-known/matrix/client` endpoint is correctly configured and returns the expected RTC config.
The issue only affects the MatrixRTC integration via Synapse.
Contributor guide
Research direction
Start by checking Synapse's MatrixRTC client API routing and MSC4143 feature-gating for version 1.150.0, using the configured endpoint and homeserver.yaml settings described here. Reproduce the request with curl and trace whether the transport endpoint is registered; done means the endpoint returns the configured LiveKit transport, or the missing requirement is clearly identified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100