Skip to content
OpenSourceSoftware.ai

GitHub stars

13,624
—Awaiting first sync

Awaiting first sync

No measured star history yet

What is Element?

Element is a team chat app built on Matrix, an open standard, rather than on one vendor's closed service. Messages and calls are end-to-end encrypted, and you can run the whole setup on your own servers. Because Matrix is federated, your people can also talk with users on other Matrix servers.

Element Web is the web and desktop client for Matrix, an open standard for secure, decentralised communication. It offers end-to-end encrypted messaging, voice and video calls, rooms grouped into spaces, and device verification. It connects to a Matrix homeserver such as Synapse, which is a separate server you run yourself or use elsewhere.

Core capabilities

  • Encrypts messages and calls end to end by default.
  • Groups rooms into spaces for teams, with access permissions.
  • Runs in the browser or as a desktop app on macOS, Windows and Linux.

A client, with the server kept separate

This repository holds Element Web, along with Element Desktop, which wraps the same client in Electron. Element is only the client: accounts and rooms live on a Matrix homeserver, which you need to run or use separately. Synapse is the homeserver maintained by Element, and other Matrix servers can also be used. The config.json file sets the default homeserver with default_server_config or default_server_name, and users can pick another server unless you turn that off.

  • Matrix
  • Client
  • Homeserver
  • Synapse

Encrypted chat, calls and spaces

Messages are end-to-end encrypted by default, so only the people in a conversation can read them. Voice and video calls work one to one and in groups. Spaces group rooms for people or teams and control who can get in. Device verification lets users confirm their own devices and revoke access for lost or stolen ones, and bridges, bots and widgets can be added.

  • Encryption
  • Calls
  • Spaces
  • Federation

Self-host it under AGPL-3.0

Element Web is a static web app, so you can unpack the release tarball onto any web server, install the Debian package, or run the vectorim/element-web Docker image. It should be served over HTTPS, which browsers require for calls, and on a different domain from the homeserver. The code is offered under the AGPL-3.0 licence, with GPL-3.0 or a paid commercial licence from Element as alternatives. Element also sells a commercial server package, Element Server Suite Pro, which is separate from this client.

  • Self-hosted
  • Docker
  • Static web app
  • AGPL-3.0

Where it fits

Use cases

  1. 01

    Give your team private, encrypted chat

    Run a Matrix homeserver such as Synapse on your own domain, then host Element Web and point its config.json at that server with default_server_config. Set disable_custom_urls to true so staff can only sign in to your server. Create a space for each team with rooms inside it, and messages are encrypted end to end.

  2. 02

    Talk securely with partner organisations

    Because Matrix is federated, users on your homeserver can share rooms with people on other Matrix servers, such as a partner's own deployment. Messages and calls in those rooms stay end-to-end encrypted. Device verification lets each person confirm their devices and revoke access for a lost or stolen one.

  3. 03

    Offer chat in the browser and on the desktop

    Serve Element Web from your web server or the vectorim/element-web Docker image, on a separate domain from the homeserver as the security notes advise. Staff who prefer an app can install Element Desktop for macOS, Windows or Linux. For phones, Element recommends its separate Element X apps for Android and iOS.