An open-source relay for sensitive, private data between devices

Sealed on the device. Gone after delivery.

ZeroByte moves sensitive, private data, such as health and medical records, between any two devices that were paired with each other: a phone and a laptop, a watch and a tablet, an app and its companion. Every update is encrypted on the device that sends it, with a key the relay never receives. The relay passes the sealed envelope on and deletes it once the other device has collected it.

Talk to us How it works

  • No accounts

    Two devices pair once, on the local network. Nobody signs up or signs in.

  • No request logs

    Usage is counted per app, anonymously, for billing. No mailbox names, tokens or IP addresses.

  • No keys on the relay

    Every update is sealed on the device that sends it. The relay cannot open it.

How it works

Three steps, and the relay is in one of them.

An update travelling from one device to another it is paired with The two devices pair once, on the local network. The sending device seals the update. The sealed envelope passes through the ZeroByte relay, which cannot open it, and reaches the paired device, which opens it. After delivery the relay holds nothing. 01 Paired once, on the local network 02 Sending device seals 03 ZeroByte relay cannot open, keeps nothing Paired device opens
  1. 01

    Pair

    Two devices pair once, in the same room or on the same network: a QR code or a comparison of digits on both screens. They agree a 32-byte link key. It stays in each device's keychain and is never sent to the relay.

  2. 02

    Seal

    From the link key, each device derives a mailbox name, an access token and one encryption key per direction (HKDF-SHA256). Every update is sealed with ChaCha20-Poly1305 before it leaves the device. A replayed or altered envelope fails to open.

  3. 03

    Pass

    The relay holds a sealed envelope until the other device collects it. The reader deletes what it has read. A mailbox without a write for 30 days erases itself, and unpairing deletes it at once.

What the relay sees

We wrote down what we can see. The list is short.

The relay can see

  • Which app a mailbox belongs to
  • A random 128-bit mailbox name
  • The size and time of each envelope
  • The IP address of each connection

The relay never receives

  • Health, medical or any other private data
  • Names, emails or phone numbers
  • Device names
  • The link key or any key derived from it

There is no account to create and nothing to sign in to. The relay keeps no request logs. For billing it counts requests and bytes per app, anonymously, without mailbox names, tokens or IP addresses. An envelope is capped at 1 MiB, a mailbox at 32 MiB.

Protocol

Built from open standards.

The two devices agree their key once, at pairing, on the local network. After that, every update is sealed and checked with algorithms published as open standards: HKDF (RFC 5869) and ChaCha20-Poly1305 (RFC 8439).

The relay only stores and forwards sealed envelopes. It has no key to open them with, and nothing to keep once they are delivered.

Read the protocol specification
Key agreement
At pairing, on the local network
Key derivation
HKDF-SHA256
Encryption
ChaCha20-Poly1305, one key per direction
Replay protection
Sequence numbers in the authenticated header
Retention
Until read; idle mailboxes after 30 days

Open source

The code is open. Read it, or run it yourself.

The protocol, the relay and the SDKs are public on GitHub. You can read every line that handles an envelope, check the test vectors against your own implementation, and run the relay on your own server, in Docker or on your own Cloudflare account.

The hosted relay at relay.zerobyte.cloud runs the same code, operated by Peakbits & Co. for teams that would rather not run one.

Read the documentation zerobyte-cloud on GitHub

In the documentation: Quickstart Protocol Relay SDKs

  • ProtocolSpecification and test vectors
    CC BY 4.0
  • RelayNode, Docker or Cloudflare Workers
    AGPL-3.0
  • Swift SDKiOS, iPadOS, macOS, watchOS, tvOS, visionOS
    Apache-2.0
  • Android SDKAndroid and the JVM, in Kotlin
    Apache-2.0
  • JavaScript SDKBrowsers, Node, Deno, Bun, Workers
    Apache-2.0
  • .NET SDKWindows and .NET 10
    Apache-2.0
  • DocumentationGuides, references and samples
    CC BY 4.0