Wire is a distributed system assembled with a combination of custom build components and third-party components and services. Wire delivers a communication experience from one device to another.
- Android and iOS devices
- 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, pictures, files, and videos 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 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 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 aren’t open source.
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.
- iOS source code
- Android source code
- Web source code
- Desktop 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.