Synapse is a high-performance, peer-to-peer file transfer system designed for Local Area Networks. It combines a premium desktop interface built with React and Wails v2 into a single native binary, enabling seamless cross-platform deployment.
The system leverages mDNS for zero-configuration device discovery and implements end-to-end encryption to ensure secure, direct transfers without intermediaries.
With native clients across desktop and Android, Synapse delivers fast, frictionless file sharing across heterogeneous devices on the same network
![]() Send Files |
![]() Receive Files |
![]() Transfer History |
![]() Settings |
![]() Mobile Send |
![]() Mobile Receive |
![]() Mobile History |
![]() Mobile Settings |
- π₯οΈ Native Desktop GUI β Premium dark-mode interface built with React, Vite, and Framer Motion on Wails v2. Single binary footprint.
- π File & Directory Transfer β Send individual files or entire folders (auto-zipped and streamed).
- π Zero Configuration β Automatic peer discovery on LAN using mDNS. No IP addresses, no setup.
- π End-to-End Encrypted β All transfers use TLS with ephemeral self-signed certificates.
- β Integrity Verified β SHA-256 checksums verify every transfer with native cryptographic integrity.
- βΈοΈ Resumable Transfers β Detects partial files and resumes from where they left off.
- β‘ Adaptive Compression β Text files compressed with Zstandard; already-compressed formats sent raw.
- π Real-Time Progress β Live progress bar, speed, and percentage displayed in the GUI.
- π Transfer History β All transfers (sent and received) logged with timestamps and status.
- βοΈ Configurable β Device name, download directory, and auto-accept settings.
- π₯ Multi-Receiver β Multiple receivers can download the same file simultaneously.
Download the latest release from GitHub Releases:
| Platform | Download |
|---|---|
| Android | synapse.apk |
| Windows (Installer) | synapse-amd64-installer.exe |
| Windows (Portable) | synapse-windows-amd64.zip |
| Linux (amd64) | synapse-linux-amd64.tar.gz |
The Android version brings the same "Elegant Beige" experience to your mobile device.
- Download the
synapse.apkfrom the latest release. - Install it on your Android device (ensure "Install from Unknown Sources" is enabled).
- Permissions: The app requires "Nearby Devices" permission for discovery and "Files/Media" access for transfers.
sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0- WebView2 Runtime (included in Windows 10/11)
- Go 1.21+
- Node.js 18+ (for frontend Vue/React build)
- Wails CLI v2
- Linux:
libgtk-3-devandlibwebkit2gtk-4.1-dev
# Install Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest
# Clone and build
git clone https://github.com/id-root/LanDrop.git
cd LanDrop
# Linux
wails build -tags webkit2_41
# Windows (on a Windows machine)
wails buildThe binary will be at build/bin/synapse (or synapse.exe on Windows).
- Open Synapse
- Go to Send Files tab (default)
- Click Browse Files or Select Folder
- Click Start Sending β the app broadcasts on your LAN
- When a receiver connects, the transfer starts automatically
- Open Synapse on the receiving device
- Go to Receive Files tab
- Click Scan for Peers β discovered senders appear as cards
- Click Connect to Receive on the desired peer
- The file downloads to your configured download directory
- Device Name β Customize how your device appears to peers
- Download Directory β Where received files are saved
- Auto-Accept β Automatically accept incoming connections without prompts
# Hot-reload dev server
wails dev -tags webkit2_41synapse/
βββ main.go # Wails app entrypoint
βββ gui/
β βββ app.go # Wails-bound methods (send, receive, scan, etc.)
β βββ settings.go # Config persistence (~/.config/synapse/)
β βββ history.go # Transfer history
βββ frontend/
β βββ src/
β β βββ main.jsx # React app entry
β β βββ App.jsx # Main app shell & router
β β βββ tabs/ # Tab components (Send, Receive)
β β βββ components/ # Isolated UI components
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite bundler configuration
βββ internal/
β βββ discovery/ # mDNS discovery (_synapse._tcp)
β βββ transfer/
β βββ sender.go # TLS sender with progress callbacks
β βββ receiver.go # TLS receiver with progress callbacks
β βββ protocol.go # Wire protocol (headers, chunking)
β βββ security.go # Ephemeral TLS certificate generation
βββ .github/workflows/
βββ release.yml # CI/CD: build Linux + Windows, create release
All transfers use TLS over TCP with this protocol:
- Header: 8-byte length + JSON Metadata (
{"name", "size", "compression", ...}) - Request: 8-byte length + JSON (
{"offset": ...}) for resume support - Content: Raw or Zstd-compressed stream (chunked encoding if compressed)
- Footer: SHA-256 checksum (32 bytes on wire)
- "No peers found" β Ensure both devices are on the same network. Some corporate/public WiFi blocks mDNS (multicast).
- Firewall β Allow incoming TCP connections and UDP multicast (port 5353).
- Checksum Mismatch β Retry the transfer; it will resume automatically.
- Linux: App won't start β Install runtime dependencies:
sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0
MIT LICENSE








