peeza doesn't upload your file and hand out a URL. It opens a connection between the two machines and streams the bytes across — encrypted end to end, with nothing left sitting on a server.
A light native app drives a background engine that owns every transfer. The engine negotiates a connection to the other side through a small relay, then moves the file directly when it can.
┌─────────────┐ localhost ┌─────────────┐ signaling ┌──────────────┐
│ Native app │ ─────────────▶ │ engine │ ◀────────────────▶ │ relay server │
│ (desktop) │ token auth │ (background)│ connection setup │ (cloud) │
└─────────────┘ └─────────────┘ └──────────────┘
│ ╔══════ direct peer-to-peer ══════╗
└─ ║ or blind relay when blocked ║ ─▶ other machine
╚═════════════════════════════════╝The relay's job is signaling — helping the two sides find each other — and, only when a direct path is impossible, forwarding bytes it cannot read. It never stores a file.
This is the part that matters most. Every transfer is encrypted with a key the server never receives.
When you create a share, your machine generates a per-share AES-256-GCM key and puts it in the link's fragment: peeza.app/r/AbC…#k=…. Browsers never send the part after # to a server — it stays on the two devices. The relay sees the room, not the key.
peeza streams. It never loads a whole file to send it, so a 400 GB folder uses about as much memory as a 4 MB one.
Transfers are state on disk, not a live process you have to babysit.
peeza keeps transfer state and partial downloads on disk. Close the window, quit the app, reboot the machine — when both sides are back, the transfer resumes from the last byte written, not from zero.
The relay is a fallback, not the default. peeza works to keep transfers on a direct path, because direct is faster — and, for you, unlimited.