Cross-platform clipboard synchronization between Windows, macOS, and Linux over LAN.
Copy files or text on one machine, instantly paste on the other.
Features:
- Secure PIN pairing with AES-256-GCM encryption
- Lazy file transfer (instant copy, download on paste)
- Text, files, and images
- No cloud. No internet. LAN only.
macOS (Homebrew):
brew install nasiridrishi/tap/yankWindows (winget):
winget install nasiridrishi.YankLinux (apt - Ubuntu/Debian):
curl -fsSL https://nasiridrishi.github.io/yank/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/yank.gpg
echo "deb [signed-by=/usr/share/keyrings/yank.gpg] https://nasiridrishi.github.io/yank yank main" | sudo tee /etc/apt/sources.list.d/yank.list
sudo apt update && sudo apt install yank-clipboardOn machine A:
yank pairShows a 6-digit PIN and your IP.
On machine B:
yank join 192.168.1.x 123456Replace with actual IP and PIN.
That's it. The service starts automatically and survives reboots. Copy on one machine, paste on the other.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Copy files | Ctrl+C | Cmd+C | Ctrl+C |
| Copy text | Ctrl+C | Cmd+C | Ctrl+C |
| Paste | Ctrl+V | Cmd+V | Ctrl+V |
Files over 10MB use lazy transfer:
- Copy - Only metadata sent (instant, even for 100GB)
- Paste - File downloads on-demand
# Pairing (one-time)
yank pair # Show PIN for pairing (auto-starts service)
yank join <IP> <PIN> # Pair with another device (auto-starts service)
yank unpair # Remove pairing and uninstall service
# Service management
yank status # Show service and pairing status
yank stop # Stop the service
yank start # Start the service
yank logs # View last 50 log lines
yank logs -f # Follow logs in real-time
# Configuration
yank config # Show configuration
yank config --set KEY VAL # Change setting
yank --help # Show all optionsSettings are in ~/.yank/config.json (created on first run):
{
"sync_files": true,
"sync_text": true,
"sync_images": true,
"max_file_size_mb": 100,
"max_total_size_mb": 500
}Create .syncignore in your home directory:
*.log
*.tmp
node_modules/
.git/
Allow port 9876 TCP:
Windows (Admin PowerShell):
netsh advfirewall firewall add rule name="Yank" dir=in action=allow protocol=tcp localport=9876Linux:
sudo ufw allow 9876/tcpmacOS: Usually no action needed.
- PIN Pairing: 6-digit PIN prevents unauthorized connections
- AES-256-GCM: All data encrypted
- LAN Only: Never touches the internet
For developers who want to build the executable:
# Clone and setup
git clone https://github.com/nasiridrishi/yank.git
cd yank
python -m venv venv
source venv/bin/activate # or .\venv\Scripts\activate on Windows
pip install -e ".[dev,macos]" # or [dev,windows] or [dev,linux]
# Build standalone executable
./build.sh # macOS/Linux
.\build.ps1 # Windows
# Output: dist/yank (or dist/yank.exe)┌─────────────────────┐ ┌─────────────────────┐
│ Windows Client │ │ Mac Client │
│ │ │ │
│ ┌───────────────┐ │ │ ┌───────────────┐ │
│ │ Clipboard │ │ │ │ Clipboard │ │
│ │ Monitor │ │ │ │ Monitor │ │
│ └───────┬───────┘ │ │ └───────┬───────┘ │
│ │ │ │ │ │
│ ▼ │ Encrypted TCP │ ▼ │
│ ┌───────────────┐ │ (AES-256-GCM) │ ┌───────────────┐ │
│ │ Sync Agent │◄─┼────────────────────┼─►│ Sync Agent │ │
│ └───────────────┘ │ Port 9876 │ └───────────────┘ │
│ │ │ │
└─────────────────────┘ └─────────────────────┘