Join the swarm for a given hypercore or hyperdrive feed.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitignore Initial commit May 23, 2016
.travis.yml add node 7 to deps Nov 28, 2016 add collaborators Jun 7, 2016
example.js added safe-buffer and refactored a callback to make standardJS happy Jul 21, 2017
index.js Removed unused variable. Jun 29, 2018
package.json 8.0.0 Jun 30, 2018 Remove incorrect info (#16) Jul 26, 2018
test.js Updated to latest upstream and cleaned up tests. Jun 29, 2018


build status

Join the p2p swarm for hypercore, hyperdrive, and hyperdb feeds. Uses discovery-swarm under the hood.

npm install hyperdiscovery


Run the following code in two different places and they will replicate the contents of the given ARCHIVE_KEY.

var hyperdrive = require('hyperdrive')
var swarm = require('hyperdiscovery')

var archive = hyperdrive('./database', 'ARCHIVE_KEY')
var sw = swarm(archive)
sw.on('connection', function (peer, type) {
  console.log('got', peer, type) 
  console.log('connected to', sw.connections.length, 'peers')
  peer.on('close', function () {
    console.log('peer disconnected')

Will use discovery-swarm to attempt to connect peers. Uses datland-swarm-defaults for peer introduction defaults on the server side, which can be overwritten (see below).

The module can also create and join a swarm for a hypercore feed:

var hypercore = require('hypercore')
var swarm = require('hyperdiscovery')

var feed = hypercore('/feed')
var sw = swarm(feed)

The module can also create and join a swarm for a hyperdb feed:

var hyperdb = require('hyperdb')
var swarm = require('hyperdiscovery')

var db = hyperdb('/feed', 'ARCHIVE_KEY')
db.on('ready', function() {
  var sw = swarm(db)

A hyperdb database must be ready before attempting to connect to the swarm.


var sw = swarm(archive, opts)

Join the p2p swarm for the given feed. The return object, sw, is an event emitter that will emit a peer event with the peer information when a peer is found.


Get the list of currently active connections.


Exit the swarm

  • stream: function, replication stream for connection. Default is archive.replicate({live, upload, download}).
  • upload: bool, upload data to the other peer?
  • download: bool, download data from the other peer?
  • port: port for discovery swarm
  • utp: use utp in discovery swarm
  • tcp: use tcp in discovery swarm

Defaults from datland-swarm-defaults can also be overwritten:

  • dns.server: DNS server
  • dns.domain: DNS domain
  • dht.bootstrap: distributed hash table bootstrapping nodes

See Also