dashbeam README

The project's README from github.com/tonyantony300/dashbeam. As one markdown file: README.md.

Language: English | 中文 | Русский | Português | Español | Deutsch | Français | 日本語 | 한국어 | Polski | العربية

File transfer doesn't need to be complicated

DashBeam Header

DashBeam working demo

Discord Version Website Platforms Sponsor

A free and open-source file transfer tool that harnesses the power of cutting-edge peer-to-peer networking, letting you transfer files directly without storing them on cloud servers.

Why rely on WeTransfer, Dropbox, or Google Drive when you can reliably and easily transfer files directly, end-to-end encrypted and without revealing any personal information?

Pick whichever route is closest to hand: send a link or a QR code that opens on any device, send to a device you paired once, or send to a device already on your network. All three move the same bytes the same way - directly, encrypted end to end.

Features

Real-world stats

Metric Reported
Largest transfer 452 GB
Fastest large transfer 54 GB @ 123 MB/s (~1 Gbps)
High-speed bulk transfer 328 GB @ 93 MB/s
Peak speed measured 125 MB/s (1 Gbps)

Transfer throughput depends on your device, network, and connection path.

Installation

The easiest way to get started is by downloading one of the following versions for your respective operating system:

Platform Recommended Other formats Size
💻 Windows (x64) Setup.exe MSI, Portable ZIP ~10 MB
💻 macOS (Universal) DashBeam.dmg Apple Silicon, Intel ~15 MB
💻 Linux (amd64) DashBeam.deb .rpm, AppImage ~13 MB
📱 Android (arm64) DashBeam.apk armv7, universal ~50 MB
⌨️ CLI Downloads - ~4-5 MB
🌐 Web (Limited throughput) app.dashbeam.net - ~2 MB

More options at GitHub Releases or in Downloads page.

Running into problems? See Troubleshooting for common issues and how to collect logs.

Partners

TestMuAI

We're looking for Partners to join our mission! Partner with us and support while we push the boundaries of peer-to-peer file transfer.

LET'S CHAT

Supported Languages

🇺🇸 🇷🇺 🇫🇷 🇨🇳 🇩🇪 🇯🇵 🇮🇳 🇹🇭 🇮🇹 🇨🇿 🇪🇸 🇧🇷 🇸🇦 🇮🇷 🇰🇷 🇵🇱 🇺🇦 🇹🇷 🇳🇴 🇧🇩 🇭🇺 🇷🇸 🇹🇼 🇰🇭 🇺🇿

Ways to send

Same-network apps appear under Nearby in Settings → Devices and in the Send to a device list while you're sharing. Pick a nearby device and Pair & Send to pair and start the transfer in one step - you can also pair from Settings without sharing. First contact shows a verification code on both screens. Set who can find you in Settings → Network → Your discoverability.

Uses mDNS - often blocked on guest Wi-Fi and VPNs. See Troubleshooting if the list stays empty.

Paired devices

Pair in Settings → Devices with a pairing code (works remotely, over the internet) or via a Nearby request on the same network. After pairing, Send appears next to that device while sharing - no ticket to copy. The receiver gets an in-app prompt. Desktop can keep running in the background and show online paired devices in the tray (Settings → General → Startup & background). Manual tickets and the sendme CLI still work.

While sharing: QR for a camera scan, Share for the system sheet, Copy for the raw ticket. Links use https://app.dashbeam.net/receive?ticket=… - on Android they open the app; elsewhere the web app, so nothing to install (large files are better in the native app). Paste a ticket, link, or full share message into Receive.

Comparison

DashBeam Blip LocalSend Magic Wormhole PairDrop
Networking QUIC via Iroh Unknown HTTPS/REST over TCP encrypted TCP WebRTC/DTLS (SCTP)
Works over the internet ✅ ✅ LAN only ✅ ✅
Saturates gigabit connections ✅ ✅ LAN only ✅ ❌ (SCTP/browser ceiling)
Discover devices on LAN ✅ ❌ ✅ ❌ ❌
Persistent paired devices ✅ ✅ (account) ❌ ❌ ✅
Send folders ✅ ✅ ✅ ✅ ✅ (CLI only, not in browser)
Resumable transfers ✅ ✅ ❌ ❌ ❌
Roaming mid-transfer ✅ ❌ ❌ ❌ ❌
Send to multiple receivers ✅ (broadcast) ❌ ✅ ✅ ❌
Unlimited file size ✅ ✅ ✅ ✅ Limited by browser memory
Open source ✅ ❌ ✅ ✅ ✅
No account required ✅ ❌ ✅ ✅ ✅
End-to-end encryption ✅ ✅ ✅ ✅ ✅
Platforms CLI + desktop + mobile + web Desktop + mobile (no web/CLI) Desktop + mobile (no web/CLI) CLI only Web/PWA + Android app + CLI
The catch WIP Closed source; data handling cannot be audited Same-network only, no resume CLI-only; GUI front-ends are separate, community-maintained WebRTC/SCTP throughput ceiling; browser memory limits

