Serve hypercore-archiver over discovery-swarm
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Serve Dat Archives stored in a hypercore-archiver.

Archives can be served over HTTP and the Dat Network (via discovery-swarm).


Serve on Dat Network

Serve archives in a hypercore-archiver with discovery-swarm.

var Archiver = require('hypercore-archiver')
var archiverServer = require('archiver-server')

var archives = Archiver('archives', {swarm: true})
var datServer = archiverServer(archives)

datServer.swarm.on('listening', function () {
  console.log('Listening for connections on the Dat Network')

// (Later) Any archives added will be available over discovery-swarm network

Serve Over HTTP

var http = require('http')
var Archiver = require('hypercore-archiver')
var archiverServer = require('archiver-server')

var archiver = Archiver('archives')
var datServer = archiverServer(archiver, {http: true})

// Bring your own HTTP server and handle requests
var server = http.createServer()
server.on('request', datServer.httpRequest)
server.listen(argv.httpPort, function () {
    console.log('Server is listening on port ' + port)

// (Later) Any archives added will be available over HTTP


Archiver-server provides a basic CLI utility. There is currently no interface to add/remove archives to the hypercore-archiver, so it may be difficult to add use the CLI except for testing on preexisting archiver directories.

Run npm start to run the CLI in debug mode.


  • --httpPort 8080: Port for HTTP server
  • --datPort 3282: Port for Dat Network
  • --archiveDir dats: Directory for hypercore-archiver storage
  • --swarm (boolean): Serve archives on the Dat Network
  • --http (boolean): Serve archives over HTTP


var server = archiverServer(archiver, [opts])

Create a server for a hypercore-archiver. Use http and swarm to specify which server types to use.

Options include:

opts = {
  http: true, // Return onrequest function to serve over HTTP
  swarm: true, // Serve over Dat Network
  utp: true, // Passed to Discovery-Swarm
  tcp: true, // Passed to Discovery-Swarm
  datPort: 3282 // Passed to Discovery-Swarm


discovery-swarm for your archives. Automatically connects.


Bring your own HTTP server. Use server.httpRequest for your http server's request function.

HTTP requires hypercore-archiver ^2.3.0.