CrossSync is a Kotlin Multiplatform project for clipboard synchronization between macOS and Android devices over a local network, without cloud services.
- macOS desktop app (Compose Desktop + system tray + quick-access window).
- Android client (Compose) with QR-based pairing to Mac.
- Local clipboard history with categories.
- Support for text, formatted text (HTML/RTF), images, and files in local clipboard history.
- LAN synchronization with encryption (text and formatted text).
- Settings: desktop auto-start, history auto-cleanup, quick history size, excluded applications.
- Kotlin Multiplatform, Compose Multiplatform
- Ktor (server/client, WebSocket)
- Koin
- Room + SQLite
- Gradle Wrapper 9.1.0
desktopApp- macOS desktop client.androidApp- Android client.landing- Kobweb landing page (GitHub Pages ready).shared- shared business logic and feature/data/domain modules.docs- screenshots and supporting materials.
- macOS desktop app
- Android client (MVP)
- QR pairing Android -> Mac
- Local clipboard history and categories
- Text/formatted-text synchronization over LAN
- macOS quick-access window hotkey (
Meta + Shift + V) - Basic sync and history cleanup settings
- Image and file synchronization across devices
- Windows/Linux desktop support
- Public release artifacts (.dmg/.apk) and release docs
- JDK 17
- Android SDK installed (
local.propertieswithsdk.dir=...) - macOS for running the desktop target
- Run desktop app:
./gradlew :desktopApp:run
- Run in detached mode (Gradle process exits immediately):
./gradlew :desktopApp:runDetached
- Build DMG:
Output:
./gradlew :desktopApp:packageDmg
desktopApp/build/compose/binaries/main/dmg/.
- Debug APK:
./gradlew :androidApp:assembleDebug
- Install debug build to a connected device:
./gradlew :androidApp:installDebug
- Release APK:
./gradlew :androidApp:assembleRelease
- Release AAB:
Artifacts:
./gradlew :androidApp:bundleRelease
androidApp/build/outputs/.
The project is actively developed and currently in WIP stage.
Developed by Maxim
License: MIT
