Skip to content

Repository files navigation

ClipSync

ClipSync Logo

LAN clipboard synchronization for Windows — encrypted, instant, zero-config.

Copy on one machine, paste on another. No cloud, no accounts, no internet required.


Features

  • Instant clipboard sync — Sub-50ms latency over LAN
  • AES-256-GCM encrypted transport — All traffic encrypted using a shared secret
  • Auto-discovery via UDP broadcast — Peers find each other automatically
  • System tray integration — Runs silently in the background
  • Zero workflow changes — Ctrl+C and Ctrl+V work exactly as before
  • Self-contained installer — No .NET or dependencies needed
  • Dark aesthetic UI — Modern dark theme interface
  • Challenge-response authentication — HMAC-SHA256 mutual auth
  • Automatic reconnection — Exponential backoff with infinite retry
  • Heartbeat monitoring — Detects dead connections proactively

Download

Download the latest .msi installer from the Releases page. Just install and run — no additional downloads or setup required.

How It Works

Windows Clipboard → ClipboardMonitor → SyncEngine → AES-256 Encrypt → TCP → Peer
  1. Install ClipSync on both machines (same LAN)
  2. Set the same shared secret on both
  3. Peers auto-discover each other via UDP broadcast
  4. Copy text on one machine → instantly available on the other

Architecture

Component Responsibility
ClipboardMonitor Win32 WM_CLIPBOARDUPDATE listener
SyncEngine Orchestration, dedup, loop prevention, auth
TransportLayer Persistent TCP + AES-256-GCM + length-prefixed framing
DiscoveryService UDP broadcast auto-discovery
AuthenticationService HMAC-SHA256 challenge-response

Tech Stack

  • .NET 9 (Windows, self-contained)
  • WPF (Dark theme)
  • Raw TCP sockets
  • AES-256-GCM encryption
  • Serilog structured logging
  • xUnit + FluentAssertions (127 tests)
  • WiX Toolset (MSI installer)

Building from Source

Prerequisites

  • Windows 10/11
  • .NET 9 SDK

Build

dotnet build src/ClipSync.sln

Run

dotnet run --project src/ClipSync.App

Test

dotnet test src/ClipSync.sln

Publish (self-contained)

dotnet publish src/ClipSync.App -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

Configuration

Settings stored at %LOCALAPPDATA%\ClipSync\settings.json:

Setting Default Description
listenPort 5000 TCP port for clipboard sync
discoveryPort 5001 UDP port for auto-discovery
sharedSecret (auto-generated) Key for encryption & auth
autoConnect true Auto-connect to discovered peers
startWithWindows false Launch at Windows startup
startMinimized false Start minimized to tray

Both peers must use the same sharedSecret to connect.

Security

  • AES-256-GCM encryption on all clipboard data
  • Key derived via PBKDF2-SHA256 (100,000 iterations)
  • HMAC-SHA256 challenge-response authentication
  • Constant-time comparison (prevents timing attacks)
  • Unique random nonce per message
  • GCM auth tag prevents tampering

Project Structure

src/
├── ClipSync.Core/          # Domain models, interfaces, crypto, serialization
├── ClipSync.App/           # WPF application, services, dark UI
├── ClipSync.Tests/         # 127 unit, integration & performance tests
└── installer/              # WiX MSI installer definition

License

MIT License — Copyright © 2024-2026 Manas Choksi

Author

Developed by Manas Choksi

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages