e2ecp

e2ecp is, like croc, a tool to transfer files between machines.

e2ecp is, like croc, a tool to transfer files between machines.
I’ve made another tool, e2ecp, for transferring files between machines. The name stands for “end-to-end encrypted copy”, and like my previous tool, croc, it focuses on easy, secure file transfers.
My previous tool, croc has been used millions of times and works fantastic, so why create another?
The one thing that croc does not do — and realistically cannot do — is transfer files seamlessly between a website and the command line. That’s exactly what e2ecp solves: you can transfer between two browsers, two terminal clients, or between browser and terminal without any extra setup. It does this by essentially replicating the CLI logic (written in Go) in JavaScript for the browser.
Of course, e2ecp also has limitations compared to croc. Currently (and probably for some time, if not forever), e2ecp cannot resume interrupted transfers like croc can, and it cannot operate as a completely LAN-only tool. It can perform local transfers, but an internet connection is still required to establish the initial peer connection.
Here’s a comparison for what the two tools can and cannot do.
| Feature | croc | e2ecp |
|---|---|---|
| Transfers via CLI | yes | yes |
| Transfers via web browser | no | yes |
| Browser ↔ CLI transfers | no | yes |
| LAN-only operation | yes | almost (internet needed) |
| Transfer resume support | yes | no |
| Multiple file transfers | yes | yes |
| End-to-end encryption | yes (PAKE) | yes (ECDH + AES-GCM) |
| Cross-platform (Win/Mac/Linux) | yes | yes |
| Single-binary CLI | yes | yes |
| Self-hostable relay server | yes | yes |
Will they ever become the same tool? Probably not, because I don’t have any method to allow resumable transfers in the browser because of its sandboxed nature. But both tools will continue to be improved and maintained.
There are now loads of file transfer tools available. I won’t do a comparison of them all. I think there are lots of promising tools coming out with WebRTC and BitTorrent protocols, but I haven’t found any that match the ease-of-use and speed of using a simple zero-knowledge relay server like croc and e2ecp do. At least for simple file transfers between two not necessarily tech-savvy people, I think both croc and e2ecp are still the best options available.
Goto https://e2ecp.com and enter a room. Have another peer enter the same room to transfer files between the two.
You can use the command-line tool, e2ecp, as a client that can send/receive from the website or from another command-line. The command-line tool, e2ecp, is available as a single binary for Windows, Mac OS, or Linux. Simply download the latest release or install with:
curl https://e2ecp.com | bash
Then use the following commands:
Sending a file:
e2ecp send <file>
Receiving a file:
e2ecp receive
Of course, both croc and e2ecp are open-source! You can find the code for croc on GitHub and e2ecp on GitHub.
Please consider sponsoring me on GitHub if you find these tools useful. Your sponsorships help me dedicate more time to maintaining and improving these tools, and keeping up with the server costs. Thank you to all my current sponsors for your support!