Privacy-preserving record linkage

Find the people you have in common. Keep the rest of your records to yourself. ​

Alcove is open-source software that two organizations each run on their own machine or in their own browser. Choose your app and whether you are inviting or were invited.

AppYou are invitingYou were invited
Web app In your browser, nothing to install. Runs with your partner live, once or on an agreed schedule.Invite with the web appAccept with the web app
Console A screen on your own machine, from the Docker image. For trying one exchange before moving it to the command line.Invite from the consoleAccept in the console
Command line A Docker or Podman container, run from cron or the Windows Task Scheduler. For recurring exchanges in a data pipeline.Invite a partnerAccept an invitation
Two files comparedTwo organizations each keep their own file. An encrypted comparison between them finds the records they share; the other records never leave their owner.YOUR FILEPARTNER'S FILEencrypted comparison
Each of you keeps your own file. The comparison finds the records you share, and the other records never leave their owner.

Before anyone creates an invitation, settle with your partner what you match on, what each of you sends and who receives the result: Agree on terms.

Your partner uses a different app ​

You and your partner do not have to use the same app. The inviter makes the kind of invitation the partner's app can accept:

You useYour partner usesWho can inviteThe invitation to make
Web appWeb appEither of youLive, in this browser
Web appConsoleEither of youWeb app: Live, in this browser. Console: the WebRTC channel.
Web appCommand lineEither of youWeb app: Live, in this browser; the partner runs alcove accept on the link. Command line: Invite a partner on the WebRTC channel.
ConsoleConsoleEither of youAny channel
ConsoleCommand lineEither of youConsole: any channel; the partner accepts with alcove accept (Accept an invitation). Command line: Invite a partner on the WebRTC channel; over SFTP or a shared folder, the console partner usually invites.
Command lineCommand lineEither of youAny channel

NOTE

The web app runs only WebRTC exchanges. The web app and the console run only an invitation that names its server, shared folder or coordination server; from the command line, that is one made as If your partner uses the console or the web app shows.

How an exchange works ​

  1. The inviter creates an invitation: the agreed terms and a one-time secret.
  2. The inviter sends it to the partner over a trusted channel, such as encrypted email, as a file or a link.
  3. The partner reviews the terms and accepts.
  4. You both run the exchange at the same time. Whoever starts first waits for the other: how long each app waits.
  5. Each of you keeps your own result, if the terms give you one, and an exchange record. Neither file leaves its owner.

A recurring exchange needs no new invitation: the two of you keep a shared secret that changes after every run.