FlickerTalk

How it works

FlickerTalk is built so that there is as little as possible to keep. This page says what travels where, what our server keeps and, just as important, what others can still see.

Your identity

When you open FlickerTalk for the first time, your phone makes a pair of keys. The private key stays in the phone's secure key store (Android Keystore or the iOS Keychain) and never leaves it. Your FlickerTalk ID is derived from the public key. There is no phone number, email or password.

You add someone by scanning the code on their screen or opening the link they share. That code is a contact card signed by their key. We have no directory of users and never see your address book.

Sending a message

A message is saved on your phone first. If the other phone can be reached, it goes straight there over an encrypted WebRTC connection, and it is also encrypted end to end with the Olm protocol (a Double Ratchet, from the Matrix project's audited vodozemac library). The other phone saves it and confirms, and only then is it marked as delivered.

When the other phone is off

Our server wakes the other phone with a push notification that carries no message and no sender: only “wake up”. If a direct connection is still not possible, the message goes to the recipient's mailbox on our server, encrypted end to end so that we cannot read it. It is deleted as soon as the recipient picks it up, and after 7 days at the latest. The mailbox keeps no sender and is never backed up.

The mailbox is on by default. Either of you can turn it off in Settings; then messages wait on the sender's phone until the two phones can talk directly.

Files and calls

Files and calls never go through the mailbox. They travel over the direct connection between the phones, or through our relay when a direct path is impossible, still encrypted.

What our server keeps

DataWhyFor how long
Your device ID and public keyTo check that requests really come from your phoneUntil you erase the phone in the app
A hash of your contact card's routing codeSo that only your contacts can wake you or leave you mailSame
Your push token, encrypted with a key kept outside the databaseTo wake your phoneSame, or until Google or Apple say it expired
Messages that could not be delivered, encrypted end to endTo deliver them laterUntil picked up, at most 7 days

Nothing else: no contacts, no conversations, no call history, no access logs and no history of IP addresses.

What others can see

The person you talk to
When your phones connect directly, each can see the other's public IP address: that is how peer-to-peer works. In Settings you can make calls always go through our relay, which hides your IP address from the other person during calls.
Our relay
When a direct connection is impossible, our relay carries the encrypted traffic. It sees the IP addresses of both phones and how much data flows, never the content, and it keeps no logs.
Google and Apple
They deliver the wake-up notifications, so they see that your phone got a push and when. The push never contains a message or who sent it.
Our server
It sees the IP address of a connection while it is open, to route it and to stop abuse. It does not keep it: the abuse limits use a salted hash that lives only in memory for a minute.
Your network provider
Like with any app, your internet provider can see that you use FlickerTalk and when.

What no app can protect

FlickerTalk protects your conversations from our servers, from a breach of our database and from the push services. It cannot protect you from a phone that is compromised or unlocked in someone else's hands, from malware, from screenshots, or from the other person copying what you send.