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.
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.
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.
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.
Desktop application source code: an Electron wrapper running the web application.
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 audio-video signaling and codecs library. This open-source library is used natively on iOS and Android. On Wire for web (including desktops apps), we use the browser's WebRTC implementation.