Highlights (aka "Why making another file-transfer tool?"):
- Designed for personal use; no need to copy-paste a token / code for each transfer
- Rendezvous service runs distributively on serverless edge function, a robust solution with low latency worldwide. (How does this work?)
Other features:
- End-to-end encryption (ChaCha20-Poly1305)
- P2P connection: LAN or WAN, with NAT transversal
- Compression (gzip)
- Cross platform: Linux, macOS, Windows
- Support transfering multiple files and directories
- Optional Tailscale integration
See also comparison table with similar tools.
On any of your machine, run
curl -fsS https://acp.deno.dev/get | sh
It sets up the current machine by downloading an executable and generating an identity.
By default the install path is /usr/local/bin
; you can change it by curl -fsS 'https://acp.deno.dev/get?dir=/path/to/bin' | sh
At the end, it prints out the command for setting up your other machines.
You can run acp --setup
any time you want to see the command.
Currently there is no installation script for PowerShell (PR welcomes :)
You can download the released executable and put it on your Path
.
Then run acp --setup
to generate an identity.
# sender
acp path/to/files
# receiver, to $(pwd)
acp
# or receive to/as specified target
acp -d path/to/target
You can run the sender and receiver in arbitrary order.
Whenever both sides are up and running, they will attempt to establish a P2P connection.
If you see messages such as rendezvous timeout
, at least one side is behind a firewall or a strict NAT that prohibits P2P connection.
For advanced configuration and self-hosting, check out the docs here.
trzsz | scp | acp | pcp | croc | |
---|---|---|---|---|---|
can share files to other people / receiver needs to enter a token |
O | O | |||
LAN | O | O | O | O | O |
WAN (local ↔︎ remote) | O | O | O | P | O |
WAN (remote ↔︎ remote) | P | O | P | O | |
relay | P | P | O | ||
p2p | O | O | O | ||
distributive | O | O |
O: supported; P: partial support or limited usablity; (void): not supported or not relevant
Don't judge a tool based on its apparent set of features. This table only lists a few features, intending to differentiate the target scenarios of these tools.
Apart from the dependencies listed in go.mod
, this project is also built upon
- Deno Deploy exposes low-level connection infomation and provides a fantastic
BroadcastChannel
API that makes "serverless" TCP hole-punching possible - mholt/archiver: tar/untar implementation
- libp2p/go-reuseport: address reuse for TCP hole-punching
- egoist/bina: installation script
- Tailscale, as one of the connection option, provides a painstaking implementation of NAT traversal and a distributive relay service
This project is not associated with Deno Land Inc. or Tailscale Inc.