// documentation

How RelayPony works.

A reference for what happens under the hood, from finding the other phone to where the file ends up. For step-by-step help, see support.

Discovery and pairing

Two phones first establish that they trust each other. One phone presents a QR code that encodes its identity; the other scans it. This is trust-on-first-use: once paired, each phone remembers the other for future transfers, so you scan once rather than every time. Each device's identity key is held in the Android Keystore, hardware-backed where the phone supports it.

On a shared Wi-Fi network, RelayPony finds nearby devices automatically using local network discovery (mDNS / Android NSD), so a paired phone simply appears in the list.

The transfer

The file is encrypted with the age protocol, X25519 key agreement with ChaCha20-Poly1305 streaming, on the sending phone, and decrypted on the receiving phone. Nothing in between can read it. The encrypted stream is carried over a frozen, cipher-agnostic wire protocol, so the transport format stays stable as the app evolves and the encryption primitive is a parameter of the protocol rather than baked into it.

Transfers show real progress as bytes move, recover from a dropped connection by retrying with backoff, and can be cancelled or stopped mid-flight from either side.

When there's no shared Wi-Fi

A common network is the easiest path, but not a requirement. When the two phones aren't on the same Wi-Fi, RelayPony establishes a direct device-to-device link between them and runs the same encrypted transfer over it. Either way, the bytes go straight from one phone to the other.

Receiving and where files go

An incoming transfer appears on the receiving phone with progress and a way to stop it. When it finishes, the file is in the app's Inbox. If you enable auto-save, it also lands in your Downloads folder. You can also start a send by sharing a file into RelayPony from another app's share sheet.

Permissions

  • Camera — to scan the pairing QR code.
  • Nearby Wi-Fi / local network — to discover and connect to the other phone.
  • Storage — to read the files you send and to save received files to Downloads.

That's the whole list. There is no contacts access, no location, and no background networking.

Open source

The app is public under Apache-2.0 at github.com/norsehorse-dev/RelayPonyAndroid. The crypto module wraps the verified age core; the transport module carries the frozen wire protocol. You can read exactly how discovery, pairing, and the transfer work rather than taking this page's word for it. See the open-source page for more.