• Stars
    star
    402
  • Rank 107,380 (Top 3 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Group calls powered by Matrix

Element Call

Chat Translate

Group calls with WebRTC that leverage Matrix and an open-source WebRTC toolkit from LiveKit.

For prior version of the Element Call that relied solely on full-mesh logic, check full-mesh branch.

A demo of Element Call with six people

To try it out, visit our hosted version at call.element.io. You can also find the latest development version continuously deployed to call.element.dev.

Host it yourself

Until prebuilt tarballs are available, you'll need to build Element Call from source. First, clone and install the package:

git clone https://github.com/vector-im/element-call.git
cd element-call
yarn
yarn build

If all went well, you can now find the build output under dist as a series of static files. These can be hosted using any web server of your choice.

You may also wish to add a configuration file (Element Call uses the domain it's hosted on as a Homeserver URL by default, but you can change this in the config file). This goes in public/config.json - you can use the sample as a starting point:

cp config/config.sample.json public/config.json
# edit public/config.json

Because Element Call uses client-side routing, your server must be able to route any requests to non-existing paths back to /index.html. For example, in Nginx you can achieve this with the try_files directive:

server {
    ...
    location / {
        ...
        try_files $uri /$uri /index.html;
    }
}

By default, the app expects you to have a Matrix homeserver (such as Synapse) installed locally and running on port 8008. If you wish to use a homeserver on a different URL or one that is hosted on a different server, you can add a config file as above, and include the homeserver URL that you'd like to use.

Element Call requires a homeserver with registration enabled without any 3pid or token requirements, if you want it to be used by unregistered users. Furthermore, it is not recommended to use it with an existing homeserver where user accounts have joined normal rooms, as it may not be able to handle those yet and it may behave unreliably.

Therefore, to use a self-hosted homeserver, this is recommended to be a new server where any user account created has not joined any normal rooms anywhere in the Matrix federated network. The homeserver used can be setup to disable federation, so as to prevent spam registrations (if you keep registrations open) and to ensure Element Call continues to work in case any user decides to log in to their Element Call account using the standard Element app and joins normal rooms that Element Call cannot handle.

Configuration

There are currently two different config files. .env holds variables that are used at build time, while public/config.json holds variables that are used at runtime. Documentation and default values for public/config.json can be found in ConfigOptions.ts.

Translation

If you'd like to help translate Element Call, head over to translate.element.io. You're also encouraged to join the Element Translators space to discuss and coordinate translation efforts.

Development

Frontend

Element Call is built against matrix-js-sdk. To get started, clone, install, and link the package:

git clone https://github.com/matrix-org/matrix-js-sdk.git
cd matrix-js-sdk
yarn
yarn link

Next, we can set up this project:

git clone https://github.com/vector-im/element-call.git
cd element-call
yarn
yarn link matrix-js-sdk

You're now ready to launch the development server:

yarn dev

Backend

A docker compose file is provided to start a LiveKit server and auth service for development. These use a test 'secret' published in this repository, so this must be used only for local development and never be exposed to the public Internet.

To use it, add SFU parameter in your local config ./public/config.yml:

"livekit": {
    "jwt_service_url": "http://localhost:8881"
  },

Run backend components:

yarn backend

More Repositories

1

element-web

A glossy Matrix collaboration client for the web.
TypeScript
10,230
star
2

element-android

A glossy Matrix collaboration client for Android.
Kotlin
3,054
star
3

element-ios

A glossy Matrix collaboration client for iOS
Swift
1,675
star
4

riot-android

A glossy Matrix collaboration client for Android
Java
1,416
star
5

synapse

Synapse: Matrix homeserver written in Python/Twisted.
Python
1,049
star
6

element-desktop

A glossy Matrix collaboration client for desktop.
TypeScript
943
star
7

element-x-android

Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose
Kotlin
920
star
8

hydrogen-web

Lightweight matrix client with legacy and mobile browser support
TypeScript
586
star
9

element-x-ios

Next generation Matrix client for iOS built with SwiftUI on top of matrix-rust-sdk.
Swift
230
star
10

chatterbox

Chatterbox lets you securely embed Hydrogen on any website!
TypeScript
170
star
11

roadmap

Element public roadmap
78
star
12

element-meta

Shared/meta documentation and project artefacts for Element clients
45
star
13

matrix-authentication-service

Rust
28
star
14

riot-meta

A place to experiment with tracking features at a higher level than Riot web/iOS/Android.
25
star
15

swift-ogg

A Swift library for converting to and from opus/ogg format
Swift
21
star
16

ess-starter-edition-core

Jinja
17
star
17

logos

Logo artwork for Riot, Vector, Matrix etc
Shell
16
star
18

compound-web

Web implementation of the Compound design system
TypeScript
16
star
19

vector.im

static parts of vector.im site
HTML
14
star
20

jitsi-helm

Helm chart for HA Jitsi-meet
Lua
14
star
21

compound-design-tokens

Compound design tokens
JavaScript
13
star
22

riot-automated-tests

Java
12
star
23

policies

Policy documents for services run by New Vector
Python
12
star
24

element-builder

A minimalist auto-builder for Element and Element Desktop
TypeScript
12
star
25

feature-dashboard

A task summary, plan, and burndown chart for building software together
JavaScript
12
star
26

files-sdk-demo

Demo web client for using matrix-files-sdk
Svelte
11
star
27

compound

Element's design system
MDX
8
star
28

matrix-content-scanner-python

A web service for scanning media hosted by a Matrix media repository
Python
8
star
29

synapse-room-access-rules

Custom room access rules for Tchap
Python
6
star
30

nix-flakes

Development environments for various repos, powered by Nix Flakes.
Nix
6
star
31

element-integration-manager

Element Integration Manager related issues
6
star
32

compound-ios

SwiftUI implementation of the Compound design system
Swift
6
star
33

libopusencoder-android

Android wrapper for libopusenc, used to create Ogg files in with Opus frames.
C
6
star
34

ems-docs

Element and EMS documentation provided by the EMS team
Handlebars
6
star
35

stats

Python
5
star
36

jitsi_libre_maven

Maven repository for the LIBRE version of Jitsi
5
star
37

tailscale-k8s

Shell
5
star
38

oidc-playground

OpenID Connect project playground environment
5
star
39

element-web-ilag-module

Proof of concept for https://github.com/matrix-org/matrix-react-sdk-module-api
TypeScript
5
star
40

element.io

Public issue tracker for the element.io site
4
star
41

packages.element.io

Configuration files for packages.riot.im
CSS
4
star
42

element-feature-nag-bot

A Matrix bot that complains when riot-web features take too long
TypeScript
4
star
43

retro-nag-bot

A Matrix bot that complains when people don't finish their retro actions
TypeScript
4
star
44

user-stories

A place to write user stories for planned cross-platform enhancements.
4
star
45

kiwitcms-upload-action

Github Action to automate upload from junit output file to Kiwi TCMS
3
star
46

tchap-red-list

Python
3
star
47

ec-cli-rust

A small CLI tool that helps to emulate Element Call
Rust
3
star
48

element-design-tokens

Style dictionary containing design tokens for Element across all platforms.
JavaScript
3
star
49

compound-android

Kotlin
3
star
50

sfu-load-tester-go

A quick tool to create fake Element Call participants
Go
2
star
51

emsdocs-images

Hosting for images currently on ems-docs
CSS
2
star
52

design

2
star
53

helm-charts

Smarty
2
star
54

proj-mana-test

A test repo for playing with project management tools
2
star
55

lk-jwt-service

Minimal service to provide LiveKit JWTs using Matrix OpenID Connect
Go
2
star
56

tchap-displayname-from-email

A Synapse module used by Tchap to derive a display name from a new user's email address.
Python
2
star
57

riot-web-workflow-automation

A github thing that automates stuff on the workflow board, until Github supports the features
1
star
58

trafficlight-adapter-element-call

TypeScript
1
star
59

compound-ios-snapshots

The snapshots used for testing compound-ios.
1
star