Bluetooth could work! Just need to implement the Transport interface.
Peer discovery is not implemented at the moment but could easily be added (and will be soon). Here's how: any controller can resolve EstablishLinkWithPeer. A peer discovery controller could compare the list of discovered peers with the list of desired connections and initiate connections via UDP when there's a match.
Signaling is managed by the Link implementation. For UDP we use quic-go.
This stack could be the basis of a software to share things no matter your connectivity situation.
You fire it up, it scans things around. Local network? It uses that. Not local but internet, it uses that. Nothing but BT, you can still detect people around, chat and exchange files.
People could be identified by public keys and that's it, not need for an account, signaling done by zeroconf/bt-scanning/bittorent.
Basically a solution to the current chat nightmare.
But the amount of work is overwhelming, even with this.
There is a design for routing in the repo (and tor-like circuits). However it is not implemented yet. I'd love to grow the community and have more people collaborating on this.
Does it include discovering peers on a local network or around you?
Do it handle signaling?