see the v3 release specification
An interoperable private mesh networking standard, see the introduction for more background.
the primary discussion area is currently via Slack, anyone can join by getting an automated invite.
The full protocol suite is a composite of multiple individual specifications:
- hashname - endpoint address format (public key fingerprint)
- packets - length-object-binary formatted packets, json+binary serialization
- E3X - end-to-end encrypted exchange (wire encoding, crypto libraries)
- link - establishing and maintaining connections between two endpoints
- mesh - higher level tools to manage multiple links and do local discovery
- routing - when one endpoint assists two others to establish/maintain a link
- uri - how to encode/decode endpoint info via URIs for out-of-band bootstrapping
- transports - details (encoding, timeouts, discovery, etc) for mapping/supporting different network transports
- logo - for use to represent telehash support in apps
Each implementation provides a library API adapted to its platform or language but they all strive to offer similar functionality including handling hashnames, URIs, and packets (lob), higher level interfaces to create a mesh and links within it, and lower level tools for E3X, transports/pipes, managing keys, etc. Refer to the implementers guide for an overview of the typical methods and patterns.
Experimental implementations are being actively developed at:
hashname | link | uri | routing | streams | sockets | udp | tcp | http | tls | webrtc | bluetooth | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
node.js | ✓ | ✓ | ✍ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✍ | ✍ | |
browser js | ✓ | ✍ | ✍ | ✍ | ||||||||
c - unix | ✓ | ✓ | ✍ | ✍ | ✍ | ✍ | ✓ | ✓ | ||||
c - embedded | ✓ | ✓ | ✍ | ✍ | ✍ | ✍ | ✍ | |||||
go | ✓ | ✓ | ✓ | |||||||||
python | ✓ | ✍ | ✍ |