The runtime components for Zetta.

![Gitter](https://badges.gitter.im/Join Chat.svg)

What is it?

Zetta is an open source Node.js based platform for the internet of things. It's a complete toolkit for generating HTTP APIs for devices. Zetta is protocol agnostic meaning that it can support almost all device protocols, and mediate them to HTTP. Zetta was built from the ground up to solve specific problems around generating consistent interfaces for devices, and allowing to stream real time state of devices.

Getting started with Zetta

This is the quintessential "Hello World!" program for Zetta. This program will generate your first Zetta UI for a particular server.

var zetta = require('zetta');

Key Concepts


Zetta has developers express devices as state machines using an elegant and expressive syntax. Zetta is a completely nodejs based framework that is cross platform, and easily deployable to multiple cloud services.


Zetta then takes that JavaScript, and generates a consistent Hypermedia HTTP API for those devices. Our HTTP APIs are expressed using the Siren specification. We also expose websocket endpoints to stream real time events out of the Zetta system. This paradigm of merging Hypermedia with websocket streaming is also known as Reactive Hypermedia.


Zetta has a robust query system that allows you to not only search for devices, but also subscribe to websockets to be notified when new devices come online that fulfill the query. The queries have a SQL-like syntax that makes it easy to wrangle devices in the API, and Zetta itself.


Zetta also allows you to write stateless applications that live in the server itself. You can query for devices, and wire up interactions between them in these applications. These apps will run consistently whether or not your hub has internet connectivity.


Zetta can create persistent connections between servers to expose APIs in new and unqiue ways. You can peer a Zetta server in your home with a server in the cloud, and allow for access to devices on the open internet.


Retrieving the Zetta package is fairly straight forward.


git clone git@github.com:zettajs/zetta.git && cd zetta
npm install


npm install zetta


The Zetta community is steadily growing. We have a few channels that you can talk to the Zetta team on.

You can also file an issue on our github issues page.


Visit our site at http://zettajs.github.io/ for documentation, and recipes for building systems with Zetta.