Know more →

Under the hood

DashBeam is built on Iroh, a modern peer-to-peer networking stack that simplifies direct device-to-device communication. In practice, that means devices talk over encrypted QUIC, files move with content-addressed blobs, and relays help when a direct path isn’t available.

The long version: Under the hood walks the same architecture as a narrative - fingerprints instead of filenames, names instead of addresses, hole punching, roaming, and what each intermediary can and cannot see.

The building blocks

Piece What it does here
Blobs (iroh-blobs) Store and stream file data; every chunk is verified with BLAKE3
Tickets One string that tells a peer who to dial and what to fetch
Endpoints Each device’s Iroh identity (Ed25519 key → endpoint id)
QUIC + TLS 1.3 Encrypted transport; multiplexing without head-of-line blocking
Relays + hole punching Bootstrap connections across NATs; the relay carries data while a direct path is negotiated
Control protocol (pairing) Long-lived channel to remember devices and deliver share invites
Local discovery (mDNS) Optional LAN advertising so Nearby devices can find each other without a ticket
Receive links A ticket wrapped in an ordinary https URL - an App Link on Android, the web app everywhere else

Blobs

Files aren’t uploaded to a server. They’re published as blobs: opaque byte sequences addressed by a BLAKE3 hash.

Because that hash is a BLAKE3 tree rather than one digest over the whole file, every chunk verifies on its own against the root. That is what makes resume cheap: a receiver coming back after a dropped connection knows exactly which chunks it already holds and has verified, so it asks only for the gap. Nothing already received is re-sent, and nothing arriving is taken on trust.

Tickets

A share ticket is a single token that packs:

  1. The sender’s endpoint id (so you know you’re talking to the right device)
  2. Enough address / relay info to dial them
  3. The blob hash to download

You only connect to people you share a ticket with: no broadcasting your IP to strangers. That’s the default “cozy network” model Iroh encourages, vs. flooding discovery to the whole swarm.

Tickets that carry only an endpoint id lean on public-key discovery (Pkarr) to find current addresses. Those records are signed by the endpoint key itself, so a tampered one fails verification rather than misdirecting you - the lookup service is trusted for availability, not integrity.

Connecting across networks

When two devices need to meet:

  1. Each registers with a public (or self-hosted) relay so peers can find a path through firewalls and NATs.
  2. Iroh tries QUIC hole punching to upgrade to a direct peer-to-peer link.
  3. If a direct path works, traffic moves over to it. If not, the relay stays in the path as a fallback UDP hop.

Those steps overlap rather than queue. The relay is already carrying your data while hole punching negotiates, so nothing waits on the direct path to succeed - the transfer just gets faster if and when it does. Roughly one transfer in ten never gets a direct path at all (symmetric NAT, locked-down corporate networks) and rides the relay start to finish.

Either way, the payload is end-to-end encrypted. Relays see ciphertext, not your files. More on Iroh relays →

Roaming across networks

A connection is bound to the peer’s key, not to its IP address, so changing networks does not end it. Switch from Wi-Fi to cellular mid-transfer and iroh notices the address change, learns the new candidates, and republishes them to the peer. The relay carries the data throughout, and hole punching simply runs again on the new path.

Addresses are disposable hints, not identity. That is the practical payoff of naming devices by key instead of by location.

QUIC & encryption

QUIC (UDP-based, same foundation as HTTP/3) brings TLS 1.3 into the transport. For DashBeam that buys encryption and authentication, multiple streams with shared congestion control, and fast reconnects when you’ve talked to a peer before.

Paired devices

Pairing doesn’t replace tickets; it delivers them for you.

  1. Devices exchange a short pairing code (the host’s endpoint id) over a dedicated control ALPN.
  2. Each side proves identity by signing connection-bound keying material with its device secret, then remembers the peer locally.
  3. A persistent control connection keeps presence (online/offline).
  4. When you share, DashBeam still creates a normal one-time blob ticket; choosing a paired device ships that ticket as an in-app invite instead of making you copy-paste it.

Manual tickets and the sendme CLI keep working exactly as before.

Nearby (local discovery)

