toss

io.github.plamen-g由 GitHub 帳號 plamen-g 發布v0.3.2更新於 Oct 30, 2026

Send files to your own devices and friends, peer to peer and end-to-end encrypted.

已驗證STDIO僅桌面檔案與儲存溝通與協作

概覽

AI 產生的概覽

點對點、端對端加密的檔案傳輸工具,讓 AI 助理依裝置名稱把檔案送到你自己的裝置或朋友那裡。

可以做什麼
  • 列出已配對的裝置,並依名稱傳送檔案或資料夾
  • 把檔案放到手機上,toss 視窗會顯示 QR 碼供掃描
  • 查看最近收到的檔案,保留最近 50 個送達檔案的名稱
  • 在支援的情況下以任務方式傳送,顯示進度,取消後再次傳送可續傳
  • 配對、移除裝置與設定仍由使用者自行操作,助理無法觸及
適用情境
適合讓助理把它產生的檔案(圖表、報告、資料夾)直接交給你的筆電、另一台機器或手機,而不必上傳到雲端服務。也適合查看手機或其他裝置最近送來了什麼。
執行需求
本機需先安裝 toss(Windows、macOS 或 Linux),以本機程序方式啟動,並在參數中指定允許存取的資料夾。裝置之間需先用短碼配對。不需帳號或 API 金鑰。預設透過 n0 的免費中繼伺服器連線,也可自架中繼。
安裝前請注意
助理具備向外傳送檔案的能力,因此對於允許資料夾之外的檔案,以及看起來像金鑰、.env、密碼庫的檔案,toss 會自行彈窗確認;它只依檔名辨識敏感檔案。接收端仍需逐次接受傳輸,除非設為自動接受。手機網頁為明文 HTTP,僅限同一網路且不加密。預設中繼營運方可見你的 IP、裝置 ID 與傳輸量。已移除的裝置仍知道你的裝置 ID。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 toss,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[toss logo: a figure throwing a glowing file]

toss

Send files to your own devices and your friends, peer to peer. No IP addresses to type, no accounts, and your files never sit on a server.

Pair once with a short code, then toss files by name from any network. Run toss to open the window: drag files onto it (or click Toss) and pick a device. Closing the window keeps toss receiving from the tray. Right-click the tray icon to start toss at login, use it with Claude Code and, on Windows, add it to Explorer's Send to menu. (On GNOME the tray needs the AppIndicator extension.)

The same from the command line:

toss invite laptop                     # prints a code like 48213-otter-violintoss join 48213-otter-violin desktop   # on the other devicetoss send laptop report.pdf photos/ # files and folderstoss listen                         # receive (keep it running)

Also toss contacts, toss forget <name>, toss phone and toss relay. Answer always to auto-accept a contact.

Phones, no app

Click Phone (or run toss phone [file]...) and scan the QR code. The phone's browser opens a page served by your computer: it downloads the files you offer and sends files back into your Downloads folder.

  • Same network only, and not encrypted: it's plain HTTP, because browsers don't trust certificates a home computer can make. A one-time secret guards the link, the link dies when you leave the page, and only the first browser to open it gets in. Use it at home, not on public Wi-Fi.
  • The first time, allow toss through the Windows firewall. On an iPhone, downloads land in Files › Downloads.

AI assistants (MCP)

toss mcp lets an assistant like Claude send files to your devices: "send the chart you just made to my laptop". It can list your paired devices, send to them, put files on your phone ("put this on my phone": the toss window shows a QR code to scan), and see what arrived lately ("open the photo my phone just sent"; toss keeps the names of the last 50 arrivals in its folder for this). Nothing else: pairing, removing devices and settings stay with you, and someone on the other device still accepts each transfer, unless it takes files from yours without asking. The toss window shows what assistants sent.

What an assistant reads can steer it, so toss decides what leaves, not the assistant. Files from the folders you name go at once. For anything else, and for files that look like secrets (keys, .env, password databases) even inside those folders, toss asks you itself: in a window of its own that no assistant or app can answer for you, or through the assistant's app on a computer without a screen. The question shows where the files really are and how much would go. Tick Don't ask again to let a folder through from then on; the tray lists those folders, and clicking one takes it off. toss's own folder, with your device key, never goes. toss knows secrets by their file names, not their contents, so keep other secrets out of the folders you allow. How this holds up against prompt injection, on five open models (with a project folder allowed, nothing leaked in 224 injected trials, though some models fell for the injection most of the time): evals/injection.

Claude Code: installed on Windows, toss adds itself (tray menu: Use with Claude Code) and asks you before every send. By hand: claude mcp add toss -- toss mcp ~/projects. Claude Desktop: download toss.mcpb from Releases, open it and pick the folders. Other assistants (Cursor, ...) take it in their MCP config:

json
{ "mcpServers": { "toss": { "command": "toss", "args": ["mcp", "/path/to/projects"] } } }

