Smarx Role is a Windows Azure role that supports publishing web applications written in Node.js, Ruby, and Python. Apps are published/synchronized via Git or blob storage, allowing nearly instantaneous changes to published applications. It automatically pulls in dependent modules using each language's package manager (npm, Gem, or pip).

For an overview of the Smarx Role and how it works, see smarx's talk at MIX 2011 (slides).

Important Note

This software, when executed, requires you to download and install programs from third-parties that are in no way affiliated with Microsoft. These programs are: Python 2.7.1, Ruby 1.9.2, Node.js 0.4.7, and msysgit 1.7.4. The licenses for those products are between you and the relevant third parties and are available at the projects' homepages:


The simplest way to deploy a Smarx Role is to grab one of the precreated packages from the latest release, edit ServiceConfiguration.cscfg, and deploy via the Windows Azure portal.

For the actual application bits that you deploy, the requirements are relatively simple:
  1. The application must reside either at a Git URL or in a blob container (details specified in ServiceConfiguration.cscfg).
  2. The application should be written in Python, Ruby, or Node.js, with a file called, app.rb, or app.js.
  3. The application will be executed with the parameters -p #### -e production, where #### is the port the application should listen on for incoming HTTP requests.
  4. The application should specify dependent modules via pip, Gem, or npm conventions. (Smarx Role will execute pip install -r Pipfile, bundle install, and npm install --verbose for you before running your code.)

CoffeeScript note

If you want, you can write CoffeeScript instead of JavaScript when using Node.js. Smarx Role will execute the command coffee -o . src/*.coffee before executing your code, so, for example, you'll want a file called src/ if you're writing your main Node.js application in CoffeeScript. (Of course, you can simply compile your .coffee down to .js before committing/uploading it.)


Last edited Jun 7, 2011 at 10:10 PM by smarx, version 9