I should probably clarify that the last problem is something of an optimization rather than a real conceptual limitation. It is totally fine for plugins to connect to other processes on other machines that happen to also be plugins under the same architecture, to negotiate connection details, and then tell their servers to connect to each other (a necessary capability of plugins I forgot to include in the previous post). But creating a new connection between the servers incurs a bunch of overhead (connection setup, handshakes, giving credit, querying plugins). Ideally, the servers could reuse whatever connection the (gossip) plugins already had. This would mean adding some complexity to the architecture that is not inherent to the problem space itself =(