Skip to content
Oni StratifiedJS (previously Apollo)
JavaScript HTML Emacs Lisp PHP Python CSS Other
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

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

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


  • 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

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 as described at

Something went wrong with that request. Please try again.