LocalSend Deployment and Usage Guide
1. Prerequisites
Runtime & Tools:
- Flutter SDK: LocalSend is built with Flutter (Dart). You need the Flutter SDK installed and configured on your development machine.
- Platform-specific SDKs:
- Android: Android SDK and
adb(for building/running on Android). - iOS/macOS: Xcode (macOS only, for building iOS/macOS apps).
- Windows: Visual Studio with the "Desktop development with C++" workload.
- Linux: Common development libraries (e.g.,
clang,cmake,gtk3,liblzma,ninja-build,pkg-config).
- Android: Android SDK and
- Git: To clone the repository.
Accounts (for official store distribution only):
- Google Play Console (for Android).
- Apple Developer Account (for iOS/macOS App Store).
- Microsoft Partner Center (for Microsoft Store).
- Accounts for platform-specific package repositories (e.g., Snapcraft, Flathub) are optional for personal builds.
2. Installation
Download Pre-built Application (Recommended for Users)
The easiest way to use LocalSend is to install the official release from a trusted source. The app does not have auto-update, so using a package manager or app store is advised.
Select your platform and follow the link:
| Platform | Recommended Source(s) |
|---|---|
| Windows | Winget, Scoop, Chocolatey, or download the latest EXE/Portable ZIP. |
| macOS | App Store, Homebrew Cask, or download the latest DMG. |
| Linux | Flathub, Snapcraft, or download the latest AppImage/TAR/DEB. For Arch Linux, use the AUR (localsend-bin). |
| Android | Google Play Store or F-Droid. You can also sideload the latest APK. |
| iOS | App Store. |
| Fire OS | Amazon Appstore. |
Clone Source Code (For Development/Building)
To build from source, clone the repository and fetch its dependencies.
git clone https://github.com/localsend/localsend.git
cd localsend
flutter pub get
3. Configuration
LocalSend is designed for simplicity and requires minimal configuration. Settings are managed within the app's GUI.
Key In-App Settings:
- Device Name: Customize your device's visible name on the local network.
- Theme: Choose between Light, Dark, or System theme.
- Save To: Set the default directory for received files.
- Network Options: The app automatically discovers devices via multicast DNS (mDNS). Ensure all devices are on the same local network segment (same subnet/VLAN) and that firewalls allow traffic on the required ports.
No external API keys, environment variables, or configuration files are required for basic operation.
4. Build & Run
Ensure your Flutter environment is correctly set up (flutter doctor should show no major issues for your target platform).
For Development / Local Running
Run the app in debug mode on your connected device or emulator.
# For the default connected device (mobile)
flutter run
# To run on a specific device type, use the -d flag
# flutter run -d chrome # for web (note: web is not a primary target)
# flutter run -d windows
# flutter run -d linux
Building for Production / Distribution
Follow the platform-specific instructions to produce release builds.
Android:
flutter build apk --split-per-abi
# Outputs: build/app/outputs/flutter-apk/app-<abi>.apk
# For App Bundle (for Play Store):
# flutter build appbundle
iOS & macOS: Requires a Mac with Xcode.
# iOS
flutter build ios
# Open the generated .xcworkspace in Xcode to archive and distribute.
# macOS
flutter build macos
# Outputs: build/macos/Build/Products/Release/LocalSend.app
Windows:
flutter build windows
# Outputs: build/windows/runner/Release/ with .exe and required DLLs.
Linux:
flutter build linux
# Outputs: build/linux/<build mode>/bundle/ with executable and libraries.
5. Deployment
LocalSend is a client application, so "deployment" refers to distributing the built binaries to end-users.
Recommended Distribution Channels:
- App Stores (Easiest): Submit your built binaries (
.aabfor Play Store,.ipafor App Store,.msix/.appxfor Microsoft Store) through the respective developer portals. This handles updates and trust for users. - Package Managers: For Linux/macOS/Windows, consider submitting your package to community repositories like Homebrew, Winget, Scoop, Chocolatey, Flathub, or Snapcraft. This provides a reliable update mechanism.
- Direct Downloads: You can host the latest release binaries (
.exe,.dmg,.AppImage,.apk) on your GitHub Releases page or website for users to download manually.
Deployment Platforms for the App Itself: Given the cross-platform Flutter/Dart stack, the app itself can be deployed to:
- Mobile: iOS, Android
- Desktop: Windows, macOS, Linux
- (Note: Web is not a primary target for this file-sharing app.)
6. Troubleshooting
Devices Cannot See Each Other:
- Network Configuration: Ensure all devices are connected to the same Wi-Fi network or subnet. Corporate networks or guest networks with client isolation will block discovery.
- Firewall Rules: LocalSend uses mDNS (port 5353/UDP) for discovery and a random HTTPS port (typically in the 53317-53337 range) for file transfer. Ensure your firewall allows these protocols and ports on the local network.
- Windows: Check Windows Defender Firewall. You may need to allow "LocalSend" through the firewall when prompted.
- Linux: Configure
ufworfirewalldto allow mDNS and the application port. - macOS: Ensure the application is allowed in System Settings > Privacy & Security > Firewall.
- Multicast DNS (mDNS): Verify mDNS is working. You can try using
ping localhost.localoravahi-browse -aon Linux/macOS to test.
App Fails to Build from Source:
- Run
flutter doctor -vand address all issues listed. - Ensure you have the correct platform-specific dependencies installed (e.g., Visual Studio workloads, Xcode command line tools).
- Clean and rebuild:
flutter clean flutter pub get flutter run
File Transfer Fails or is Slow:
- Check that no VPN is active, as it might route local traffic externally.
- Ensure you have sufficient storage space on the receiving device.
- Large files may take time; the app shows progress.
General Tips:
- Restart the LocalSend app on all devices.
- Restart your router/switch if network issues are suspected.
- For the latest troubleshooting, check the project's GitHub Issues.