Command-line file transfer
A Magic Wormhole alternative that goes through your own bucket
Both hand you a short code in a terminal, both are open source, and both exist for a person carrying something from one machine to another without an account.
What Magic Wormhole is
In its own terms.
A command-line tool that sends files and directories from one computer to another with a short, human-readable code such as 7-crossover-clockwork. The two sides run a PAKE, so the code both finds the peer and keys the encryption; the bytes travel directly between the machines, or through a transit relay when they cannot reach each other.
Side by side
Where they part ways.
| s3nd | Magic Wormhole | |
|---|---|---|
| What it is | A CLI, a library and React hooks over your own S3 bucket | CLI file transfer with a spoken code |
| Where the data lives | Your bucket: S3, R2, MinIO, Scaleway, Wasabi | In transit only: peer to peer, or through a transit relay |
| Both ends online at once | No. The code is redeemed later, until it expires | Yes |
| From inside your web app | Yes, through one route on your server | No, terminal first |
| Accounts | None. The code is the whole handshake | None |
| Hosting | Your bucket, plus your server when a browser takes part | Public rendezvous and relay servers by default; self-hostable |
| Price | Free. You pay your storage provider for a few objects that expire | Free |
| License | MIT | MIT |
The differences
What actually changes.
Asynchronous, not live
Wormhole needs both ends running at the same time: the sender waits until the receiver enters the code. s3nd writes to the bucket and exits. The code is redeemed whenever the other machine gets to it, until the transfer expires.
Your bucket, not a relay
Wormhole goes through a rendezvous server and, when direct connection fails, a transit relay; public ones by default, yours if you run them. s3nd stores the object in a bucket you already own, and there is no relay to run or trust.
Where the encryption comes from
Wormhole is end-to-end encrypted by construction. s3nd is encrypted in transit and at rest by your provider; end to end is yours to add by encrypting before sending, and the code is a bearer token that a short expiry and a rate limit protect.
Also a library
Wormhole is a tool for people at keyboards. s3nd ships the same primitive as a library and React hooks, so a web app can move its own IndexedDB state with the same code.
The decision
Pick the one that fits.
Pick Magic Wormhole when
- You want end-to-end encryption without thinking about it.
- Both machines are online and you are at both keyboards.
- You have no bucket and would rather not create one.
Pick s3nd when
- The sender leaves before the receiver arrives.
- You already pay for a bucket and want the bytes to stay in it.
- The thing moving is an app’s state, not a file on disk.
More comparisons
Tool by tool.
Put a file. Hand over the code.
Point it at the bucket you already pay for. Nothing to deploy, nothing to sign up for, nothing in the middle.
npm install -g @s3nd/clis3nd init --provider r2 --bucket drops3nd put ./anything.zip