# thinking-together


09/07/2023, 10:29 AM
Hello FoC Community 🙂 I have something in mind which I don't know exactly how difficult it i or even possible so I'm going to ask for your council here. I have some files 2-4 GB and I want to share those with a friend. What would be the best way to do so? Assuming that I don't want to use dropbox or google drive. I vaguely remember that there was a programm called wormwhole or somethign which did this using python. I would kike to have something in go which has nice cross OS binaries. This looks nice but I would want to have a simple exchange application wher eI can use it instead of a lib to be implemented. Another question - fundamental in nature- if I join a P2P net what do I need to exchange with my peer - out of band such that we can exchange files through the P2P network. ie.e. how do we find each other? Thank you for your thoughts and ideas.

David Alan Hjelle

09/07/2023, 12:38 PM
I've used for this sort of thing. The FAQ says it is only P2P if the file is > 5 GB, though, so if that is a hard requirement, it's a no-go.
(I know this isn't what you had in mind, but never underestimate the bandwidth of a homing pigeon.)

Jeffrey Fisher

09/07/2023, 1:06 PM
The Python program you're thinking of is Magic Wormhole ( There is also a GUI that it is compatible with ( Apparently there is a cross platform GUI using a Go implementation on the backend

Jack Rusher

09/07/2023, 1:43 PM
memory stick

Mariano Guerra

09/07/2023, 1:59 PM
webrtc p2p file sharing? the site does the p2p connection and then the transfer is p2p,
a quick search gave me this two
here's the code of the second
you can host it in a static hosting AFAIR, the only extra thing you need is a STUN server to establish the p2p connection, there are public ones you can use or you can host your own too:

Konrad Hinsen

09/09/2023, 7:46 AM
The suggestions so far have assumed a one-time transfer. If you want to share files on a regular basis, Syncthing ( is a good choice. I use it for sharing data across devices (Linux, macOS, Android) and with family members. Its unit of data is a shared directory, which is identified by a UUID. Anyone who has the UUID can access the shared data (by default, you can configure more restrictive rules). Data exchange is P2P, but machines find each other (again, by default) via a public relay. With the standard configuration, you create a directory, add it to Syncthing, and then send the UUID to the people who you want to share with.