On the same local network, DashBeam can advertise and browse peers with mDNS (desktop and Android; not the web app).

  1. When discoverability is Everyone, the device publishes enough metadata for others to show its name in Nearby.
  2. Paired only still announces presence without exposing the display name to strangers on the LAN.
  3. Off stops advertising; you can still browse and send to others who remain discoverable.
  4. First-contact file invites show a short verification code derived from both devices' public keys so each side can confirm they're talking to the intended peer before accepting.
  5. Accepting a Nearby pair request or file invite creates the same local paired-device records as code-based pairing.

Self-hosting relays and discovery

For how to run your own iroh relay and discovery server, configure DashBeam to use them, and how mixed public/self-hosted setups behave, see infra/README.md (relay: infra/relay/README.md, discovery: infra/dns/README.md).

For the illustrated version of everything above - including a full account of what a relay operator, your ISP, and the lookup service each learn from a transfer - read Under the hood.

Development

See CONTRIBUTING.md for prerequisites, local setup, build instructions, and testing.

Join our Discord to contribute

The best way to contribute is to join our Discord and say hi. Introduce yourself and share what skills or interests you have - whether that’s coding, testing, design, or something else. You can also raise issues, suggest fixes, or pitch ideas. Maintainers are there to guide you every step of the way.

It’s the best place to get context, align on direction, and collaborate with the community.

License

AGPL-3.0

Privacy Policy

See PRIVACY.md for information about how DashBeam handles your data and privacy.

Sponsor Buy Me Coffee

Contributors

Contact

Reach me here for suggestions, feedback or media related communication.

Thank you for checking out this project! If you find it useful, consider giving it a star and helping spread the word.

Built on

iroh

dashbeam (tonyantony300/dashbeam)

Searching Database…

这是什么?一款免费开源的文件传输工具:文件通过点对点连接直接在设备之间传送,全程端到端加密,绝不会存放在云服务器上。
它是要安装的应用,还是在浏览器里运行的?两种都有。它提供 Windows、macOS、Linux 和 Android 的原生应用,一个约 4-5 MB 的命令行工具,以及一个约 2 MB、在浏览器里直接运行、无需安装的网页版——不过网页版的传输速度有限。
我具体怎么把文件发给别人?选好文件或文件夹,然后发送给同一网络里的附近设备、发送给之前配对过的设备,或者分享链接、二维码或票据——对方扫一下或点一下就能开始接收。
接收我文件的人需要安装什么吗?不需要。链接或二维码在任何浏览器里都能打开(也可以用 Android 应用),接收方什么都不用装——不过特别大的文件用原生应用传更合适。
有哪些我该注意的坑?网页版传输速度有限;附近发现功能依赖 mDNS,而访客 Wi-Fi 和 VPN 经常会拦截 mDNS;另外大约每十次传输就有一次始终无法建立直连,全程都得走中继服务器。
两台设备必须在同一个 Wi-Fi 网络里吗?不用。附近模式能发现同一网络里的设备,配对过的设备可以通过互联网远程连接,链接或二维码则任何设备都能用——全部都是点对点传输。
我的文件会经过服务器吗,谁能看到它们?文件以经过 BLAKE3 校验的加密数据块的形式直接在设备之间传输——即使需要中继,中继也只能看到密文。没有账号、没有追踪、没有广告,而且你可以自建中继服务器。
实际传输速度有多快?README 里记录了最大 452 GB 的单次传输、实测峰值 125 MB/s(约 1 Gbps),以及以 93 MB/s 传输了 328 GB 的记录。实际速度取决于你的设备、网络和连接路径。
和 LocalSend、WeTransfer 或 Magic Wormhole 相比怎么样?和 LocalSend 不同,它可以通过互联网传输,不限于同一网络,而且支持断点续传。和 WeTransfer 或 Blip 不同,它是开源的而且不需要账号;和只有命令行的 Magic Wormhole 不同,它提供图形界面、移动端和网页版应用。
如果传输过程中连接断开或者我切换了网络会怎样?传输会从上次中断的地方继续:每个数据块都通过 BLAKE3 哈希树校验,所以只会重传缺失的部分。连接绑定的是设备的密钥而不是 IP 地址,所以传输中途从 Wi-Fi 切到移动网络也不会断开。
Iroh 是什么?DashBeam 所基于的点对点网络框架。它提供加密的 QUIC 传输、用于文件数据的内容寻址数据块、设备配对、mDNS 发现,以及配合 NAT 打洞的中继服务器,用于穿越 NAT 和防火墙建立连接。
Size
73.7 MB
Stars
9.9K
Age
1y
Commits · 90 Days