Privacy-Preserving Stream Integration

GPLv3 CircleCI wercker status Release


This software is a set of Node-RED nodes which provides a privacy preserving stream integration algorithm. There are several sensors in several places and you want to integrate data from such sensors in a cloud server; but you, at the same time, need to consider privacy of those sensor data.

For example, you put sensors in each room of customers’ houses and want to get power usage of each room in order to analyze usage patterns and provide a useful service such as consulting to reduce electric bill. However, collecting power usage can reveal customers’ private life style; you thereby have to treat that information privately.

This software provides a solution for that situation. It assumes two integration steps: at first integrating sensor data in a trusted network before sending to a cloud server, then integrating sensor data in the cloud server.

The following figure shows an example of this situation: there are two trusted networks, each of them has seven sensors and one integrator, and a cloud server receives data from those two integrators.


In this software, those integrators and the cloud server run a Node-RED server. In each integrator, the Node-RED server has nodes receiving data from sensors, applying privacy protection to those data, and sending them to the cloud server. In the cloud server, the Node-RED server has nodes receiving data from integrators and merging data.

See Node-RED nodes page for information about each node.

About Node-RED

Node-RED is a visual tool for wiring the Internet of Things. You can design data flow using its graphical flow editor, and deploy your application handling data from several sources.

Flow editor

Visit its web site to know usage of the flow editor and the way to deploy your application on Node-RED.

Quick Start

There are two ways to start a Node-RED server which includes Node-RED nodes provided by this software: compiling source code on your computer and run, and using a docker container.

Build and Run by Node.js

Prepare Node.js, Python 3, and pip; then install dependencies and build:

# Install packages used to build.
$ npm install --only=dev

# Build related packages.
$ npm run build

# Install dependencies.
$ npm install --only=prod

after that, you can run Node-RED including privacy preserving algorithms:

$ npm start

Open with your web browser to access Node-RED’s flow editor.

Run in a docker container

A Docker image, jkawamoto/psi-node-red, is published in Docker Hub, to run Node-RED in a container.

To start a Node-RED service listening port 1880, run

$ docker run -d --name node-red -p 1880:1880 jkawamoto/psi-node-red

After Node-RED starts, open with your web browser to access Node-RED’s flow editor.

You can also build the image, jkawamoto/psi-node-red, by your self:

$ docker build -t psi-node-red -f dockerfile/node-red/Dockerfile .


The algorithm this software provides is based on two papers:

Please consider to site those papers if you will publish articles using this application.


This work is partly supported by Artificial Intelligence Research Promotion Foundation (AIF), and Grant-in-Aid for Young Scientists (B) (26730065), Japan Society for the Promotion of Science (JSPS).


This software is released under the GNU General Public License version 3, see LICENSE.