node package manager


Build Status # Codius host


This is a prototype implementation of a Codius host. Codius hosts run applications and provide them with APIs that allow for key generation, interaction with outside systems and lots more! Please keep in mind that is an early prototype and it's still missing a lot of functionality for it to be secure, stable and useful.


To use the Codius host, you need a recent version of Linux.


For the example commands below, we assume you're on Ubuntu 14.04 or later. But most up-to-date Linux distributions should work. We definitely recommend being on the latest stable release though.

If you're on Windows/Mac try installing Vagrant and then run:

vagrant init ubuntu/trusty32
vagrant up
vagrant ssh

Congratulations, you are running Ubuntu/Linux! Proceed.

32-bit libc/libstdc++ (Skip if you're using Vagrant or a 32-bit installation)

On 64-bit systems you need to have the 32-bit versions of libc, libstdc++ and libseccomp installed.

On Ubuntu, run:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6-i386 lib32stdc++6 libseccomp2:i386


Install git by running:

sudo apt-get install git


Next, you need a recent version of Node.js. All versions of 0.10.x or higher should work.

On Ubuntu, you can install Node.js simply by:

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
sudo ln -s /usr/bin/nodejs /usr/local/bin/node


sudo npm install -g codius-host

Getting started

To interact with your Codius host, check out the Codius CLI.

Setting up a local Codius host for testing


First, you need to generate a self-signed certificate. Run the following OpenSSL command to generate RSA keys and note where your server.key and server.crt are located:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

Local hostname

In order to use a local Codius host, you need to redirect requests like to your local host. Unfortunately, /etc/hosts does not allow you to specify wildcard hosts.

On Ubuntu, an easy way to get around this problem is using dnsmasq.

sudo apt-get install dnsmasq
echo 'address=/localcodius/' | sudo tee --append /etc/dnsmasq.conf
sudo /etc/init.d/dnsmasq restart

Afterwards, configure your Codius host to use "localcodius" as its hostname. You'll be able to access local applications using URLs like https://abcabc-abcabc-abcabc.localcodius:2633.


SSL_CERT=/path/to/server.crt SSL_KEY=/path/to/server.key codius-host start

Configuration options

Starting balance

By default, an application is considered pending when uploaded to your Codius host until its balance is credited. However, you can choose to give applications a free starting balance by modifying starting_cpu_balance in /lib/config.js or running with:

starting_cpu_balance=100 codius-host start


Codius host can be run with Bitcoin (alongside bitcoind) and/or Ripple billing enabled like so:

BITCOIND_HOST=your_bitcoind BITCOIND_PORT=bitcoind_port BITCOIND_USER=Your_Username BITCOIND_PASS=Your_Password codius-host start -f bitcoin_billing
RIPPLE_ADDRESS=rYOURRIPPLEADDRESS codius-host start -f ripple_billing

See /lib/config.js to modify values such as cpu_per_bitcoin.


Development of features should be made on the master branch behind a Feature Flag. To create a feaure flag require lib/features.js and only run your feature's code if the feature is enabled. Feature names are in ALL_CAPS.

var features = require('lib/features')
if (features.isEnabled('MY_COOL_FEATURE')) {
  // New code belongs here

Features are enabled at startup using the command line flag -f or --features. Multiple features can be specified using commas without spaces.

codius-host start --features my_cool_feature
codius-host start -f feature_one,feature_two