Protocol

September 13, 2026 · View on GitHub

Dual layers

LayerPurposeTransport
A OverlayManagement mesh (admin ↔ server ↔ edge VIP)UDP JSON :51820
B PenetrationVisitor → server mapped port → edge local serviceGateway + Hub tunnel (transitional)

Do not send visitor traffic over the overlay by default.

Layer A — Overlay mesh

Default UDP port 51820. Framing: raw UTF-8 JSON datagrams (no length prefix).

Messages

TypeRole
JOIN / JOIN_OK / JOIN_DENYJoin mesh; JOIN_OK.observed = reflexive addr seen by server
HEARTBEATLiveness; advertise preferred endpoint (reflexive if known)
PEER_LIST / ALLOC_ANNOUNCERoster + DHCP sync between equal Overlay Servers
STUN_QUERY / STUN_REPLYReflexive endpoint discovery
PUNCH / PUNCH_ACKBidirectional UDP hole punch
PUNCH_INTROServer-assisted candidate exchange
PACKET / RELAYEncapsulated IPv4 (base64); relay via Overlay Server if no direct path

Path preference: confirmed direct (PUNCH_ACK) → candidate endpoints → RELAY.

Admin and Server are equal Overlay Servers; Edge is Overlay Node. Shared secret: overlay.token.

Layer B — Penetration (Hub transitional)

Control framing (Hub / legacy control)

u32 big-endian length + UTF-8 JSON

Topology

Browser ──► p2p-admin :8088 (panel)

                 ├─ Overlay UDP :51820  ◄── mesh ──  admin / server / edge
                 ├─ Hub control :7100  ◄── dial ──  p2p-server / p2p-edge
                 └─ Hub data    :7101  ◄── dial ──  (tunnel relay legs)

Visitor ──TCP/QUIC/KCP──► p2p-server gateway (mapped ports only)
                              │ OpenPeerPath(purpose=data, local_addr)

                         Admin Hub bridges server↔edge data legs

                         Edge dials local_addr

Hub messages

HELLO, AUTH, AUTH_OK, REGISTER, REGISTER_SERVICE, HEARTBEAT, OPEN_PEER_PATH, PEER_PATH_OFFER, HUB_PEERS, MGMT_FORWARD, MGMT_FORWARD_RESULT, …

Tunnel setup: OPEN_PEER_PATH with purpose=data and local_addr, then both peers dial Hub data:

DATA {connection_id} {data_token}\n

Then raw bidirectional bytes.

Security (penetration / Hub)

  • Hub: shared hub_token
  • Edge node token for panel identity / optional hub_token fallback
  • Server management API: localhost + Hub MGMT_FORWARD