Pull request Compare This branch is 1721 commits behind onilabs:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Oni Apollo - Multi-Platform StratifiedJS Implementation

Oni Apollo is a StratifiedJS implementation

  • a supporting set of modules. It runs server-side (based on NodeJS) as well as client-side (cross-browser).

For an overview see onilabs.com/apollo.

Please post questions to the Apollo Google Group.


  • Client-side cross-browser StratifiedJS runtime.
  • ~15kB gzipped, MIT-licensed.
  • For more information please read the docs at onilabs.com/apollo.

oni-apollo-node.js, 'apollo' executable

  • Server-side StratifiedJS runtime for NodeJS.
  • If you've got NodeJS installed, just run apollo to get a serverside SJS REPL.
  • See also this Apollo Google Group post

rocket, rocket-modules/

  • A simple web server


  • 'Oni Apollo Standard Module Library'
  • All MIT-licensed.
  • Runs server-side or client-side.
  • Documentation at onilabs.com/modules.


  • build tools and source code from which oni-apollo.js and oni-apollo-node.js are assembled.

How to build

Everything is already pre-built.

No need to compile anything unless you change something in the src/ directory. In that case, you can use the src/build/make-apollo tool to reassemble oni-apollo.js and oni-apollo-node.js. The build process should work on most unixy environments out of the box (in particular it requires CPP - the C preprocessor).

How to run/install

No need to install anything.

For server-side use, you can just execute the apollo executable (provided you have nodejs installed).

Alternatively you can install with npm (see the package.json script).

For client-side use, just include the oni-apollo.js file in your html, as described at onilabs.com/apollo.

Considerations for client-side use

Note that, by default, if you load standard library modules using code such as

var http = require('apollo:http');

the module will be requested from


This location can only be inferred if you load oni-apollo.js in the 'normal' way. If you rename oni-apollo.js to something else, or you don't load it through a <script> tag, you'll need to manually configure the 'apollo' hub before you can make calls such as require('apollo:http').

To (re-)configure the 'apollo hub', you can use code such as this:

// all modules addressed as 'apollo:' will now be loaded from the
// location above.

Note that many browsers cannot load modules over the file: protocol. You can use rocket to serve up the apollo directory locally. Alternatively, you can serve oni-apollo.js and the modules/ directory with a different web server, or load oni-apollo.js & modules/ from http://code.onilabs.com/ as described at onilabs.com/apollo.