COBBLE MESH / ENGINEERING NOTES
Bring the connection
back to the players.
Cobble Mesh is Cobble’s optional multiplayer layer: local identities, signed invitations, node discovery and game-stream bridges. Built on libp2p, with connection details handled by the launcher.
Current game workflows use explicit relays. Direct connections, AutoNAT and DCUtR have underlying components and remain under integration and validation.
Discovery finds peers. Relays carry streams.
The directory and game traffic take separate paths. A node directory provides bootstrap information; the launcher authenticates a persistent connection to configured seeds. An empty directory does not prevent connections through known seeds.
Scroll sideways to explore ↔
A name to recognize. A key to verify.
An identity is generated and stored locally. The display name can change; the full PeerId is tied to the key and is used for connections and signature verification. The short suffix helps distinguish names; it is not a globally unique username.
Scroll sideways to explore ↔
A signature proves that a message came from a party controlling the key, not a real name, unique person or lasting reputation. Temporary identities can be recreated, so identity alone does not prevent Sybil accounts. Switching identity changes the active session key while allowing the original identity and contacts to be retained.
A local address into a friend’s world.
The host opens Minecraft to LAN and confirms the port to create an invitation. A friend accepts it, and the launcher exposes a local TCP endpoint. Minecraft connects to that local address; the bridge targets only the game port approved by the host.
Scroll sideways to explore ↔
Invitations are credentials
An invitation carries identity, purpose and expiry. The recipient verifies its proof before opening the corresponding game connection. Share invitations with trusted recipients.
Routes come from evidence
A service connection, relay reservation and established game stream are distinct stages. Inspector uses connection identifiers, active streams and byte counts instead of inferring a game route from one direct-connection event.
One host. A shared place to play.
Current groups center on one host and support the host plus two guests. Each guest receives a local bridge address into the host’s game. This is an application-level game group, with no virtual adapter or shared LAN subnet.
Scroll sideways to explore ↔
Established transport. Deliberate interfaces.
Rust and Tokio run the background service; libp2p provides identity, connections and streams. TCP uses Noise authentication and Yamux multiplexing. Protocol names separate identification, game streams and group streams.
| Purpose | Protocol / domain | Scope |
|---|---|---|
| Identify | /cobblemesh/identify/1 | Peer identity and connection information |
| Game stream | /cobblemesh/game-stream/0.1.0 | Invitation-scoped game bridge |
| Group stream | /cobblemesh/group-stream/0.1.0/{peer} | Per-peer group bridge |
| Signature domain | cobble-mesh/user-profile/v1 | Domain separation for profile signatures |
MeshNetworkSnapshot
The native service emits snapshots through mesh-network-changed. Probe results and actual session evidence are recorded separately.
phase · generation · attempt · retry_at services · checks · last_error session_route · session_evidence peer_scope · selected_connection bytes_sent · bytes_received active_streams · completed_streams
Plugin integration follows host permission boundaries: game context, scoped actions and resource handles for real consumers. A general Mesh plugin API still needs to evolve with those consumers; the current native snapshot is not a published stable SDK.
Every “online” needs evidence.
Online mode starts background connections without blocking the home screen. The first round makes up to three attempts, with a ten-second budget each, two- and five-second retry gaps, and jitter. Later retries back off. Turning Mesh off cancels active connections and retries.
Scroll sideways to explore ↔
- IntegratedLocal signed identities, bootstrap directory, persistent authenticated connections, explicit relay, game bridges, three-person groups and Inspector.
- Under validationEnd-to-end real Minecraft group sessions, additional network topologies and reconnect behavior. These diagrams are architecture, not live service status.
- Integration workAutoNAT address verification, a direct observer endpoint, DCUtR and automatic route selection in game workflows. Public double-NAT hole punching still needs an independent test topology.
- Future directionsExtend SDK and node capability discovery around real applications. VLANs, group chat and reputation networks are outside the current delivery.