Repository navigation
Releases
Releases · tuxnode/LanSync
v1.5.0
Full Changelog: v1.4.0...v1.5.0
LanSync v1.4.0 — new Fyne Destktop GUI and Qt Client
LanSync
A lightweight LAN file synchronization tool written in Go, featuring a headless daemon with HTTP API, a cross-platform Fyne desktop GUI, and an optional Qt desktop client.
Features
- Dual-mode architecture — Headless CLI daemon with HTTP management API, or full-featured Fyne desktop GUI with embedded daemon
- TCP peer-to-peer sync — Direct file transfer between LAN nodes
- SHA-256 integrity verification — Ensures file consistency across nodes
- Real-time file watching — Uses inotify/kqueue for instant change detection
- Automatic LAN discovery — mDNS-based peer discovery with network interface selection for multi-homed hosts
- Manual peer connections — Connect to specific addresses as needed
- Cross-platform — macOS, Linux, Windows (including mDNS multicast on Windows)
- Full file index sync — Sends complete file index on initial connection, incremental updates thereafter
Components
| Component | Path | Description |
|---|---|---|
| CLI Daemon | cmd/lansync/ |
Headless daemon with HTTP management API |
| Fyne GUI | cmd/lansync-gui/ |
Cross-platform desktop GUI (Go/Fyne), embeds the daemon natively |
| Qt Client | clients/qt-lansync/ |
Qt Widgets desktop client implementing the full sync protocol |
Usage (CLI)
lansync daemon [--dir PATH] [--port PORT] [--peer ADDR] Start daemon
lansync connect <address:port> Connect to a peer
lansync status [--http PORT] Show daemon status
lansync peers [--http PORT] List connected peers
lansync log [--http PORT] View event logFyne Desktop GUI
The Fyne GUI (cmd/lansync-gui/) provides a three-tab interface:
- Status — Daemon state, local ID, watch directory, port, uptime, peer counts
- Peers — Discovered and connected nodes with live status indicators
- Log — Real-time event log with sync activity
Configuration options include watch directory, TCP port, network interface (for mDNS), and initial peer addresses. An auto-refresh loop keeps all views current.
go build -o lansync-gui ./cmd/lansync-gui/Build
git clone https://github.com/tuxnode/LanSync.git
cd LanSync && go build ./cmd/...Cross-Platform Build
# macOS / Linux
go build -o lansync ./cmd/lansync/
# Windows (cross-compile from macOS/Linux)
GOOS=windows GOARCH=amd64 go build -o lansync.exe ./cmd/lansync/
# Fyne GUI (requires X11 development headers on Linux)
sudo apt install libxxf86vm-dev libxrandr-dev libxi-dev libxcursor-dev libxinerama-dev
go build -o lansync-gui ./cmd/lansync-gui/Qt Desktop Client
A Qt Widgets desktop client is available under clients/qt-lansync. It implements the same JSON SyncMessage protocol as the Go daemon and supports TCP sync, SHA-256 file indexing, file watching, manual peer connection, and LAN discovery.
Build with Qt 6 or Qt 5.15:
cmake -S clients/qt-lansync -B clients/qt-lansync/build
cmake --build clients/qt-lansync/build