Group calls powered by Matrix
翻译准备中
正在加载完整 README。
查看完整 README ↗The world's first 🌐 decentralized and 🤝 federated video conferencing solution powered by the Matrix protocol.
Element Call is a native Matrix video conferencing application developed by Element, designed for secure, scalable, privacy-respecting, and decentralized video and voice calls over the Matrix protocol. Built on MatrixRTC (MSC4143), it utilizes MSC4195 with LiveKit as its backend.
You can find the latest development version continuously deployed to call.element.dev.
[!NOTE] For prior version of the Element Call that relied solely on full-mesh logic, check
full-meshbranch.
✅ Decentralized & Federated – No central authority; works across Matrix homeservers. ✅ End-to-End Encrypted – Secure and private calls. ✅ Standalone, Widget & Component Mode – Use as an independent app, embed in Matrix clients as a widget, or (experimentally) mount it as a React component inside your own application. ✅ WebRTC-based – No additional software required. ✅ Scalable with LiveKit – Supports large meetings via SFU (MSC4195: MatrixRTC using LiveKit backend). ✅ Raise Hand – Participants can signal when they want to speak, helping to organize the flow of the meeting. ✅ Emoji Reactions – Users can react with emojis 👍️ 🎉 👏 🤘, adding engagement and interactivity to the conversation.
Element Call is developed using the Matrix js-sdk with Matroska mode. This allows the app to run either as a Standalone App directly connected to a homeserver with login interfaces or it can be used as a widget within a Matrix client.
In Standalone mode, Element Call operates as an independent, full-featured video conferencing web application, enabling users to join or host calls without requiring a separate Matrix client.
When used as a widget 🧩, Element Call is solely responsible for the core calling functionality (MatrixRTC). Authentication, event handling, and room state updates (via the Client-Server API) are handled by the hosting client. Communication between Element Call and the client is managed through the widget API.
Element Call can be embedded as a widget inside apps like Element Web or Element X (iOS, Android), bringing MatrixRTC capabilities to messenger apps for seamless decentralized video and voice calls within Matrix rooms.
[!IMPORTANT] Embedded packaging is recommended for Element Call in widget mode!
Element Call offers two packaging options: one for standalone or widget deployment, and another for seamless widget-based integration into messenger apps. A third, experimental option builds it as a React component library for applications that want to render a call inside their own page rather than in an iframe. Below is an overview of each option.
Full Package – Supports both Standalone and Widget mode. It is hosted as a static web page and can be accessed via a URL when used as a widget.
Embedded Package – Designed specifically for Widget mode only. It is bundled with a messenger app for seamless integration and this is the recommended method for embedding Element Call.
Component Package (experimental) – A library build of Element Call as a React component, consumed as a dependency by a host application that already has a Matrix client. See Element Call as a component below.
For more details on the packages, see the Embedded vs. Standalone Guide.
For operating and deploying Element Call on your own server, refer to the Self-Hosting Guide.
For proper operation of Element Call, each deployment needs to set up a MatrixRTC transport in the form of a LiveKit server as outlined in the Self-Hosting Guide. A typical federated site deployment for three different sites A, B and C is depicted below.
Element Call discovers the available MatrixRTC transports (as defined by
MSC4519) by
hitting the GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports
endpoint of the Client-Server API. An example response:
{
"rtc_transports": [
{
"type": "livekit",
"livekit_service_url": "https://matrix-rtc.example.com/livekit/jwt"
}
]
}
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