Skip to content

DHT Networking

Pelagora uses the Hyperswarm DHT for decentralized peer discovery and communication.

How it works

  1. Topic-based discovery — Nodes join a shared topic derived from the network key
  2. Direct connections — Once discovered, peers establish direct encrypted streams
  3. Message passing — Nodes exchange PeerMessage objects over these streams

PeerMessage format

All DHT messages follow the PeerMessage type from @pelagora/pim-protocol:

typescript
interface PeerMessage {
  type: string    // Message type identifier
  beaconId: string // Sender's node ID
  payload: any     // Message-specific data
}

Built-in message types

TypeDescription
inventoryShare full inventory with a peer
searchSearch request broadcast to peers
search-responseResults returned for a search
offerMake an offer on a peer's item

Skill message namespacing

Skills can register custom message types using the namespace pattern:

skill:{skill-id}:{message-type}

For example, the reverse auction skill uses skill:reverse-auction:bid.

Enabling DHT

DHT is enabled by default. To disable it:

js
const app = createApp({
  enableDht: false,
})

Or set the environment variable:

bash
ENABLE_DHT=false

Released under the MIT License.