Skip to content

Introduction

deaddrop leeches a torrent on a server, encrypts it, hands it to one client peer to peer, and leaves nothing behind.

A server downloads a torrent without seeding it, encrypts the result with age, then hands the files to a client over iroh: peer-to-peer QUIC with NAT traversal and relay fallback. Neither side needs an open port.

Terminal window
# on the server
deaddrop serve 'magnet:?xt=urn:btih:...'
# ...prints: <ticket> AGE-SECRET-KEY-1...
# on the client
DEADDROP_KEY=AGE-SECRET-KEY-1... deaddrop fetch <ticket> -o ./downloads

That’s it. The server exits once the client has everything.

  • You want a box with a fat pipe to fetch something, and you want the result on your laptop, without the box ever uploading to the swarm.
  • You don’t want to open ports, set up SFTP, or leave a copy sitting on a server afterwards.
  • You want the bytes in transit, and on the server’s disk at rest, to be ciphertext that only the holder of the key can read.

Zero seeding

librqbit’s disable-upload, no incoming BitTorrent listener, and the swarm session is torn down before serving starts.

End-to-end encrypted

Every file is age-encrypted with a fresh per-torrent key that never touches the server’s disk. File names are hidden too.

NAT-proof

iroh punches through NATs and falls back to relays.

Verified delivery

Every chunk is checked against its BLAKE3 hash. Tampering or a wrong key fails loudly.

Single use by default

One client, one download, then the server shuts down, or wipes the data and waits.

Hot swaps & notifications

deaddrop reset points a running server at a new torrent. Tickets can be pushed to Discord or any webhook.