Files go from sender outbox to receiver inbox without touching any intermediate server. Here's how — from enrolment to file arrival.
The infra-server is a single Go binary — or a Docker Compose stack if you prefer. It handles station enrolment, session brokering, the built-in STUN/TURN relay, the admin web panel, and licence validation. One binary, one config file.
Install the daemon — a Windows Service or Linux systemd unit — on each machine that will send or receive files. Generate a one-time enrolment token from the admin panel for each machine. Run peeraegis-daemon enrol --token <TOKEN> --server <SERVER_URL>.
The daemon generates an Ed25519 keypair on first run. During enrolment, it presents its public key to the infra-server authenticated by the token. The infra-server registers the station and issues it an identity. The private key never leaves the machine — not during enrolment, not ever.
In the admin panel, define relationships between station pairs: who can send to whom, in which direction. For each pair, set the crypto mode (none, sign, encrypt, or sign+encrypt), cipher (aes-256-gcm or chacha20-poly1305), and optionally file-type glob patterns and size limits.
Policy is stored server-side and injected into the WebRTC SDP offer at session time. The daemon applies the policy it receives — it has no mechanism to negotiate a weaker mode.
The daemon polls its configured outbox directory every 15 seconds. When a new file appears, it contacts the infra-server to initiate a session with the target station. The infra-server exchanges SDP offers between the two daemons — IP candidates, ports, DTLS fingerprints — then steps back.
The two daemons negotiate a direct WebRTC DataChannel. In encrypt mode, a per-file ephemeral X25519 key is derived; the file is chunked into 32 KB blocks, each encrypted and streamed directly to the receiver. On completion, the file is moved to the sender's sent/ archive and appears in the receiver's inbox/.
Every completed transfer writes a structured log entry: timestamp, sender, receiver, filename, file size, SHA-256 hash, crypto mode, cipher, connection type, duration, and status. The log is searchable and filterable in the admin panel. Professional and Enterprise tiers can export to CSV or Excel.
Your audit team gets cryptographic evidence — not a self-reported log. The file hash is computed before encryption and recorded before the transfer begins, so a corrupted or tampered delivery produces a hash mismatch that shows in the log.
WebRTC was designed for real-time peer-to-peer communication between browsers. We use the same underlying primitives — DTLS, ICE, SCTP DataChannels — for file transfer between daemon processes.
ICE (Interactive Connectivity Establishment) automatically finds the best path between two endpoints, even behind NATs and enterprise firewalls. No open inbound ports required on either side.
Every WebRTC DataChannel uses DTLS (Datagram TLS) for transport encryption. The relay server receives UDP datagrams it cannot decrypt — even before the application-layer encryption envelope is considered.
SCTP over DTLS provides ordered, reliable delivery of DataChannel messages. Files arrive in order, with retransmission on packet loss — no application-level reassembly logic needed.
30-day trial, managed infra-server, two stations, your first transfer in under an hour.