重新部署是免费的
deploy id 由内容派生。目录没变,就不上传任何东西,并返回同一个 URL。放进 CI 循环里也不会产生垃圾。
开发者与 AI Agent 的上传工具
把文件和静态站点传到你自己的 Cloudflare R2。stdout 只有 URL,没有别的 —— 能进管道、能写脚本,agent 不用从提示文字里把链接抠出来。
curl -LsSf https://ferry.longye.dev/install.sh | sh
单个静态二进制。macOS · Linux · Windows
R2 的自定义域名绑定单个桶且不做路径重写,所以泛解析子域名必须靠一个 Worker。ferry init 会把它部署进你自己的 Cloudflare 账号 —— 那是 Ferry 唯一持续运行的部分。
deploy id 由内容派生。目录没变,就不上传任何东西,并返回同一个 URL。放进 CI 循环里也不会产生垃圾。
你永远不会把半个结果灌进下一个程序。退出码分四类:1 用户错误、2 网络、3 认证、4 后端不支持。
没有终端时直接以错误码退出,而不是挂在那里等一个不可能到来的回答。CI、容器和 agent 沙箱里都安全。
token 只进系统 keychain,配置文件里永远没有 secret。没有 keychain 的机器走环境变量。
一个 agent 产出了图表、报告或构建好的站点,通常没办法把它交到人手里。Ferry 用一次调用把路径变成 URL。
ferry_up、ferry_deploy、ferry_lsrm —— 不该让 agent 距离删掉线上站点只差一个记错的 id--json、稳定退出码、无交互提问{
"mcpServers": {
"ferry": {
"command": "ferry",
"args": ["mcp"]
}
}
}
不是「免费额度」—— 是根本没有计量表。CLI 直连 R2,链路里没有任何 Ferry 的东西。下面那些 ❌ 不是被拿掉的功能,是结构上做不到:它们都需要有个东西挡在每次请求前面。
| 能力 | 自托管今天 | Cloud以后 |
|---|---|---|
| 文件上传、目录部署 | ✅ | ✅ |
| 自定义域名、泛解析子域名 | ✅ | ✅ |
| 列出与删除产物 | ✅ | ✅ |
| 链接过期、密码、访问上限 | ❌ | ✅ |
| 可吊销的 scoped 上传凭证 | ❌ | ✅ |
| 团队命名空间、访问日志 | ❌ | ✅ |
| 无需 Cloudflare 账号 | ❌ | ✅ |
任何在自托管下能用的能力,都不会为了制造付费理由而被移除。
# 装上
curl -LsSf https://ferry.longye.dev/install.sh | sh
# 配好 Cloudflare:建桶、部署 Worker、绑 DNS、挂路由
ferry init
# 然后就是它了
ferry deploy ./dist