Element Call
Group video calls in your Matrix room, end-to-end encrypted (MatrixRTC)
Screenshots
About this app
Video and voice calls for everyone in the room, from Element. Join from the lobby, share your screen, react and raise your hand; in an encrypted room the media is end-to-end encrypted per participant.
Element Call is a MatrixRTC client: who is in the call is room state
(org.matrix.msc3401.call.member, not encrypted, like all room state),
and the audio and video go through a LiveKit SFU that your homeserver
provides. The widget asks the homeserver for its RTC transports, gets a
LiveKit token from the homeserver's MatrixRTC authorisation service with an
OpenID token, and connects to that SFU. There is no Marcade server in the
path — but a homeserver without MatrixRTC (a plain Synapse without LiveKit)
cannot place calls. Element Server Suite ships both parts.
Media keys are exchanged as encrypted to-device messages; a delayed "leave" event removes you from the call if your client disappears. Calls interoperate with the Element Call that Element Web, Element X and other MatrixRTC clients start in the same room.
This is upstream Element Call built by Marcade from a fork with a few small
patches, so it works when added from the store: it reads the room and user
from the parameters the Marcade Player passes, opens the call lobby instead
of the standalone app, and explains how to add it if those parameters are
missing (see MARCADE.md in the source).
Add to a room
No /addwidget line yet: this app is neither hosted by Marcade nor pointed at a public deployment.
Permissions
Capabilities this widget may request. The Marcade Player asks for your consent before granting any of them.
- Stay on screen while active (e.g. during a call)
m.always_on_screen - Send room state events of type “org.matrix.msc3401.call.member” ({userId})
org.matrix.msc2762.send.state_event:org.matrix.msc3401.call.member#{userId} - Send room state events of type “org.matrix.msc3401.call.member” ({userId}_{deviceId}_m.call)
org.matrix.msc2762.send.state_event:org.matrix.msc3401.call.member#{userId}_{deviceId}_m.call - Send room state events of type “org.matrix.msc3401.call.member” (_{userId}_{deviceId}_m.call)
org.matrix.msc2762.send.state_event:org.matrix.msc3401.call.member#_{userId}_{deviceId}_m.call - Read room state events of type “org.matrix.msc3401.call.member”
org.matrix.msc2762.receive.state_event:org.matrix.msc3401.call.member - Read room state events of type “m.room.create”
org.matrix.msc2762.receive.state_event:m.room.create - Read room state events of type “m.room.encryption”
org.matrix.msc2762.receive.state_event:m.room.encryption - Read room state events of type “m.room.member”
org.matrix.msc2762.receive.state_event:m.room.member - Read room state events of type “m.room.name”
org.matrix.msc2762.receive.state_event:m.room.name - Schedule delayed events
org.matrix.msc4157.send.delayed_event - Update or cancel delayed events
org.matrix.msc4157.update_delayed_event - org.matrix.msc4515.rtc_transports
- Send room events of type “org.matrix.msc4143.rtc.member”
org.matrix.msc2762.send.event:org.matrix.msc4143.rtc.member - Read room events of type “org.matrix.msc4143.rtc.member”
org.matrix.msc2762.receive.event:org.matrix.msc4143.rtc.member - org.matrix.msc4407.send.sticky_event
- org.matrix.msc4407.receive.sticky_event
- Send room events of type “org.matrix.msc4075.call.notify”
org.matrix.msc2762.send.event:org.matrix.msc4075.call.notify - Send room events of type “org.matrix.msc4075.rtc.notification”
org.matrix.msc2762.send.event:org.matrix.msc4075.rtc.notification - Send room events of type “org.matrix.msc4310.rtc.decline”
org.matrix.msc2762.send.event:org.matrix.msc4310.rtc.decline - Read room events of type “org.matrix.msc4310.rtc.decline”
org.matrix.msc2762.receive.event:org.matrix.msc4310.rtc.decline - Send room events of type “io.element.call.reaction”
org.matrix.msc2762.send.event:io.element.call.reaction - Read room events of type “io.element.call.reaction”
org.matrix.msc2762.receive.event:io.element.call.reaction - Send room events of type “m.reaction”
org.matrix.msc2762.send.event:m.reaction - Read room events of type “m.reaction”
org.matrix.msc2762.receive.event:m.reaction - Send room events of type “m.room.redaction”
org.matrix.msc2762.send.event:m.room.redaction - Read room events of type “m.room.redaction”
org.matrix.msc2762.receive.event:m.room.redaction - Send room events of type “io.element.call.encryption_keys”
org.matrix.msc2762.send.event:io.element.call.encryption_keys - Read room events of type “io.element.call.encryption_keys”
org.matrix.msc2762.receive.event:io.element.call.encryption_keys - Send to-device messages of type “io.element.call.encryption_keys”
org.matrix.msc3819.send.to_device:io.element.call.encryption_keys - Receive to-device messages of type “io.element.call.encryption_keys”
org.matrix.msc3819.receive.to_device:io.element.call.encryption_keys - Send room events of type “org.matrix.rageshake_request”
org.matrix.msc2762.send.event:org.matrix.rageshake_request - Read room events of type “org.matrix.rageshake_request”
org.matrix.msc2762.receive.event:org.matrix.rageshake_request - Access the timeline of room “{roomId}”
org.matrix.msc2762.timeline:{roomId} - Download files and media through the client (e.g. images, avatars)
org.matrix.msc4039.download_file - Send to-device messages of type “m.call.invite”
org.matrix.msc3819.send.to_device:m.call.invite - Receive to-device messages of type “m.call.invite”
org.matrix.msc3819.receive.to_device:m.call.invite - Send to-device messages of type “m.call.candidates”
org.matrix.msc3819.send.to_device:m.call.candidates - Receive to-device messages of type “m.call.candidates”
org.matrix.msc3819.receive.to_device:m.call.candidates - Send to-device messages of type “m.call.answer”
org.matrix.msc3819.send.to_device:m.call.answer - Receive to-device messages of type “m.call.answer”
org.matrix.msc3819.receive.to_device:m.call.answer - Send to-device messages of type “m.call.hangup”
org.matrix.msc3819.send.to_device:m.call.hangup - Receive to-device messages of type “m.call.hangup”
org.matrix.msc3819.receive.to_device:m.call.hangup - Send to-device messages of type “m.call.reject”
org.matrix.msc3819.send.to_device:m.call.reject - Receive to-device messages of type “m.call.reject”
org.matrix.msc3819.receive.to_device:m.call.reject - Send to-device messages of type “m.call.select_answer”
org.matrix.msc3819.send.to_device:m.call.select_answer - Receive to-device messages of type “m.call.select_answer”
org.matrix.msc3819.receive.to_device:m.call.select_answer - Send to-device messages of type “m.call.negotiate”
org.matrix.msc3819.send.to_device:m.call.negotiate - Receive to-device messages of type “m.call.negotiate”
org.matrix.msc3819.receive.to_device:m.call.negotiate - Send to-device messages of type “m.call.sdp_stream_metadata_changed”
org.matrix.msc3819.send.to_device:m.call.sdp_stream_metadata_changed - Receive to-device messages of type “m.call.sdp_stream_metadata_changed”
org.matrix.msc3819.receive.to_device:m.call.sdp_stream_metadata_changed - Send to-device messages of type “org.matrix.call.sdp_stream_metadata_changed”
org.matrix.msc3819.send.to_device:org.matrix.call.sdp_stream_metadata_changed - Receive to-device messages of type “org.matrix.call.sdp_stream_metadata_changed”
org.matrix.msc3819.receive.to_device:org.matrix.call.sdp_stream_metadata_changed - Send to-device messages of type “m.call.replaces”
org.matrix.msc3819.send.to_device:m.call.replaces - Receive to-device messages of type “m.call.replaces”
org.matrix.msc3819.receive.to_device:m.call.replaces
Backend services
This widget requires a companion service to work:
matrixrtc
What's new in 0.28.0
First Marcade build: Element Call 0.28.0. Works when added from the store: reads the room and user from the Marcade Player, opens the call lobby, and explains the /addwidget line for Element Web if they are missing. Needs a homeserver with MatrixRTC (LiveKit).
Information
- Version
- 0.28.0
- Section
- Community — Built by Marcade CI from a pinned commit; the capability list has been audited.
- License
- AGPL-3.0-only
- Author
- Element (New Vector Ltd); Marcade build by Yan Minagawa
- Source code
- https://github.com/yncyrydybyl/element-call
- Issue tracker
- https://github.com/element-hq/element-call/issues
- State event types
org.matrix.msc3401.call.member- Encrypted rooms
- Supported
- Widget ID
io.element.call