File sharing between the devices on one Wi-Fi network. One program runs on a computer, and a phone joins by scanning a QR code: nothing to install, no accounts, and nothing leaves the network.
I edit videos of my motorcycle rides on a laptop and watch them on my phone. Without a Mac there is no AirDrop, so every video went across on a USB cable. Consigna is one Go binary with the interface built in: start it on the laptop, scan the code with the phone and drop the file in. Any device with a browser can join, on purpose only over the local network. There is no internet, no cloud and no account, files expire after 24 hours, and everything is deleted when it stops. I built it in about a week, with Claude helping on the networking and the design. The CRT look is my idea, taken from Cyberpunk's interface.
Uploads speak tus, a resumable upload protocol. I wrote the server myself because the standard one brings in cloud-storage SDKs. If a phone locks or the Wi-Fi drops, the upload pauses and resumes where it stopped. A reconnecting phone takes over from its own dead request, and a finished upload is remembered, so a phone that missed the last reply doesn't start again. Each upload reserves its full size up front so two at once can't overfill the tray. Before the release I closed a hole where a length near the integer limit made that sum overflow and slip past the cap.
A whole-request timeout would cut off a large video halfway, so there isn't one. Instead every read and write pushes a 60-second idle deadline forward: a stalled connection is dropped, and a slow, healthy one keeps going. Downloads support byte ranges, and several files download as a ZIP that streams as it is read, without waiting for an archive to be built.
Live updates go out over Server-Sent Events and always carry the whole state rather than what changed. A phone that slept through ten changes is correct again after one message, with no replay logic. Each listener has room for one pending wake-up, so a burst of changes becomes one update and a slow phone never holds up the server.
A guest joins with a six-character code, written without characters that look alike, and gets a token in a cookie that the server stores only as a hash. Failed joins are rate-limited. The host is recognised by being on the same machine, so the server checks the Host header against DNS rebinding and the request's origin against forgery, and downloads open sandboxed. Before the release I closed a hole where any website open on the laptop could create devices through an image tag pointing at it.
Released as v0.1.0 in October 2026, open source under MIT. I use it every day to get ride videos from the laptop to my phone. HTTPS and use outside the home network are designed but deliberately not built: staying on a network I trust is what keeps it simple to secure.
github.com/EymanEP/consigna