Nodejs bindings for the siad API -
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.babelrc change isSiadRunning to async isRunning Jul 19, 2016
.eslintrc.json add babel build, linting tools Jul 19, 2016
.gitignore add babel build, linting tools Jul 19, 2016
.npmignore add babel build, linting tools Jul 19, 2016
.travis.yml update travis.yml Jul 19, 2016
LICENSE Initial setup Nov 12, 2015 fix logo Nov 7, 2016
appveyor.yml add appveyor.yml for appveyor builds Oct 31, 2016

Sia Logo Nodejs Wrapper

Build Status js-standard-style devDependency Status dependencies Status license:mit

A Highly Efficient Decentralized Storage Network

This is a Nodejs wrapper for Sia. Use it in your apps to easily interact with the Sia storage network via function calls instead of manual http requests.



npm install sia.js

Example Usage

import { connect } from 'sia.js'

// Using promises...
// connect to an already running Sia daemon on localhost:9980 and print its version
  .then((siad) => {'/daemon/version').then((version) => console.log(version))
  .catch((err) => {

// Or ES7 async/await
async function getVersion() {
  try {
    const siad = await connect('localhost:9980')
    const version = await'/daemon/version')
    console.log('Siad has version: ' + version)
  } catch (e) {

You can also forgo using connect and use call directly by providing an API address as the first parameter:

import { call } from 'sia.js'

async function getVersion(address) {
  try {
    const version = await call(address, '/daemon/version')
    return version
  } catch (e) {
    console.error('error getting ' + address + ' version: ' + e.toString())


sia.js can also launch a siad instance given a path on disk to the siad binary. launch takes an object defining the flags to use as its second argument, and returns the child_process object. You are responsible for keeping track of the state of this child_process object, and catching any errors launch may throw.

import { launch } from 'sia.js'

try {
  // Flags are passed in as an object in the second argument to `launch`.
  // if no flags are passed, the default flags will be used.
  const siadProcess = launch('/path/to/your/siad', {
    'modules': 'cghmrtw',
    'profile': true,
  // siadProcess is a ChildProcess class.  See for more information on what you can do with it.
  siadProcess.on('error', (err) => console.log('siad encountered an error ' + err))
} catch (e) {
  console.error('error launching siad: ' + e.toString())

The call object passed as the first argument into call() are funneled directly into the request library, so checkout their options to see how to access the full functionality of Sia's API{
  url: '/consensus/block',
  method: 'GET',
  qs: {
    height: 0

Should log something like:

null { block:
 { parentid: '0000000000000000000000000000000000000000000000000000000000000000',
   nonce: [ 0, 0, 0, 0, 0, 0, 0, 0 ],
   timestamp: 1433600000,
   minerpayouts: null,
   transactions: [ [Object] ] } }