is a plaintext and JSON webservice that tracks all available versions of node.js and nginx. It uses that version info to resolve semver range queries. It's used by Heroku's node buildpack and is open-sourced on GitHub.

On the command line

### For nodejs
# 0.10.31

# 0.11.13

# 0.8.26

### For nginx
# 1.6.1

In the browser

There's also a CORS-friendly HTTP endpoint at and that gives you the whole kit and caboodle:

  var xhr = new XMLHttpRequest();'GET', '', true);
  xhr.onload = function () { console.log(xhr.responseText); };

The response is something like:

  "stable": "0.10.22",
  "unstable": "0.11.8",
  "versions": [

Ranges supports any range that isaacs/node-semver can parse. Here are some examples (these also work for nginx):

These named routes are also provided for convenience:

How does it work?

Under the hood, is powered by node-version-resolver, a node module that does all the work of talking to and parsing version data.

For nginx, it parses nginx's tarball filenames from and extract the versions available.

While currently implemented for node and nginx, is designed to support any software that follows the semver rules.

What about npm versions?

npm versions are not tracked because the node binary has shipped with npm included since node 0.6.3. The buildpack ignores engines.npm, deferring to node for npm version resolution.

Fork me on GitHub