Table of Contents
BeamSync is a cross-platform, desktop file transfer application engineered for speed and reliability. Built with Go (Wails v2) and Svelte, it establishes direct, high-bandwidth connections over your local area network β no internet required, no cloud involved, no accounts needed. Files go straight from one device to another.
- β‘ High-Speed Local Transfer β Streams files directly over HTTP on your LAN for maximum throughput.
- π Fully Offline β Works without internet access. Data never leaves your local network.
- π± Cross-Device via QR Code β Connect any mobile device instantly by scanning a QR code β no app install required on the phone.
- π Drag & Drop β Drop files onto the window to begin transfer immediately.
- π§ Smart Networking β
- Auto-detects the optimal local IP address.
- Finds open ports automatically to avoid conflicts.
- Configures firewall rules on Linux when needed.
- π Auditory Feedback β Integrated audio engine provides real-time interaction sounds.
- βΏ Accessible β Respects
prefers-reduced-motionfor all animations.
The project is structured as a Go workspace with two modules:
BeamSync/
βββ beamsync/ # Core library (Go module)
β βββ server.go # StartServer(), StartSender() β HTTP file streams
β βββ port_manager.go# FindAvailablePort() β dynamic port binding
β βββ firewall.go # RunFirewallSetup() β Linux firewall automation
β βββ ...
βββ desktop/ # Wails desktop application (Go + Svelte)
β βββ app.go # App lifecycle, config, event bridge
β βββ frontend/ # Svelte + Vite UI
β βββ ...
βββ go.work # Go workspace root
| Layer | Technology | Key Components |
|---|---|---|
| Frontend | Svelte + Vite | Reactive UI, drag-and-drop, QR display |
| Application Shell | Go + Wails v2 | App β event loop, config persistence (loadConfig, saveConfig) |
| Network Engine | Go (net/http) | StartServer, StartSender, writeFileToDisk β concurrent file I/O |
| Utilities | Go | getLocalIP, FindAvailablePort, RunFirewallSetup |
| Media | Go | AudioEngine β native audio playback |
Architecture details derived from graphify analysis: 172 nodes, 223 edges, 20 communities.
yay -S beamsync-binDownload the latest release from the Releases page.
-
Clone the repository:
git clone https://github.com/PranavAgarkar07/BeamSync.git cd BeamSync -
Install frontend dependencies:
cd desktop/frontend && npm install && cd ../..
-
Run in development mode (hot reload):
cd desktop && wails dev
-
Build for production:
cd desktop && wails build
Compiled binaries are output to
desktop/build/bin/.
- Launch BeamSync.
- A connection QR code and URL are displayed automatically.
- Scan the QR code from a mobile device, or open the URL from another machine on the network.
- Incoming files are saved to
Downloads/BeamSync/.
- Click Send or drag files onto the window.
- Select the files to transfer.
- A unique URL and QR code are generated.
- Open the URL or scan the QR on the receiving device to start the download.
For developers, contributors, and security auditors who want to understand the underlying peer-to-peer file transfer protocol or build custom scripts/clients, the complete HTTP API and authentication specifications are available in the API Documentation (API.md).
- Local-only β All transfers happen over your LAN. No external servers are contacted.
- Zero data collection β BeamSync does not store, transmit, or analyze your files beyond the direct peer-to-peer transfer.
- Open source β The entire codebase is available for audit.
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome. Please open an issue or submit a pull request.


