Seamless is an open-source utility for transferring files between Android, macOS, Windows, and Linux over a local network. It uses UDP for device discovery and TCP for file transmission without requiring external servers or internet access.
Pre-compiled binaries are available for all major platforms. You can download the latest version (v0.1.3) from the Releases page.
| Platform | Available Formats | Download Link |
|---|---|---|
| Android | .apk |
Download for Android |
| Windows | .exe (x64) |
Download for Windows |
| macOS | .dmg (Apple Silicon & Intel) |
Download for macOS |
| Linux | .deb, .rpm, .tar.gz (x64/amd64) |
Download for Linux |
Alternatively, you can run the application directly from source (see Development Setup below).
Note: The receiver must be in "Receive" mode before the sender begins scanning.
- Network: Connect both devices to the same Wi-Fi network.
- Receiver: Open the application and select Receive Files.
- Sender:
- Open the application and select Send Files.
- Select the file(s) to transfer.
- Click Scan Network.
- Select the target device from the list to initiate transfer.
- Local Network Only: Transfers occur strictly over LAN; no data leaves the local subnet.
- Discovery: Uses UDP broadcasting to locate devices without manual IP entry.
- Transport: Uses raw TCP sockets with 64KB buffers for data streaming.
- Cross-Platform: Python/CustomTkinter (Desktop) and Kotlin (Android) clients are fully interoperable.
If the connection fails, verify the following:
- Network Isolation: Ensure both devices are on the exact same SSID. Guest networks often isolate clients.
- VPN: Disable VPNs on both devices, as they route traffic away from the local network.
- Firewall:
- Windows: Allow the application (or
python.exeif running from source) through the firewall. - macOS: Grant permissions in System Settings > Privacy & Security > Local Network.
- Windows: Allow the application (or
Note: This app is not signed with an Apple Developer Certificate. Because of this, macOS Gatekeeper may block the app from opening the first time.
If you see "App is damaged" or "Can't be opened":
For macOS Sequoia (15) and newer:
- Open the app. If you see a "Move to Trash" or "Cancel" popup, click Done or Cancel (do not move to trash).
- Go to System Settings > Privacy & Security.
- Scroll to the bottom to the Security section.
- You will see a message: "seamless.app was blocked...". Click Open Anyway.
- Enter your password and click Open. (You only need to do this once. The app will open normally from now on.)
For older macOS versions:
- Right-click (or Control+click) the
seamless.appicon. - Select Open from the menu.
- Click Open in the popup warning.
Terminal Solution: If the above does not work, you can manually whitelist the app using your terminal:
xattr -d com.apple.quarantine /Applications/seamless.app
Note: Because the Windows .exe is not currently signed with an Extended Validation (EV) certificate, Windows Defender SmartScreen might flag it when you first run it.
- If you see a blue "Windows protected your PC" popup, click More info.
- Click Run anyway to launch the application.
- Desktop: Python 3.x, CustomTkinter, Native Sockets.
- Android: Kotlin, Coroutines (min SDK: Android 7.0).
Requires Python 3.8+.
git clone https://github.com/iman-zamani/seamless.git
cd seamless
pip install customtkinter
python seamless.py
Open the Android/ directory in Android Studio. Sync Gradle files and run on a connected device or emulator.
- Discovery: UDP Broadcast on port
5000. Payload:HERE:Username. - Transfer: TCP Stream on port
5001. - Header:
filename<SEPARATOR>filesize\n - Body: Binary file data.
This project is Licensed under the GPL (General Public License).
