dropclip

dropclip

WireGuard-meshed clip sharing for a small friend group.

One person runs an always-on "hub" machine with a single forwarded UDP port. Everyone else runs the same binary as a "spoke," dials out to the hub, and gets a browser tab listing every clip anyone in the group has shared — no upload service, no Discord file-size limit, no port forwarding for anyone but the hub. Traffic between you and the rest of the group rides a real WireGuard tunnel, and nobody gets on the mesh without the hub operator handing them a key.

Downloads

Current version: 0.0.1.144+g816d47f

The binary by itself doesn't connect to anything. You also need a config.yaml from whoever runs your group's hub — it's what has your WireGuard key, the hub's address, and your bearer token baked in. Ask them for it and put it next to the executable before you run it.

PlatformFile
Windows 10/11 (64-bit) dropclip-windows-amd64.exe Runs from the system tray. First launch asks for Administrator once, to install the bundled WireGuard driver (Wintun). download
macOS (Apple Silicon) dropclip-darwin-arm64 Run from a terminal with sudo — needed to bring up the tunnel interface. download
Linux (x86_64) dropclip-linux-amd64 raw binary, run with sudo
dropclip-linux-amd64.deb installs a systemd service, no sudo needed after install
binary .deb
Linux (ARM64 — e.g. Raspberry Pi) dropclip-linux-arm64
dropclip-linux-arm64.deb
binary .deb

No installer for macOS/Windows binaries — a single executable is the whole app. Admin/root is required on every platform because dropclip brings up a real OS WireGuard interface (see below), not because of anything the app itself needs elevated access for.

Hub operator tools

Only relevant if you're standing up the hub itself — dropclip-admin is the enrollment CLI that generates a new friend's keypair and both config files. The .deb above already bundles it, so this is only for a hub run from a raw binary instead.

PlatformFile
Windows dropclip-admin-windows-amd64.exe download
macOS (Apple Silicon) dropclip-admin-darwin-arm64 download
Linux (x86_64) dropclip-admin-linux-amd64 download
Linux (ARM64) dropclip-admin-linux-arm64 download

How it works

Every machine in the mesh — hub or spoke — runs the exact same binary. What differs is one config field (role: hub or role: spoke) and whether a port is forwarded to it.

hub peer registry catalog aggregator reverse proxy :51820/udp (forwarded) WireGuard WireGuard WireGuard alice dashboard 127.0.0.1 file server (tunnel ip) outbound-only dial bob dashboard 127.0.0.1 file server (tunnel ip) outbound-only dial charlie dashboard 127.0.0.1 file server (tunnel ip) outbound-only dial
A spoke's only WireGuard peer is the hub — never another spoke. Nobody needs a static IP or an open port except the hub.

Each spoke dials the hub outbound over UDP — the same thing that works through virtually any home NAT/router with zero configuration. There is no full mesh at the WireGuard layer: a spoke has exactly one WireGuard peer, the hub, and no direct network path to any other spoke at all.

Where a video actually goes

So how does Alice watch Bob's clip? It's relayed — at the HTTP layer, not the WireGuard layer.

alice's browser localhost alice's dashboard 127.0.0.1:4267 WireGuard hub reverse proxy sees plaintext here WireGuard bob's file server tunnel ip only
Two WireGuard hops (Alice↔hub, hub↔Bob) with an HTTP proxy in between — not one end-to-end encrypted hop.

Each WireGuard leg is fully encrypted, but the hub terminates both of them and proxies the decrypted bytes at the application layer — that's what makes it a hub-and-spoke reverse proxy instead of packet-level routing. Practically: the hub operator's machine can see plaintext clip data in transit. That's a deliberate, disclosed tradeoff for a hub run by one of your close friends, not an oversight — see "Security" below.

It also means every relayed clip costs the hub two legs at once, roughly 8–15 Mbps each for a typical 1080p60 clip — on most home connections it's the hub's upload bandwidth that's the real constraint, since a couple of concurrent viewers can already saturate a typical cable/DSL upload pipe. A symmetric fiber connection doesn't have this problem.

The rest of it

Security

WireGuard itself does most of the work: every peer authenticates by keypair, and the protocol doesn't even respond to a packet from an unrecognized key — the mesh is effectively invisible to a port scanner. Nobody joins without the hub operator generating their key and adding it to the hub's config by hand.

On top of that, every request over the tunnel — file downloads, catalog fetches, the relay proxy — also requires a per-client bearer token issued at enrollment. That closes the narrower gap WireGuard alone doesn't: something on the tunnel network that isn't supposed to browse files still can't, without its own token.

Worth knowing

As covered above, the hub operator's machine can see plaintext clip bytes while relaying them between two spokes — it's a real HTTP proxy, not a blind packet forwarder. This is fine for a hub run by a friend you already trust with your Discord DMs; it's not fine if you don't trust whoever's running your group's hub. There's no end-to-end encryption on top of WireGuard yet.