- Notifications
You must be signed in to change notification settings - Fork10
Make terminal personal file transfers as simple as `cp`
License
Contextualist/acp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 onserverless 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
- OptionalTailscale integration
See alsocomparison 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 bycurl -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 runacp --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 yourPath
.Then runacp --setup
to generate an identity.
# senderacp path/to/files# receiver, to $(pwd)acp# or receive to/as specified targetacp -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 asrendezvous timeout
, at least one side is behind a firewall or a strict NAT that prohibits P2P connection.
For advanced configuration and self-hosting, check outthe 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 ingo.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.
About
Make terminal personal file transfers as simple as `cp`