SyncLan is a LAN-based instant messaging and file transfer application. It combines chatting and file sharing into a single interface. Once devices are discovered on the same Wi-Fi or local network, you can exchange text messages, images, and files as naturally as chatting. The desktop application runs the local service, while browsers can directly access and use it without installation.
Perfect for quickly sharing files and messages across multiple devices in offices, dormitories, home networks, air-gapped environments, or anywhere you don't want to rely on cloud storage.
English | 简体中文
- 💬 Lark-inspired IM experience – The conversation list and chat interface are heavily inspired by Lark (Feishu), providing a familiar, polished, and intuitive messaging experience while dramatically lowering the learning curve for LAN file sharing.
- 🖼️ Pixel-perfect rich text editor – Supports rich text formatting, inline image previews, and incremental message history loading. The editing experience is carefully refined to match the smoothness of modern IM applications like Lark.
- 📁 LAN file transfer – Uploaded files are stored in a configurable local resource directory and shared with other devices through LAN URLs.
- 🖥️ Desktop + Browser – Built with Tauri for cross-platform desktop support while simultaneously serving a built-in web application accessible from any browser.
- 🔎 Device discovery – Automatically discover devices on the same network and start conversations instantly.
- 🔐 Optional HTTPS – Export a self-signed certificate and enable HTTPS after trusting it in your operating system.
- ⚙️ Highly configurable – Supports language, theme, launch at login, start minimized, automatic update checks, server port, upload directory, automatic cleanup, and more.
- 🧩 Built-in API documentation – Includes Swagger UI for API debugging and integration.
The current SyncLan UI is mainly built with shadcn/ui, following its component style and design principles.
The project is still continuously improving its UI details. If you have better UI design suggestions, interaction improvements, or complete design proposals (Figma / Sketch / images, etc.), feel free to submit feedback or contribute design ideas. Together, we can make SyncLan's user experience even better.
SyncLan adopts a "desktop-hosted services with browser-based clients" architecture, which differs from applications like LocalSend that require installation on every device.
- A desktop instance is required. The SyncLan desktop application acts as the LAN hub. When launched, it starts both the IM service (Socket.IO) and the built-in web server.
- Browser access for other devices. As long as one computer is running SyncLan Desktop, any other device on the same LAN can join instantly by opening the host's IP address in a browser—no installation required.
- About mobile devices (iOS / Android). SyncLan relies on long-running background services that continuously provide IM and web server functionality. This architecture is not well suited to mobile operating systems due to battery usage and background execution restrictions. Therefore, native mobile applications are not planned, and mobile devices should simply access the desktop service through a browser.
- Launch SyncLan Desktop on the host computer.
- Ensure all devices are connected to the same LAN or Wi-Fi, and the firewall allows SyncLan's configured port.
- Desktop clients: Open Device Discovery, select a device, and start chatting.
- Browser-only devices or mobile devices: Open the desktop server's LAN address directly in your browser.
The default local service runs on port 53317.
- Web UI:
http://127.0.0.1:53317 - API Documentation:
http://127.0.0.1:53317/api/docs - Socket.IO:
ws://127.0.0.1:53317/socket
Both the server port and upload directory can be customized in Settings.
If you simply want to use SyncLan, download the latest installer from GitHub Releases.
- Node.js (latest LTS recommended)
- pnpm
- Rust (the repository includes
rust-toolchain.toml) - Tauri 2 system dependencies
The installation process differs slightly across operating systems. Please refer to the official Tauri documentation to install the required WebView runtime and toolchain.
pnpm installpnpm devStarts the Tauri desktop application in development mode.
pnpm buildThe generated packages are located under:
src-tauri/target/release/bundle/
pnpm web:buildpnpm ui:build| Setting | Description |
|---|---|
| Language | Switch between Simplified Chinese and English. |
| Appearance | System, Light, or Dark theme. |
| Launch at Login | Start SyncLan automatically after login. |
| Start Minimized | Launch minimized to the system tray/background. |
| HTTP Server Port | HTTP service port. Default: 53317. |
| Enable HTTPS | Enable HTTPS after trusting the exported certificate. |
| Export Certificate | Export the self-signed SyncLan certificate. |
| Upload Directory | Directory used to store uploaded files. |
| Auto File Cleanup | Automatically delete uploaded files after a configurable period. |
| Auto Check Update | Automatically check for application updates. |
When the desktop application is running, it serves the web interface automatically.
Devices on the same LAN can access it using the desktop machine's IP address, for example:
http://192.168.1.10:53317
If you cannot connect:
- Ensure both devices are on the same LAN or Wi-Fi.
- Make sure the desktop application is running.
- Check whether the configured port is blocked by the firewall, antivirus software, or router isolation.
- If HTTPS is enabled, ensure the SyncLan certificate has been trusted.
SyncLan uses Axum for its HTTP API and Socket.IO for real-time communication.
Once the desktop application is running, open:
http://127.0.0.1:53317/api/docs
to view the OpenAPI / Swagger documentation.
Main API groups:
Synclan– Application authentication and common APIs.Device– Device information and discovery.Upload– File uploads.Message– Messaging and chat history.
.
├── src/ # React frontend
│ ├── components/ # Shared UI, chat components, device discovery
│ ├── pages/ # Welcome, Chat, Settings, Profile, etc.
│ ├── lib/ # API, utilities, attachments, types
│ └── locales/ # Localization resources
├── src-tauri/ # Tauri / Rust backend
│ ├── src/server/ # HTTP API, Socket.IO, workers
│ ├── src/config/ # Configuration and encrypted fields
│ ├── src/core/ # Tray, logging, windows, startup
│ └── resources/ # Bundled web assets and database migrations
├── scripts/ # Release and helper scripts
├── package.json
└── Cargo.toml
| 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. |
- Ensure all devices are connected to the same LAN.
- Temporarily disable VPNs, proxies, or guest network isolation.
- Verify that the system firewall allows SyncLan to use the configured port.
- Restart the local service after changing the server port.
- First verify that
http://127.0.0.1:53317works on the host machine. - Use the host machine's LAN IP instead of
127.0.0.1on other devices. - Ensure the HTTP Server Port matches the configured value.
SyncLan uses a self-signed certificate.
Export the certificate from Settings, trust it in your operating system or browser, restart SyncLan, and try again.
This project is licensed under the MIT License.











