Read the code.
Encryption you can't inspect is a promise, not a guarantee. The whole RelayPony Android app is public, not just the crypto.
The repository
The Android app lives at github.com/norsehorse-dev/RelayPonyAndroid under the Apache License 2.0. Clone it, build it, audit it, or fork it.
What's inside
- Crypto module — wraps the age protocol (X25519 + ChaCha20-Poly1305 STREAM), the same core that AgePony is built on, so the transfer encryption is the verified-against-reference implementation rather than something hand-rolled for this app.
- Transport — local network discovery over mDNS / Android NSD, the direct device-to-device fallback, and a frozen, cipher-agnostic wire protocol that frames the encrypted stream.
- Pairing — QR-based trust-on-first-use, with device identities held in the Android Keystore.
A frozen wire protocol
The format that goes over the wire is deliberately frozen and cipher-agnostic. That means a transfer made by one version stays readable by another, and the encryption primitive is a parameter of the protocol rather than baked into it. The goal is a transport you can reason about and that does not quietly change underneath you.
License
Apache-2.0. Use it, modify it, ship it, with attribution and the standard patent grant. The full text is in the repository's LICENSE file.
The sibling cores
RelayPony's cousins publish their cores too. AgePony ships AgePonyCore, and PGPony publishes PGPonyCore (Swift) and PGPonyCore-Kotlin, all Apache-2.0. Same developer, same habit of putting the crypto in the open.