TailSync is a clipboard synchronization tool designed to work over a Tailscale network. It allows you to share copied text and HTML between Android, Windows, Linux, and a central server.
- End-to-End Encryption (E2EE): All clipboard data is encrypted using AES-256 (PBKDF2HMAC) with a shared password before transmission. Your data remains private and unreadable by the server.
- Secure & Standard Connectivity: Flexible support for both Secure (WSS) and Standard (WS) WebSocket connections, accommodating various network configurations (VPN, Local, Public).
- Format Preservation: Retains authentic rich text formatting (HTML) alongside plain text, ensuring copied code, links, and styled text look exactly the same on all devices.
The server is a Python/FastAPI application.
- Create a
docker-compose.ymlfile:
services:
tailsync:
image: akshad135/tailsync:latest
container_name: tailsync
ports:
- "8000:8000"
restart: always
environment:
- PORT=8000
- PYTHONUNBUFFERED=1
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"- Start the server:
docker compose up -dThe desktop client is a background script that monitors your local clipboard. You can download it from releases
or
- Navigate to the
desktop-clients/directory. - Install dependencies:
pip install -r requirements.txt- Run the client:
python main.pyOn the first run, you will be prompted to select your Connection Type, enter your Tailscale Server IP, Port, and Encryption Password.
The Android app uses a foreground service to maintain a persistent connection for syncing.
- Install the provided APK on your device.
- Open the app -> go to the settings menu from top right
-> Select your Connection Type, enter your Server IP, Port, and Encryption Password in the Settings screen.
Note: With android 10 and above background access of clipboard is not possible, we can try to do it via ADB (Didn't try it yet):
adb shell cmd appops set com.tailsync.app READ_CLIPBOARD allow(Can also try to implement adb cmds via shizuku or use accessibility settings like Sefirah)