Fast, Local, End-to-End Encrypted Data Synchronization between Android and Windows.
Zipline is a completely offline, privacy-first data synchronization tool that securely transfers your clipboard, files, and notifications between your Android device and your Windows PC.
It connects strictly over your Local Area Network (LAN) using WebSockets and raw TCP, bypassing the cloud entirely. With Zipline, your data never touches a third-party server.
- Privacy-First: No accounts, no cloud sync, no tracking.
- Cross-Platform: Beautiful M3-inspired dark native UI for Android and Windows.
- Encrypted Communication: All transfers are secured end-to-end with AES-256-GCM.
- Fast Local Transfers: Bypasses slow cloud uploads, utilizing your full Wi-Fi router speeds.
- Folder Synchronization: Sync directories effortlessly.
- Peer-to-Peer Networking: Simple 60-second rotating QR code pairing to connect instantly.
- π Bidirectional Clipboard Sync: Copy on your PC, paste on your phone immediately. Works seamlessly in the background on Android.
- π File & Folder Transfers: Lightning fast dual-channel architecture. WebSockets for signalling, raw TCP for heavy byte streaming.
- π Notification Mirroring: See your Android notifications directly on your Windows desktop.
- π Military-Grade Security: A unique AES session key is negotiated locally via PBKDF2 during the QR handshake.
- β‘ No Cloud Dependency: Works without an active internet connection as long as devices are on the same Wi-Fi.
Zipline flips the traditional connection paradigm. Because phones have cameras and desktops usually don't, Windows acts as the WebSocket Server while the Android device acts as the Client.
- Pairing: Windows generates a secure 32-char token and displays it as a rotating QR code. Android scans the QR code.
- Key Derivation: Both devices use PBKDF2 (100k iterations, HMAC-SHA256) to derive a shared AES-256-GCM session key.
- Data Channel: Small data (clipboard, notifications) travels over encrypted WebSocket frames (
Port 8080). - Bulk Transfer: Large files stream over a secondary raw TCP socket (
Port 8081) bypassing WebSocket overhead for speeds of 30-80 MB/s.
| Component | Technology | Description |
|---|---|---|
| Core Framework | Flutter | Cross-platform UI toolkit. |
| Networking | web_socket_channel / dart:io |
WebSockets and raw TCP Sockets. |
| Cryptography | encrypt / pointycastle |
AES-256-GCM and PBKDF2 hashing. |
| UI System | Material 3 | Fully customized dark-theme token system (ZiplineColors.brand). |
| Persistence | sqflite / shared_preferences |
Local state and history retention. |
Pre-compiled production binaries are available in the /releases folder of this repository.
- Android APK:
/releases/Zipline-v0.1.0.apk(Standard installation) - Android App Bundle:
/releases/Zipline-v0.1.0.aab(Play Store optimized) - Windows Build: Coming soon via GitHub Releases.
- Download the Latest APK.
- Install it on your Android device (you may need to allow "Install Unknown Apps").
Zipline requires the Flutter SDK ^3.10.4.
# Clone the repository
git clone https://github.com/Ravitheja1289-dot/Zipline.git
cd Zipline
# Install dependencies
flutter pub get
# Build Android APK
flutter build apk --release
# Run on connected Android device
flutter run -d android
# Run on Windows
flutter run -d windows- Open Zipline on your Windows PC. It will generate a pairing QR code. (Approve any Windows Firewall prompts for port 8080/8081).
- Open Zipline on your Android device and tap Scan.
- Point your phone's camera at the Windows QR code.
- The devices will instantly pair and establish an encrypted connection.
Zipline is built on the philosophy that local data should stay local. By removing the cloud intermediate, you eliminate the risk of server-side data breaches.
Encryption Details:
- Algorithm: AES-256-GCM with a fresh 96-bit IV for every single message.
- Key Generation: A 190-bit entropy session token (
Random.secure()) is converted into an AES key via PBKDF2. - Authentication: GCM tags natively prevent tampering and ensure authenticity.
- Privacy: We do not track telemetry, crashes, or analytics.
Cloud synchronization involves uploading your payload to a remote datacenter and downloading it on another device. This is limited by your ISP's uplink speeds (often <20 Mbps).
Zipline uses your local Wi-Fi router's maximum bandwidth. Utilizing raw TCP (SO_SNDBUF raised to 1 MiB, TCP_NODELAY=true), Zipline easily hits 30β80 MB/s on standard 5GHz networks.
Zipline/
βββ android/ # Native Android embedding & services
βββ windows/ # Native Windows embedding
βββ assets/ # Branding and design resources
βββ lib/ # Core Flutter Application
β βββ core/ # Business logic, crypto, WebSockets, sockets
β βββ ui/ # Platform-specific UI and shared M3 theme
βββ releases/ # Production build artifacts
- Bidirectional Clipboard Sync
- Android Background Native Service
- Dual-Channel File Transfer Backbone
- UI for Local File/Folder Transfers
- Notification Mirroring UI
- Secure Storage Integration (
flutter_secure_storage) - Forward Secrecy via ECDH
- mDNS/NSD Zero-Config Rediscovery
We welcome contributions! Please see our Contributing Guide and Code of Conduct. If you find a bug or have a feature idea, use our Issue Templates.
Zipline is licensed under the MIT License.
Built with passion for privacy and local-first software.
- Maintainer: Ravitheja Reddy
- GitHub: @Ravitheja1289-dot