Where the assistant supports it, a send runs as a task, so waiting for someone to accept can't time out. Progress shows while files move, and a cancelled send resumes the next time. It's in the MCP Registry as io.github.plamen-g/toss.

Privacy

Transfers are encrypted end to end (QUIC with TLS 1.3 and a post-quantum X25519 + ML-KEM-768 key exchange): only the receiving device can read your files, or even their names. Others can see that you transfer:

WhoSees
The other deviceYour IP address
n0, whose free servers toss uses by default to connect devicesYour IP and device ID, which devices connect and when, and the volume through its relay
Your internet provider or Wi-FiEncrypted traffic and its size
Anyone intercepting your Wi-Fi, for the phone pageThe files: that page isn't encrypted
GitHub, where toss checks for updates (at start and once a day)Your IP and toss's version

To show less:

  • Run your own relay (below) and toss never contacts n0. Without one, even devices on the same Wi-Fi use n0 to find each other.
  • A removed device still knows your device ID, so it can see when you're online. Delete the key file in toss's config folder for a new identity, then pair again.
  • A pairing code works like a ticket: whoever uses it first is paired, and a wrong guess uses it up. Give it only to the person you mean, by voice or a channel you trust.
  • macOS and Linux don't mark received files as downloaded, so the window offers Show in folder there, not Open.

Install

The quickest way, with no security prompts: paste one line into PowerShell on Windows, or Terminal on a Mac. It downloads the newest release from this repository and installs it, so run it only if you trust this repository.

powershell
irm https://raw.githubusercontent.com/plamen-g/toss/master/install.ps1 | iex
bash
curl -fsSL https://raw.githubusercontent.com/plamen-g/toss/master/install.sh | sh

Or download it:

Windows: download toss-windows-x86_64.exe and open it: toss installs itself, with a Start menu entry, starting at login, and Claude Code if you have it. Opening a newer download updates it. It isn't signed yet, so Windows asks first: click "More info" → "Run anyway".

Mac: download toss-macos.dmg (any Mac), open it and drag toss onto Applications. It isn't signed by Apple yet, so the first time macOS won't open it: go to System Settings → Privacy & Security and click Open Anyway. In the terminal it's /Applications/toss.app/Contents/MacOS/toss.

Linux: put toss from Releases on your PATH.

When a new version is out, the tray menu offers Update to it. On Windows and Mac toss downloads it, checks its signature against toss's release key, and restarts as the new version; on Linux it opens the release page.

To build it: cargo build --release (about 14 MB). On a Mac, sh macos/bundle.sh then makes target/release/toss.app and toss-macos.dmg.

Keys and contacts live in %APPDATA%\toss, ~/.config/toss or ~/Library/Application Support/toss, or wherever TOSS_HOME points.

Use your own relay

Run iroh-relay on a server with a hostname (iroh-relay --config-path relay.toml, open TCP 80 and 443 and UDP 7842):

toml
enable_relay = trueenable_quic_addr_discovery = trueaccess.shared_token = ["<long random token>"]  # only your devices may use it
[tls]hostname = ["relay.example.com"]cert_mode = "LetsEncrypt"contact = "[email protected]"

Then on every device: toss relay https://relay.example.com <token>, or deploy the relay.json it writes. toss relay off undoes it. Devices only reach each other through the same relay.

Always-on receiver

Pair a server once, answer always, and keep toss listen running; with nobody to answer, only auto-accept contacts get through.

ini
# /etc/systemd/system/toss.service, then: systemctl enable --now toss[Unit]After=network-online.targetWants=network-online.target
[Service]ExecStart=/usr/local/bin/toss listenRestart=on-failureStandardInput=null
[Install]WantedBy=multi-user.target

How it works

  • Built on iroh: a device is its public key. Connections go straight through NATs when they can, otherwise through an encrypted relay.
  • Every connection opens with a signature over its own TLS keys, so a contact can't be faked or replayed. Pairing codes are short: the number says where the two devices meet, and the two words are checked with SPAKE2, a password-authenticated key exchange, so someone listening learns nothing and a guess has one chance in 65,536.
  • Received files can't land outside Downloads, never overwrite anything (name (1).ext), get names that work on every OS, and on Windows carry the "downloaded from the internet" mark. Strangers are turned away, and free space is checked first.
  • Big files stream in 256 KB pieces, so memory stays around 10 MB however large they are. A broken transfer resumes when you send the same files again, after both sides compare a BLAKE3 hash of what already arrived. Partials wait in Downloads/.toss-incoming; delete abandoned ones by hand.

Not yet

Nearby discovery, the macOS download flag, drag and drop on Wayland.

MIT licensed. Display font: Bricolage Grotesque (SIL Open Font License, assets/OFL-BricolageGrotesque.txt).

來源:README.md,提交 0359568

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

2
  1. v0.3.2最新Oct 30, 2026
  2. v0.2.0Oct 30, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分