关于 toss
toss 是用于设备间点对点传输文件的应用,也提供面向 AI 助手的 MCP 接口。配对后可通过图形窗口、命令行或 MCP 发送文件,传输采用端到端加密,并由用户控制文件发送权限。
主要功能
- 01设备间点对点传输
- 02端到端加密传输
- 03图形界面与命令行操作
- 04通过 MCP 发送和接收文件
- 05传输前进行敏感文件确认
- 06支持自建中继
适用场景
- 01在个人设备间发送文件
- 02向朋友的设备传送文件
- 03让 AI 助手发送文件到配对设备
- 04通过手机浏览器收发文件
MCP 相关
`toss mcp` 为 AI 助手提供查看配对设备、发送文件和查看近期接收文件的工具。发送权限由 toss 控制,可要求用户确认;配对和设备管理仍由用户操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍

toss
将文件点对点发送到自己的设备和朋友的设备。无需输入 IP 地址,无需账号,文件也不会存放在服务器上。
只需用一个短代码配对一次,之后无论使用哪个网络,都能按名称投送文件。运行 toss 打开窗口:将文件拖到窗口中(或点击 投送),然后选择设备。关闭窗口后,toss 仍会在托盘中接收文件。右键点击托盘图标,可设置 toss 在登录时启动、将其与 Claude Code 配合使用,以及在 Windows 上将其添加到资源管理器的 发送到 菜单。(在 GNOME 上,托盘需要 AppIndicator 扩展。)
命令行中的操作也一样:
toss invite laptop # prints a code like 48213-otter-violin
toss join 48213-otter-violin desktop # on the other device
toss send laptop report.pdf photos/ # files and folders
toss listen # receive (keep it running)
还可以使用 toss contacts、toss forget <name>、toss phone 和 toss relay。选择 always 可自动接受联系人。
手机,无需应用
点击 手机(或运行 toss phone [file]...),然后扫描二维码。手机浏览器会打开由你的电脑提供的页面:下载你提供的文件,并将文件发送回你的“下载”文件夹。
- 仅限同一网络,且未加密:这是普通 HTTP,因为浏览器不信任家用电脑生成的证书。一次性密钥会保护链接;离开页面后链接失效,且只有第一个打开链接的浏览器能够访问。请在家中使用,不要在公共 Wi-Fi 上使用。
- 首次使用时,请允许 toss 通过 Windows 防火墙。在 iPhone 上,下载的文件会存放在“文件”›“下载”中。
AI 助手(MCP)
toss mcp 可让 Claude 之类的助手向你的设备发送文件,例如:“把你刚做好的图表发到我的笔记本电脑”。它可以列出已配对的设备、向这些设备发送文件、将文件放到你的手机上(“把这个放到我的手机上”:toss 窗口会显示一个供扫描的二维码),还可以查看最近收到的文件(“打开我手机刚发来的照片”;为此,toss 会在自己的文件夹中保留最近 50 个收到的文件名)。除此之外别无其他:配对、移除设备和设置都由你掌控;每次传输仍需另一台设备上的用户接受,除非你允许它未经询问就从你的设备接收文件。toss 窗口会显示助手发送的内容。
助手读取的内容可能会影响它的行为,因此由 toss 决定哪些内容可以发送,而不是由助手决定。你指定文件夹中的文件会立即发送。其他文件,以及即使位于这些文件夹中、但看起来像机密的文件(密钥、.env、密码数据库),都会由 toss 亲自询问你:在一个助手或应用无法替你作答的独立窗口中询问,或者在没有屏幕的电脑上通过助手应用询问。询问时会显示文件的实际位置和将要发送的数据量。勾选 以后不再询问,即可从此允许发送某个文件夹中的内容;托盘会列出这些文件夹,点击某个文件夹即可将其移除。包含设备密钥的 toss 自身文件夹永远不会发送。toss 通过文件名而非内容识别机密,因此请勿将其他机密放在你允许发送的文件夹中。关于此机制如何应对提示注入的测试,涵盖五个开源模型(允许访问一个项目文件夹,在 224 次注入测试中没有泄露任何内容,但部分模型大多数时候都中了注入的招):evals/injection。
Claude Code:在 Windows 上安装后,toss 会自动添加自身(托盘菜单:与 Claude Code 配合使用),并在每次发送前征求你的同意。手动添加:claude mcp add toss -- toss mcp ~/projects。Claude Desktop:从 Releases 下载 toss.mcpb,打开后选择文件夹。其他助手(Cursor 等)可将其添加到 MCP 配置中:
{ "mcpServers": { "toss": { "command": "toss", "args": ["mcp", "/path/to/projects"] } } }
如果助手支持,发送操作会作为任务运行,因此等待他人接受时不会超时。传输文件时会显示进度;若发送取消,下次会继续。它已作为 io.github.plamen-g/toss 收录在 MCP Registry 中。
隐私
传输采用端到端加密(QUIC 使用 TLS 1.3 和后量子 X25519 + ML-KEM-768 密钥交换):只有接收设备能读取你的文件,甚至连文件名也看不到。其他人只能看到你在传输这一事实:
| 对象 | 可见信息 |
|---|---|
| 另一台设备 | 你的 IP 地址 |
| n0,toss 默认使用其免费服务连接设备 | 你的 IP 和设备 ID、哪些设备在何时连接,以及经其中继传输的数据量 |
| 你的互联网服务提供商或 Wi-Fi | 加密流量及其大小 |
| 拦截你 Wi-Fi 的任何人(针对手机页面) | 文件:该页面没有加密 |
| GitHub,toss 会在启动时和每天检查更新 | 你的 IP 和 toss 的版本 |
减少泄露的信息:
- 运行自己的中继服务(见下文),toss 就不会联系 n0。没有自己的中继服务时,即使设备在同一 Wi-Fi 下,也会通过 n0 查找彼此。
- 已移除的设备仍知道你的设备 ID,因此可以看到你何时在线。删除 toss 配置文件夹中的
key文件以创建新身份,然后重新配对。 - 配对码就像一张票:谁先使用,谁就会完成配对;错误猜测则会让配对码失效。只通过语音或你信任的渠道,把配对码给你指定的人。
- macOS 和 Linux 不会将接收的文件标记为已下载,因此这里的窗口会提供“在文件夹中显示”,而不是“打开”。
安装
最快的方法,无需处理安全提示:在 Windows 上将一行命令粘贴到 PowerShell,或在 Mac 上粘贴到终端。它会从此仓库下载最新版本并安装,因此只有在信任此仓库时才运行。
irm https://raw.githubusercontent.com/plamen-g/toss/master/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/plamen-g/toss/master/install.sh | sh
或者下载:
**Windows:**下载 toss-windows-x86_64.exe 并打开:toss 会自行安装,并在开始菜单中创建入口、设置为登录时启动;如果你安装了 Claude Code,也会为其配置。打开较新版本的下载文件即可更新。它目前尚未签名,因此 Windows 会先发出提示:点击“更多信息” →“仍要运行”。
**Mac:**下载 toss-macos.dmg(适用于任何 Mac),打开后将 toss 拖到 Applications 中。它目前尚未通过 Apple 签名,因此 macOS 首次不会打开它:前往“系统设置” →“隐私与安全性”,然后点击“仍要打开”。在终端中,其路径为 /Applications/toss.app/Contents/MacOS/toss。
**Linux:**将 Releases 中的 toss 放到 PATH 中。
有新版本时,托盘菜单会提供 Update to 选项。在 Windows 和 Mac 上,toss 会下载更新、使用 toss 的发布密钥验证其签名,然后以新版本重新启动;在 Linux 上,它会打开发布页面。
要构建它:cargo build --release(约 14 MB)。在 Mac 上,随后运行 sh macos/bundle.sh,会生成 target/release/toss.app 和 toss-macos.dmg。
密钥和联系人保存在 %APPDATA%\toss、~/.config/toss 或 ~/Library/Application Support/toss 中,也可能保存在 TOSS_HOME 指向的位置。
使用自己的中继服务
在具有主机名的服务器上运行 iroh-relay(iroh-relay --config-path relay.toml,开放 TCP 80 和 443 端口以及 UDP 7842 端口):
enable_relay = true
enable_quic_addr_discovery = true
access.shared_token = ["<long random token>"] # only your devices may use it
[tls]
hostname = ["relay.example.com"]
cert_mode = "LetsEncrypt"
contact = "[email protected]"
然后在每台设备上运行:toss relay https://relay.example.com <token>,或部署它生成的 relay.json。运行 toss relay off 即可撤销设置。设备只能通过同一个中继服务互相连接。
常驻接收端
与服务器配对一次,选择始终,并保持 toss listen 运行;如果没有人响应,则只有自动接受的联系人可以连接。
# /etc/systemd/system/toss.service, then: systemctl enable --now toss
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/toss listen
Restart=on-failure
StandardInput=null
[Install]
WantedBy=multi-user.target
工作原理
- 基于 iroh 构建:设备即其公钥。条件允许时,连接会直接穿过 NAT;否则会通过加密中继。
- 每次连接建立时,都会对其 TLS 密钥进行签名,因此联系人无法伪造或重放。配对码很短:数字表示两台设备在哪里会合,两个单词则通过 SPAKE2(一种基于密码的身份验证密钥交换)进行验证,因此监听者一无所获,而猜测只有 65,536 分之一的成功机会。
- 接收的文件无法保存到 Downloads 目录之外,不会覆盖任何文件(使用
name (1).ext),文件名兼容所有操作系统,并且在 Windows 上会带有“从互联网下载”的标记。陌生人会被拒之门外,并且会先检查可用空间。 - 大文件会以 256 KB 为单位进行流式传输,因此无论文件多大,内存占用都保持在约 10 MB。传输中断后,再次发送相同文件即可恢复;恢复前,双方会比较已接收内容的 BLAKE3 哈希。未完成的文件会暂存在
Downloads/.toss-incoming中;可手动删除放弃的文件。
尚未实现
附近设备发现、macOS 下载标记、Wayland 上的拖放。
采用 MIT 许可证。显示字体:Bricolage Grotesque(SIL Open Font License,assets/OFL-BricolageGrotesque.txt)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。