Sign in to queue


Today's Hardware Friday post is on a project I've not seen mentioned too often, but now that I know about it, I'll be keeping a much closer eye on it!

Barry Briggs recent post is where I first heard about it...

Architects at Work

Here in Microsoft’s TED (Technical Evangelism and Development) organization, we believe in hands-on architecture. A good part of our charter involves working with customers on amazing new applications that take our platform in new directions or demonstrate exciting new use cases. Here are some examples of “epic”
technologies and applications we’re working on now:

  • Our Internet of Things framework, originally developed for Raspberry Pi and now expanded to a wide variety of devices and protocols, is an easy way to securely connect devices using JavaScript and node.js. A number of the startups in our IOT accelerator (co-sponsored with American Family Insurance) are now using it to connect their gadgets to the internet. Check it out!


IoT with JavaScript and node.js? That sounds interesting!


Manage devices

Provision, monitor, install applications, control, and send / receive data over reliable messaging.

Application Platform

Build applications with a common cloud and device application model centered on JavaScript.


Nitrogen’s authentication and authorization system keeps your devices, users, and data safe.


An application that controls a heater using the measurements of four thermometers looks like this:

var temperatures = {};
var SETPOINT = 21.0;
var lastCommand;

session.onMessage({ type: 'temperature' }, function(message) {
temperatures[] = message.body.temperature;

var avg = avgTemperature(temperatures);

if (avg < SETPOINT) {
lastCommand = new nitrogen.Message({
type: 'switchCommand',
body: {
on: true


Making an application installable on a device is as simple as using node.js’s package manager to publish it:



Nitrogen connects devices together into applications. It provides the device management, security and permissioning, and application platform so that you can focus on building your application and not the infrastructure that surrounds it.

Messaging Based

The reality of real world devices is that most are often intermittently connected to the network. This might be because they are battery powered, because they are in motion and out of network coverage, or because they rely on another device for network access, but in the end, for a large class of devices, you can’t assume constant connectivity.

Nitrogen is built around messaging to overcome this, enabling devices to send and receive messages when they are connected, and nearly everything in Nitrogen revolves around this concept.

Messaging also provides abstraction. Messages in Nitrogen follow well known schemas, which enables devices and applications to communicate with each other without having to know the details of the other’s implementation.

Authorization and Authentication

The real world devices in our lives and our workplaces are in many ways even more sensitive than the computing devices we already have, and therefore any platform for them has to have a mechanism for securing them.

At the same time, security is difficult to implement and even harder to get right. The Nitrogen service provides authentication and authorization for both devices and users out of the box. Nitrogen uses these security principals throughout the platform in combination with an ACL based permissions system to authorize actions whether its sending command messages to a device or the ability to subscribe to a particular device’s message stream.

Application Environment

Finally, Nitrogen provides an application environment called Reactor that hosts and manages the lifecycle of applications that tie together devices. Applications in Nitrogen are node.js modules that can leverage the broad JavaScript developer base, the rich node.js package ecosystem, and the ability to publish and update them easily.

Applications in Nitrogen primarily work with the Nitrogen service with a JavaScript client library.

Getting Started

This section has a rich set of documentation around the core concepts of how everything fits together in Nitrogen but the best way to get started is to build something. The project has a set of guides to help you with that but don’t hesitate to reach out if you need help or have feedback on the platform.

And of course it's all open source!


The Discussion

Add Your 2 Cents