Skip to content

Why I Built WARP: Stop Routing Local Files Through the Cloud

GitHub Repository

We've all been there. You're sitting next to a friend or colleague, hacking away on a project, and you need to send them a file. Maybe it's a screenshot, a 50MB log file, or a binary.

What do we do? We open WhatsApp, we send it on Discord, or we email it.

Think about the absurdity of that for a second. I am taking data from my machine, encrypting it, sending it to a data center thousands of miles away (maybe in Virginia or Dublin), just so it can be routed back to a device that is two feet away from me.

It’s inefficient. It’s dependent on external internet bandwidth. And frankly, for a developer, it feels wrong.

The Problem with "Just WhatsApp It"

  1. Compression: Try sending a high-res design asset or a raw video on a messaging app. It gets crushed.
  2. Internet Dependency: If the internet goes down, or if the Wi-Fi is spotty, you can't talk to the computer next to you.
  3. Privacy: Why should a third-party server see a file that is strictly between me and my roommate?
  4. The "Message to Self" Hack: We all have that lonely group chat with just ourselves in it for file transfer. It's a workaround, not a solution.

The Solution: Reclaiming the LAN

Local Area Networks (LANs) were designed exactly for this. High speed, low latency, direct connection. I wanted a tool that felt as simple as handing someone a piece of paper, but digital.

I didn't want to set up an FTP server. I didn't want to configure Windows implementation of SMB. I wanted a simple binary I could run that just works.

Enter WARP

I decided to build WARP, a lightweight P2P file transfer tool written in Go.

The goal was simple:

  1. Zero Configuration: No typing IP addresses.
  2. Raw Speed: Maximize the local network bandwidth.
  3. Cross-Platform: Run it on anything.

How It Works

Under the hood, WARP does the heavy lifting so you don't have to:

  • Auto-Discovery: Instead of asking "What's your IP?", WARP scans the local subnet (calculating CIDR blocks and firing concurrent ICMP pings) to find other active devices running the tool.
  • Custom Protocol: I replaced overhead-heavy HTTP with a custom protocol over raw TCP sockets. It sends a fixed header (metadata) followed immediately by the buffered byte stream of the file.
  • Concurrency: Using Go's Goroutines, it handles discovery and multiple transfers in parallel without breaking a sweat.

The Result

Now, when I'm working with friends, we don't depend on the cloud for local tasks. We just fire up the terminal.

bash
# Server
./warp -file ./project-build.zip

# Client (Friend's laptop)
./warp

The file flies across the room instantly. No servers, no compression, no middleman. Just pure, peer-to-peer data transfer.