Technology used by our applications

Our Twincode Technology

Our Twincode technology allows us to setup various kinds of relations without knowing private information about any party. Twincodes implement objects relationships along a client-server model. Twincodes are composed of the following 4 “facets”:
  • The twincode Factory generates the object identifiers, and defines its ownership and access rights properties;
  • The twincode Outbound is a proxy of the called object, given to a calling object;
  • The twincode Inbound defines the entry point to the called object;
  • The twincode Switch connects the twincode Outbound to the twincode Inbound.
Twincode facets are defined by 4 unique identifiers. These identifiers are version 4 Unique User ID’s (UUID v48F8F10F1). Their relationships are represented on Figure twincodes “Click-to-Call” relationship model.
“Click-to-Call” relationship model
The twincode relationship model is covered by EU Patent N°3 020 179 granted on 31 May 2017 under the title “Distributed Programmable Connection Method to establish Peer-to-Peer Multimedia Interactions” (application date: 10 July 2014).

The twincode relationship model is used to represent:

Peer-to-Peer communication

Our applications protect your privacy and freedom by sending messages and photos directly between devices, without storing any content on a server. When a device wants to connect to a peer, it generates an SDP (Session Description Protocol) message to initiate the WebRTC connection. The SDP message is sent to the signaling server along with the peer’s twincode to identify the target device. The server then attempts to wake up the peer device using Google or Apple push notification services. Once the peer device is awake, it connects to the signaling server and retrieves the SDP message.
WebRTC direct communication and encrypted signaling

Peer-to-Peer communication are used for:

Signaling and Backend Infrastructure

A signaling server is used for the administration of twincodes and handle the WebRTC signaling between devices. Our server implements the twincode objects relationships and when a device wants to establish a WebRTC direct connection, it forwards the WebRTC signaling messages to the devices. To protect the signaling setup, these signaling messages (known as SDP) are encrypted on each device with shared secrets which are changed regularly. Openfire (XMPP) for signaling and Jetty for WebSockets. PostgreSQL for operations data and Kafka for messaging. TimescaleDB/Grafana for monitoring and analytics.
Encrypted signaling

Peer-to-Peer communication are used for: