Technology

  • Updated

Wire is a distributed system assembled with custom-built components and third-party components and services. Wire delivers a communication experience from one device to another.


Wire supports:

  • Android and iOS devices
  • Windows, Linux, and macOS computers with a platform-specific native application, based on Electron
  • Wire for web on the desktop without any additional plugin installation: Firefox, Chrome, or Edge

 

The relay of messages, pictures, files, and videos across devices is possible thanks to the Wire backend, which knows user accounts and conversations. However, the backend 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 you to send, such as YouTube and Google Maps. With the backend acting as a proxy, your device doesn’t need to communicate with those services directly, allowing you to hide certain information from third parties (such as IP addresses or registered cookies).

Wire’s backend uses native push services, provided by Apple and Google, to send native pushes to mobile devices when the app isn’t running. When the app is running on a device, Wire sends push notifications 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. You have the option to turn this feature off for additional privacy. The statistics provide valuable insights for Wire on usage patterns that should be optimized and issues to solve.

 

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 aren’t open source.

 

Backend

Wire developed the backend for the most part in Haskell code with a microservices architecture. See the backend source code and documentation on GitHub.

Wire developed third-party integrations (services and bots) 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 the components, two notable ones are:

  • The audio-video signaling and codecs library. This open-source library is used natively on iOS and Android. On Wire for web (including desktop apps), we use the browser's WebRTC implementation.
  • 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 desktop apps) implements its own JavaScript version of Cryptobox. 

Was this article helpful?

12 out of 14 found this helpful

Have more questions? Submit a request