What it is
Beam: LAN File Transfer
Fast, frictionless file transfer for your local network. Send files, text, and messages between computers on the same WiFi with zero setup.
Built with Tauri 2 + React 18 | License: MIT
Why it exists
Users need a simple, instant way to transfer files between devices on the same network without:
- Cloud upload/download overhead
- Complex setup or pairing rituals
- Dependency on internet connectivity
- Loss of privacy to third-party servers
The friction of traditional file transfer methods (email, cloud storage, USB drives) for local LAN scenarios.
How it works
Beam — a cross-platform desktop application that enables instant peer-to-peer file transfer over local networks.
Why it works:
- Automatic discovery via mDNS: devices announce themselves, no manual IP entry
- Direct TCP streaming between peers on the same subnet: no intermediary servers
- Integrity verification with SHA-256 hashing on both ends
- Smart compression for batches of files (auto-zip, auto-unzip)
- Bandwidth control to prevent network congestion
- Background operation via system tray, accepts transfers while minimized
- Cross-platform native builds for Windows, macOS, Linux
Result: drag files → pick device → send. That's it. Receivers see sender name, file list, and optional note before accepting.
How it's built
Frontend Stack:
- React 18 + TypeScript
- Tailwind CSS (styling)
- Zustand (state management)
- Framer Motion (animations)
- Lucide icons
Backend Stack:
- Tauri 2 (cross-platform desktop framework)
- Rust + Tokio (async runtime)
- SHA2 (integrity hashing)
- Rayon (parallel hashing across CPU cores)
- Zip v2 (compression/decompression)
Networking:
- mDNS (mdns-sd) for peer discovery on
_beam._tcp - TCP with length-framed JSON protocol
- Custom
Offer→Response→ streaming protocol
System Integration:
- System tray icon (minimize to background)
- File explorer integration
- Watch folder monitoring (Notify crate)
- Auto-update from GitHub releases
- Native window vibrancy (Windows Mica blur)
Data Persistence:
settings.json: bandwidth limits, device groups, trusted devices- Transfer history log
- Conflict resolution: rename / overwrite / skip
What it does
What was hard
mDNS Reliability:
- Peer discovery inconsistent across network configurations (subnets, VPNs, WiFi 6)
- Lesson: Added manual fallback + retry logic, clear error messaging for firewall blocks
Parallel Hashing at Scale:
- Computing SHA-256 on thousands of files while UI remains responsive
- Lesson: Rayon threadpool + chunked I/O, UI event debouncing to prevent lag
Cross-Platform Binary Signing:
- Signing Windows MSI, macOS DMG, and Linux AppImage with different cert authorities
- Lesson: GitHub Actions workflow templates, platform-specific signing paths
Bandwidth Throttling Without Blocking:
- Sleeping between chunks blocks the Tokio task
- Lesson: Tokio::time::sleep() is async-safe; measure per-chunk, adjust on the fly
Conflict Handling:
- Files exist at destination: rename (add suffix), overwrite, skip, or ask user
- Lesson: Conflicts are rare on LAN, batch resolve with sensible defaults
UI State During Active Transfers:
- Users drag new files while transfers are in flight
- Lesson: Zustand queue + cancel button per transfer, don't block the sender
Auto-Update Security:
- Public GitHub releases, verifying signatures
- Lesson: Always require HTTPS, validate release checksums, rollback on failure