Technology Overview

  • Updated

 

Wire is a distributed system assembled with a combination of custom build components and third-party components and services. At its core, Wire delivers a communication experience from one device to another.

Wire supports:

  • Android and iOS smartphones and tablets

  • Windows, Linux and macOS computers with a platform-specific native application, based on Electron

  • Wire for web on desktop without any additional plugin installation: Firefox, Chrome or Edge

The relay of messages, images, files, and video across devices is possible thanks to the Wire backend, which knows user accounts and conversations, but has no access to the content of the communication, as it is end-to-end encrypted from device to device.
Wire’s backend reaches several third-party services that provide content for users to send, such as YouTube and Google Maps. With the backend acting as a proxy, the user’s device does not need to communicate with those services directly, allowing the user to hide certain information from third parties (such as IP addresses or registered cookies).

The backend uses native push services, provided by Apple and Google, to send native pushes to smartphones and tablets when the app is not running. When the app is running on a device, push notifications are sent to the device through a direct connection (WebSocket) with the Wire backend, without the usage of any third party.

Devices send anonymized usage statistics to a third-party analytics provider. The user has the option to disable this feature for additional privacy. The statistics provide valuable insights for Wire on usage patterns that should be optimized and issues that should be addressed.

Screenshot_2021-08-20_at_18.12.03.png

Source Code

Wire is open source with its source code available on GitHub. The code is necessary to run the server and the clients, and the unit tests of each component, are fully open source. Some accessory services (such as billing and GDPR-compliance) and the building and end-to-end testing infrastructure are not open-sourced.

Backend

The backend is developed for the most part in Haskell code with a microservices architecture. You can find a high-level overview of the backend services here. The backend source code and documentation are available on GitHub.

Third-party integrations (services and bots) are developed with JVM technologies, namely Java and Kotlin.

Platform-specific Clients

We divide each platform-specific client into multiple components and list those components in each platform repository.

Of all components, two notable ones are:

  • The end-to-end encryption library is the highest abstraction layer built over Proteus and is used natively by iOS and Android. The web app (including desktops apps) implements its own JavaScript version of Cryptobox. 

Was this article helpful?

6 out of 8 found this helpful

Have more questions? Submit a request