Beam v0.1.6 is out, check it out! Read more →
← All projects
Open Source · 2026 · MIT · v0.1.6

Beam

Local P2P file transfers, no cloud

GitHub
Beam cover image
1
Stars
0
Forks
52+
Downloads
Overview

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

The problem

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.

The solution

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.

Architecture

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 OfferResponse → 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
Features

What it does

Performance - hashing, compression, telemetry
Communication -transfer notes, device groups
Control - bandwidth throttling, filters, watch folders
UI/UX - Fluent design, system tray, explorer
Reliability - integrity verification, conflict handling, auto-updates
Cross-Platform - native builds, discovery, offline capability
Challenges

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