How I built a no-upload file transfer tool with AI
Every file transfer tool I used had the same shape: pick your files, wait for an upload, send a link, wait for the other person to download.
That shape makes sense when the two devices are in different cities. It makes no sense when my phone and my laptop are six inches apart on the same desk.
So I built Lan-Share, then open-sourced it. It pairs two browsers with an 8-digit code or a QR scan, and the file goes straight from one device to the other over a direct WebRTC connection, with no upload in between.
Why two devices on the same Wi-Fi do not need a cloud round trip
The tools I had each failed a different test. Chat apps re-compress photos and videos by default. AirDrop works only between Apple devices. Cloud drives upload gigabytes over your internet connection just to download them again next door. Transfer apps need the app installed on both ends.
What bothered me was not speed. It was that this one job does not need a third party at all: two devices on the same network can already talk to each other, so nothing has to leave the network.
How Lan-Share works
Open lan-share.com on both devices; it runs in any browser, with nothing to install. One device creates a room and shows an 8-digit code and a QR code, and the other types that code or scans the QR code.
The two browsers then open a direct WebRTC connection. The server does exactly one job: it helps the devices find each other and exchange connection details. After that the file moves device to device, and the server never sees or stores the file contents. The receiving side approves every file before the transfer starts.
Three clients talk to each other over one protocol: the web app, a native Android app built with Kotlin and Jetpack Compose, and a native iOS app built with SwiftUI.
What an AI assistant actually did
I want to be specific about this, because the phrase gets used too loosely. I used an AI coding assistant heavily on this project.
It was excellent at repetition with a fixed target. Once the protocol was decided, implementing it three times over, in React, then Kotlin, then SwiftUI, is work a model never tires of. Three interoperating clients exist largely because of that.
It was not good at design, and it was not good at wrong-but-plausible code. The WebRTC code it produced was clean and incomplete, missing state handling, error paths, and cleanup. Nothing failed to compile; things failed intermittently on certain networks, which is the worst kind of failure.
What made the code mergeable was process, not the model: the protocol written down first, small commits, tests around pairing-code generation and the transfer protocol, and conventional commit messages so a bisect can land on the single change that broke something.
What it is not
Lan-Share only works between devices on the same network. It uses direct WebRTC with no external relay, so one device on home Wi-Fi and another on mobile data will not connect. That is the design: relaying across networks would put your files back on a server.
Guest Wi-Fi with client isolation, and VPNs that block local traffic, will also stop the connection. A phone hotspot usually works.
It is not cloud storage, not a shared drive, and not long-term file hosting. Each session is a short-lived one-to-one transfer.
Where the source lives
Lan-Share is open source under the Apache-2.0 license. The web, Android, and iOS clients are on GitHub at github.com/open-coolqoo/lan-share, and the same link sits in the footer of every page on this site.
FAQ
What is Lan-Share?
Lan-Share is a free browser tool that transfers files directly between two devices on the same network. You pair two devices with an 8-digit code or a QR scan, and the file moves device to device over WebRTC instead of being uploaded to a server.
Was Lan-Share built with AI?
The clients were built with heavy use of an AI coding assistant. I designed the protocol; the assistant implemented it across three platforms. The parts that fail intermittently, such as WebRTC edge cases and mobile lifecycle handling, took real debugging either way.
Does Lan-Share work over the internet?
No. It is direct WebRTC with no external relay servers, so both devices must be on the same Wi-Fi, LAN, or hotspot. It will not connect across networks, which is what keeps file contents off any server.
Is Lan-Share open source?
Yes. The web, Android, and iOS clients are published under the Apache-2.0 license at github.com/open-coolqoo/lan-share.
Are my files stored on a server?
No. The server coordinates pairing and signaling only; file contents never reach it and are not stored. The receiving device approves each file before the transfer starts.