Windows 暂无 PowerShell 安装脚本,需手动下载可执行文件并加入 Path;安装脚本默认写入 /usr/local/bin,可能需要相应权限;若出现 rendezvous timeout,说明至少一侧处于防火墙或严格 NAT 后无法 P2P 直连
acp
ContextualistMIT活跃维护用一条命令像 cp 一样在终端完成点对点文件传输,借助 NAT 穿透和打洞技术跨网络直连,无需中转服务器。
Make terminal personal file transfers as simple as `cp`
curl -fsS https://acp.hya.moe/get | shREADME 未说明硬件要求,仅说明支持 Linux、macOS、Windows 平台
像 cp 一样简单的个人终端文件传输工具,无需每次复制粘贴令牌
用一条命令像 cp 一样在终端完成点对点文件传输,借助 NAT 穿透和打洞技术跨网络直连,无需中转服务器。
核心能力
- 无需每次传输复制粘贴 token 或验证码
- 基于 serverless 边缘函数的分布式 rendezvous 服务
- ChaCha20-Poly1305 端到端加密
- P2P 直连,支持局域网与广域网 NAT 穿透
- 支持多文件与目录传输,gzip 压缩,跨 Linux/macOS/Windows
容易踩的坑
- v0.3.3最新正式版2026-07-20 · 2026-07-20 05:59 UTC
To update, run
acp --update
Changelog
- 579b477d0281df41ab8753a7cbcb8f7807e52e2c tweak: config: assign a less transient domain to the service
- v0.3.22026-07-20 · 2026-07-20 05:40 UTC
查看更新说明
To update, run
acp --update
Changelog
- v0.3.12024-11-01 · 2024-11-01 22:26 UTC
查看更新说明
To update, run
acp --update
Changelog
- 101145209273531bcaad3242a561ca1f44aa568f Merge pull request #14 from Contextualist/feat-logreaderr
- 818be1a66e92cfc7686f83e02b48c66edc7aa2b2 feat: tar: log instead of abort on file access error
- d2bbce047c7ca36a102a742f9cd79163caace12e feat: tui: auxiliary logger during file transfer
- df780850bebfc8e36099bfce1b33ae79fd0ba976 tweak: config: check for config dir creation error
- v0.3.02023-09-24 · 2023-09-24 23:57 UTC
查看更新说明
See also the release announcement for v0.3.0
Changelog
- 6b0d92d Merge pull request #8 from Contextualist/feat-tailscale
- 775c033 feat: acp: support multiple connection strategies
- 2d6bfb6 feat: stream: add Tailscale support
- 74612f3 refactor: config: move from cmd/acp to pkg/config
- d712e33 refactor: pnet: clarify function HolePunching
- 3ba994d refactor: stream: adapt HolePunching into interface
- 23650fc tweak: config: infer strategy during setup
- f9b431c tweak: config: only print out the fields that are common across devices
- bf42db6 tweak: tailscale: guard against missing status json fields
- v0.2.12023-09-05 · 2023-09-05 20:05 UTC
查看更新说明
Changelog
- c017e82 feat: acp: read from stdin / write to stdout
- d14c823 feat: acp: self update
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
acp

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.
Get started
Linux, macOS
On any of your machine, run
curl -fsS https://acp.hya.moe/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.hya.moe/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.
Windows
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.
Usage
# 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.
Similar projects
| 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.
Acknowledgement
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
BroadcastChannelAPI 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
Disclaimer
This project is not associated with Deno Land Inc. or Tailscale Inc.