Also I'd add, allow a binary node to node Noise communication protocol (even Wireguard is fine), so I can message someone via my own node who forwards it on to their selected node on my behalf. So I don't leak IP metadata when communicating to someone on a unique node. It can be done without Noise/binary but it considerably improves scalability to do it this way. Can be simple still - super simple but scalable would be Wiregard + BSON (binary json)