An Instant-Messaging-Style LAN File Transfer Tool
Bringing a "Lark/Feishu-grade IM experience" to local network file sharing. Anytime, anywhere, ready out of the box.
English | 简体中文
SyncLan is an instant-messaging-style file transfer tool built for local area networks (LANs). It breaks away from the cold, drag-and-drop workflow of traditional transfer tools by seamlessly integrating chat and file sharing into a single unified interface. Once devices on the same Wi-Fi or LAN are automatically discovered, you can exchange plain text, rich text, images, and files just as you would in a modern IM app.
The desktop client acts as a "communication hub" running locally, allowing other LAN devices (smartphones, tablets, or other PCs) to connect instantly via any web browser without installing any apps.
💡 Ideal For: Cross-device office collaboration, dorm/home network sharing, environments without public internet access, or any scenario where you want to avoid third-party cloud drives and chat apps for temporary file transfers.
- 💬 Lark-grade IM Experience: Closely models the conversation list and chat layout of Lark/Feishu, featuring meticulous visual interaction details for zero learning curve.
- 🖼️ Pixel-Perfect Rich Text Editor: Supports formatted text editing, inline live previews for images and attachments, and infinite scroll for message history, giving it the smooth feel of a mature IM application.
- 📁 High-Speed LAN Transfers: Direct file transfers saved straight to your designated local folder, leveraging full local network bandwidth without public speed caps.
- 🖥️ Desktop Host + Zero-Install Web Client: Built on Tauri 2 as a lightweight, cross-platform desktop app with a built-in web server. Mobile phones and other PCs can join instantly by scanning a QR code or entering the IP address in a browser.
- 🔎 Automatic Device Discovery: Uses LAN broadcasts to discover online devices automatically and start messaging with a single click.
- 🔐 HTTPS Support: Built-in self-signed certificate export functionality, enabling full HTTPS encryption once trusted.
- ⚙️ Highly Customizable: Supports multi-language switching (English/Chinese), light/dark themes, auto-start on boot, silent tray launch, auto-cleanup of expired files, and more.
- 🧩 Open API Documentation: Includes built-in Swagger UI (
/api/docs) for easy secondary development and automated integrations.
SyncLan's frontend UI is primarily built with shadcn/ui, following modern Web design standards.
🤝 Contributions Welcome: We are constantly refining the UI/UX details. If you have design suggestions, interaction improvements, or Figma/Sketch files to share, feel free to submit an issue or open a pull request!
SyncLan uses a "Desktop Hub with Zero-Install Mobile/Web Access" design philosophy:
[ Desktop Client (Tauri) ] ---- Port Listener (Default 53317) ---- Socket.IO / Web Server
| |
+---> Device Discovery (Finds other SyncLan desktop clients) |
| |
+---> Other LAN Devices (Phones / Tablets / PCs) ----> [ Web Browser IP:53317 ]
- Desktop Host as Communication Hub: Launching the desktop app automatically starts the backend IM service (Axum + Socket.IO) alongside a static web server.
- Zero-Install Multi-Device Access: Other devices on the same network don't need any app installed. Simply open a browser, navigate to the desktop host's local IP and port, and begin chatting or transferring files right away.
- Note on Native Mobile Apps: Real-time LAN communication requires persistent long-lived connections (Socket.IO), which drains battery and suffers from strict background termination on iOS and Android. As a result, we currently have no plans for native mobile apps; please use mobile browsers for instant access.
Head to GitHub Releases and download the appropriate installer for your platform (macOS / Windows / Linux).
Once started, the application listens on port 53317 by default:
- Local Web App:
http://127.0.0.1:53317(Access from local PC browser) - LAN Web App:
http://<LAN-IP>:53317(Access from phone or other devices) - API Documentation:
http://127.0.0.1:53317/api/docs(Swagger UI for developers) - WebSocket Node:
ws://127.0.0.1:53317/socket(Socket.IO real-time communication endpoint)
If you wish to contribute or build SyncLan from source:
- Node.js: LTS version (v18+ recommended)
- pnpm: Package manager
- Rust: Latest Stable release (includes
rust-toolchain.toml) - Tauri 2 Dependencies: Follow the official Tauri Prerequisites Guide for your OS.
-
Clone the repository and install dependencies:
git clone https://github.com/1111mp/synclan.git cd synclan pnpm install -
Run the desktop app in development mode:
pnpm dev
-
Build for production:
pnpm build
(Output binaries will be placed under target/release/bundle/)
| Command | Description |
|---|---|
pnpm dev |
Start the Tauri development environment. |
pnpm build |
Build desktop installers. |
pnpm app:dev |
Build the web application and preview the desktop UI. |
pnpm app:build |
Build both the web application and desktop UI. |
pnpm web:dev |
Start the browser development server. |
pnpm web:build |
Build browser assets. |
pnpm ui:dev |
Start the desktop UI development server. |
pnpm ui:build |
Type-check and build the desktop UI. |
pnpm typecheck |
Run TypeScript type checking. |
pnpm oxlint |
Run frontend linting. |
pnpm format:check |
Check frontend formatting. |
pnpm test |
Run Vitest tests. |
cargo test -p synclan |
Run Rust tests. |
cargo fmt --all -- --check |
Check Rust formatting. |
cargo clippy -p synclan --all-targets -- -D warnings |
Run Rust Clippy. |
.
├── src/ # React frontend source (Desktop UI & Web client)
│ ├── components/ # Base UI components, message items, device list, etc.
│ ├── pages/ # View pages (Chat, Discovery, Settings, etc.)
│ ├── lib/ # API wrappers, utility functions, type definitions
│ └── locales/ # i18n internationalization setup
├── src-tauri/ # Tauri / Rust backend source
│ ├── src/server/ # Axum HTTP API, Socket.IO handlers, background workers
│ ├── src/config/ # App configurations & credentials management
│ ├── src/core/ # System tray, logging, window controls, auto-start
│ └── resources/ # Static assets, DB migration scripts
├── scripts/ # CI/CD and build scripts
├── package.json # Node dependencies and scripts
└── Cargo.toml # Rust workspace configuration
- Ensure all devices are connected to the exact same Wi-Fi / LAN subnet.
- Check and temporarily disable VPNs, global proxies, or router AP Isolation (Guest Network Isolation).
- Check Windows Firewall or macOS Network Privacy settings to ensure SyncLan is allowed to listen on the configured port.
- Verify you are entering the host computer's LAN IP (e.g.,
192.168.1.X), not127.0.0.1. - Ensure the desktop client is running and the port isn't blocked by local firewalls or occupied by another app.
- SyncLan uses locally generated self-signed certificates. In the desktop settings, click "Export Certificate" and install/trust it in your browser or operating system's Trusted Root Certification Authorities store.
This project is licensed under the MIT License.









