1. git clone Talexmpp
  2. Download talek.conf
  3. go run *.go
  4. Connect your local XMPP client to localhost:5222
  5. Add a contact. status@talexmpp will provide you with the cryptographic message to relay to the other person
  6. When added, message the introduction message to status@talexmpp to confirm.


  • Talek – Core system, CLI for client, replica, frontend
  • libtalek – go library for inclusion in apps
  • talexmpp – Local XMPP server to shim existing clients to talek
  • talek.conf – A demo talek instance run by University of Washington and University of Michigan


Talek is a chat system built on the concept of Private Information Retrieval (PIR). PIR allows a client to request a
message from a centralized server without revealing to the server which item it has requested. It does this
by requesting the super-position (via the binary exclusive-or operation) of many random items, which is is then able
to cancel out to retrieve the single item it is interested in locally. The PIR technique allows clients to operate
like there was a standard, centralized server they can interact with – retaining useful properties like the client
being able to go offline, minimal bandwidth and computational overhead, and low latency – while providing a theoretical
guarantee of anonymity. The cost of this benefit is that the server must process its entire database for each client
request, which is IO and computationally expensive.

A core premise behind talek is that we can perform this computation without overly burdonsome cost by leveraging the
efforts from Machine Learning – being able to quickly explore a large corpus of data and reduce it to a managable anwer.
This work has been facilitated by the evolution of GPUs, which are now able to compute in parallel across several
gigabytes of memory, allowing for low-latency PIR responses to thousands of active clients.