Skip to content

id-root/Synapse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

124 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Synapse Logo

Made with Go Version 2.0 License: MIT Wails v2

Synapse

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

πŸ’» Desktop Interface

Send Files
Send Files
Receive Files
Receive Files
Transfer History
Transfer History
Settings
Settings

πŸ“± Mobile Interface (Android)

Android Send
Mobile Send
Android Receive
Mobile Receive
Android History
Mobile History
Android Settings
Mobile Settings

Features

  • πŸ–₯️ 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.

Installation

Download Pre-built Binaries

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

πŸ“± Synapse for Android

The Android version brings the same "Elegant Beige" experience to your mobile device.

  1. Download the synapse.apk from the latest release.
  2. Install it on your Android device (ensure "Install from Unknown Sources" is enabled).
  3. Permissions: The app requires "Nearby Devices" permission for discovery and "Files/Media" access for transfers.

Linux Requirements

sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0

Windows Requirements

  • WebView2 Runtime (included in Windows 10/11)

Build from Source

Prerequisites

  • Go 1.21+
  • Node.js 18+ (for frontend Vue/React build)
  • Wails CLI v2
  • Linux: libgtk-3-dev and libwebkit2gtk-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 build

The binary will be at build/bin/synapse (or synapse.exe on Windows).

Usage

Send Files

  1. Open Synapse
  2. Go to Send Files tab (default)
  3. Click Browse Files or Select Folder
  4. Click Start Sending β€” the app broadcasts on your LAN
  5. When a receiver connects, the transfer starts automatically

Receive Files

  1. Open Synapse on the receiving device
  2. Go to Receive Files tab
  3. Click Scan for Peers β€” discovered senders appear as cards
  4. Click Connect to Receive on the desired peer
  5. The file downloads to your configured download directory

Settings

  • Device Name β€” Customize how your device appears to peers
  • Download Directory β€” Where received files are saved
  • Auto-Accept β€” Automatically accept incoming connections without prompts

Development Mode

# Hot-reload dev server
wails dev -tags webkit2_41

Architecture

synapse/
β”œβ”€β”€ 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

Wire Protocol

All transfers use TLS over TCP with this protocol:

  1. Header: 8-byte length + JSON Metadata ({"name", "size", "compression", ...})
  2. Request: 8-byte length + JSON ({"offset": ...}) for resume support
  3. Content: Raw or Zstd-compressed stream (chunked encoding if compressed)
  4. Footer: SHA-256 checksum (32 bytes on wire)

Troubleshooting

  • "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

License

MIT LICENSE

About

Synapse is a high-performance, peer-to-peer file transfer system designed for Local Area Networks. With native clients across desktop and Android, Synapse delivers fast, frictionless file sharing across heterogeneous devices on the same network

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors