Skip to content
Use Node.js in your end devices :)
JavaScript C Python C++ CMake Shell Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
config build: set DerivePointerAlignment to false (#279) Aug 10, 2018
docs mqtt: fix event flow & add more tests (#547) Aug 23, 2019
include n-api: update headers/test suites to LTS(10.13.0) (#416) Nov 21, 2018
profiles build: add platform linux-android (#493) Feb 25, 2019
samples lint: covers src/benchmark/samples (#410) Nov 9, 2018
.clang-format build: set DerivePointerAlignment to false (#279) Aug 10, 2018
.codacy.yaml deps: upgrade the mbedtls to 2.13.0-apache (#384) Nov 28, 2018
.eslintrc.js build: add clang/cmake/shell/js linters and fixups (#128) May 25, 2018
.travis.yml build: enable deploy build on PR (#524) May 28, 2019
CMakeLists.txt build: add platform linux-android (#493) Feb 25, 2019
LICENSE Modify copyright in LICENSE and add guide for contributor (#584) Dec 14, 2016
package.json working on v0.11.x (#434) Dec 4, 2018


The Node.js runtime in shadow, enables N-API and vast Node.js packages on edge devices.

Build Status License

The project is another runtime for your Node.js packages, while ShadowNode is designed to be used on memory limited devices. It's inspired and forked from the awesome project Samsung/iotjs.

Quick Start

To get started with ShadowNode, you could download prebuilt binaries on Release Page for following targets:

  • Linux x64
  • macOS x64

Memory usage and binary footprint are measured at here with real target daily.



Fetch source code
$ git clone
$ cd ShadowNode
Build ShadowNode
$ npm run build
Get available build options
$ tools/ --help
$ tools/ --install
Run tests
$ npm test

For additional information see Getting Started.

Compared with Node.js

ShadowNode is not designed to be ran identical code that ran on Node.js. While edge environments are experiencing limited resources on runtime, the packages to be ran on ShadowNode shall be rewritten in a resource compact way. However for the very initial thought of sharing the Node.js vast module ecosystem, we would like make ShadowNode compatible with Node.js with our efforts.

Since the MQTT protocol is commonly used for communication between IoT devices, ShadowNode supports the protocol natively, and keeps the API consistent with the popular library MQTT.js. See MQTT API for details.

The WebSocket is a popular protocol in IoT environment as well, and also supported by ShadowNode natively. See WebSocket API.

For hardware geek, this project benefits from the upstream IoT.js, which has supported the following hardware interfaces, you are able to port ShadowNode to your platforms and start hacking with JavaScript:


ShadowNode is Open Source software under the Apache 2.0 license. Complete license and copyright information can be found within the code.

You can’t perform that action at this time.