Command-line file transfer
A croc alternative with nothing running between the two machines
A code in a terminal, no account, open source, and a sender who does not want to think about networks. croc is the tool most people reach for when they want exactly what the s3nd CLI does.
What croc is
In its own terms.
A Go command-line tool for sending files and folders between any two computers with a code phrase. It uses a PAKE for end-to-end encryption, a relay to get through NATs, resumes interrupted transfers, and ships as a single binary for every platform.
Side by side
Where they part ways.
| s3nd | croc | |
|---|---|---|
| What it is | A CLI, a library and React hooks over your own S3 bucket | CLI file transfer with a code phrase |
| Where the data lives | Your bucket: S3, R2, MinIO, Scaleway, Wasabi | In transit only, through a 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 |
| Accounts | None. The code is the whole handshake | None |
| Hosting | Your bucket, plus your server when a browser takes part | Public relay 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.
Live versus stored
croc streams while both ends are connected. s3nd stores the object and leaves; the code works later, from a machine that was off when the transfer was made.
A relay versus a bucket
croc uses a public relay by default and lets you run your own. s3nd uses the bucket you already have, with the provider’s durability, lifecycle rules and billing.
Resume and size
croc resumes a broken transfer and handles very large files well. s3nd does a single PutObject today, which is right for snapshots and ordinary files; multipart is on the roadmap.
A primitive, not only a tool
The same code that runs the CLI runs in a Next.js route and behind React hooks, so an application can offer the same move-with-a-code to its users.
The decision
Pick the one that fits.
Pick croc when
- Both ends are online and you want end-to-end encryption for free.
- Multi-gigabyte files where resume matters.
- No cloud account of any kind, not even a bucket.
Pick s3nd when
- The two machines are never online at the same time.
- A server in front, handing out tokens instead of S3 keys, for a team.
- A web app moving its own data, with the CLI as a bonus.
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