Skynet: online

Enabling machine-to-machine instant messaging

@ChrisMatthieu

--

The Internet of Things (IoT) market is said to be a $14 trillion market by 2020. Nearly every device being manufactured today has one or more sensors in it and these devices are becoming Internet-friendly (such as the Nest thermostat and now the Nest smoke detector) . The problem is that there isn’t a single network and/or API to connect devices from different manufacturers. Consumers need an app for their Nest devices and a different app for their lights etc. I’m sure that we have the same problem dealing with sensors and internet-aware devices on our projects around the world.

What if we could connect all of our sensors, devices, and even server nodes into a single network and API? What if we could make our devices communicate with each other as machine-to-machine (M2M)? What if devices and applications could respond to abnormal threshold events from sensors or trigger other events as the result of the state changing on a device (i.e. changes in light, temperature, sound, presence, or seismic activity)? What if I wanted to query all servers on our network to find out which server is online and has CPU cycles available and is closest to a large data source to run an intense query? What if flipping a switch in the UK (or a tap of a mobile app) could turn on a light in the US? I believe that I found a way to do *all* of this and more! :)

The idea hit me while watching the Terminator movie — so of course — it’s codenamed Skynet :) Skynet allows devices (Raspberry Pis, Arduinos, Tessels, sensors, etc) and nodes (servers, workstations, VMs, etc) to interact with other devices and nodes via realtime websocket communications and a REST API. Skynet knows when devices and nodes come online and go offline via presence managed by websocket heartbeats. Devices and nodes are each secured via unique IDs (UUID) and secret tokens. Devices and nodes can store an unlimited amount of meta data about itself on the network in which all of it can be queried by apps and other devices/nodes (or humans). Custom JSON messages can be sent to a specific device UUID or an array of UUIDs or be broadcasted to all devices and nodes on the network. For instance, you could query Skynet for all online drones in London that are sitting idle and feed them flight pattern instructions with a single message. You could also control a bot-net army of workstations and have them process the same instructions or work in concert on a larger problem to solve. You could create a network of sensors that feed data into Skynet for monitoring or controlling other devices when thresholds are met/exceeded.

Today, the platform is designed to operate via the Internet where all devices and nodes must also have access to the internet (or we could run it on a private TCP/IP network on a project site). Ideally, we would re-architect the platform to run as a mesh network where each device/node is a client and a server discovering other devices/nodes as they become available and replicating events, messages, and queries for eventual consistency.

I have prepared a single-page website with screencasts, REST API documentation, and a Node.JS NPM module to make developing javascript and node.js POCs quick and simple. You can find more details about Skynet at http://skynet.im

I really believe that the sky is the limit on possible use cases for this technology to solve. I need your help on brainstorming possible uses for this technology on a project. Let me know if you have any ideas…

--

--

@ChrisMatthieu

Builder of companies, robots, supercomputers, & motorcycles. @xrpanet & @twelephone CEO. Formerly @magicleap @computesio @citrix @octoblu @nodester @teleku