Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

API Registry Client for publishing dats. By default, the client is capable of registering, login, and publishing to

dat-registry allows users to interact with and publish dats to your registry via the dat command line. Supporting this module on your registry will allow a user to login and publish:

dat login
dat publish


npm install dat-registry

Quick Example

var Registry = require('dat-registry')

var registry = Registry()

registry.login({email: 'karissa', password: 'my passw0rd r0cks!'}, function () {
    name: 'animal-names',
    url: 'dat://378d23adf22df',
    title: 'Animal Names',
    description: 'I did a study on animals for a very important Nature study, here are the spreadsheets with raw animals in them.'
  }, function (err, resp, json) {
    if (err) throw err
    if (resp.statusCode === 400) console.error(data.message)
    console.log('Published successfully!')
    // Created a nickname for a dat at ``


var registry = Registry([opts])

  • opts.server: the registry server. Default is
  • opts.apiPath: registery server API path, e.g. we use /api/v1 for This will overwrite default township routes to use server + apiPath.
  • opts.config.filename: defaults to ~.datrc instead of township defaults.

Other options are passed to township-client, these include:

opts = {
  config: {
    filepath: '~/.townshiprc' // specify a full config file path 
  routes: { // routes for ALL township servers used by client
    register: '/register',
    login: '/login',
    updatePassword: '/updatepassword'

registry.login(data, cb)

Requires and data.password.

registry.register(data, cb)

Requires data.username,, and data.password.


Will callback with logout success or failure.

var user = registry.whoami([opts])

Returns user object with currently logged in user. See township-client for options.


registry.dats.create(data, cb)

Must be logged in. Requires a unique and unique data.url. Dat will be immediately available on the /:username/:name.

Accepts also any fields in a dat.json file.

registry.dats.get([data], cb)

Returns all dats that match the given (optional) querystrings.

registry.dats.update(data, cb)

registry.dats.delete(data, cb)

registry.users.get([data], cb)

registry.users.update(data, cb)

registry.users.delete(data, cb)