Node-Red Flows

A flow is a collection of nodes wired together and appears as a tab in the workspace.

Flows are the main way of organising nodes.

A flow has a context variable associated with it which is available to all nodes in the flow. See Understanding node-red context variables

A Basic Flow

You can wire the inject node into the debug node to create a basic flow as shown below.


The above flow will inject a unix timestamp into the debug node which can be viewed in the debug tab in the far right pane.

Deploying Flows

When you start node red then all currently enabled flows are automatically started.

If you edit or create a new flow you will need to deploy it using the deploy button.

The Deploy button on the top right change from grey to maroon when changes have been made to a flow to indicate that in it needs to be deployed.


You can choose to deploy all flows in the workspace, modified flows,modified nodes or restart flows.

See Deploying Node-Red Flows

Working With Flows

The workspace consists of all of your flows.

Along the top of the workspace pane are tabs that are used to open previously created flows.

You can create new Flows by clicking on the Plus button on the top right.


When you create a new empty Flow it is given a default name and is enabled by default.

Generally you create a new flow when the flow needs to do a distinct task.

To add nodes to a flow drag them from the node palette on the left into the active flow in the middle pane.

You can link the nodes together by dragging a wire between them.

A collection of linked nodes is called a flow.

Note: All flows in the workspace share the same node.js event loop.

Renaming, Deleting and Disabling Flows

A flow called Flow1 is pretty meaningless and so you should rename it to something more meaningful.

You can access the flow properties from the settings tab.

You need to select the flow in the workspace and then. to open the flow go to the menu (top right) node-menu and select flows> rename flow, delete, add. node-delete-flow

If you select rename then a window opens that displays the flow properties .

You can rename the flow, and there is also a toggle to enable/disable it, and also a button to delete it.

There is also a delete button to delete the flow on the top left.

Note: enable button moved to bottom right in version 1.0

You need then to redeploy for the setting to take effect.

You can also access this setting by double clicking on the flow name tab:


You should notice the icon in the flow tab that indicates that the flow is disabled.

You can also change the order of the flows in the workspace by clicking on the flow tab and dragging it left or right.

Flow Files -Storage and Backup

flows-backup-storageFlows that you create are stored by default in the .node-red directory of your home folder in a file called flows_servername.json.

The file is created when you run node-red for the first time, and is loaded each time that you run node-red.

EG. for my raspberry pi the file is flows_raspberrypi.json.

The file will contain all of the flows in the workspace.

However it is not the only file that is created. You will also see these files.

  • flows_raspberrypi.json.backup
  • flows_raspberrypi_cred.json.
  • flows_raspberrypi_cred.json.backup

flows_raspberrypi.json.backup – This is a backup of the flows_raspberrypi.json file, and functions like a word backup.

When you do a deploy the old flows_raspberrypi.json file is moved to the backup file and the flows_raspberrypi.json is overwritten.

This means that you can recover from a mistake if you notice it after 1 deploy by using the flows_raspberrypi.json.backup file.

flows_raspberrypi_cred.json. – This file contains login data used by some nodes. If it is not present the flows will still work, but you will need to add the information back in to any nodes that need it.

flows_raspberrypi_cred.json.backup – Backup of flows_raspberrypi_cred.json and functions the same way as the other backup.

Flow Backup

It is a good idea to backup your flows files on a regular basis. The automatic backup should only be considered a temporary one.

To do a complete backup then make a copy of the four files mentioned above:

  • flows_raspberrypi.json
  • flows_raspberrypi.json.backup.
  • flows_raspberrypi_cred.json.
  • flows_raspberrypi_cred.json.backup.

Note: you will need to change the names to match your flows files.

Moving Your Flows to Another Machine

You can copy all of the flows by copying the flows_newmachinebane.json. file.

To use them on another machine change the file name to flows_newmachinebane.json.

The only file you really need is the flows_raspberrypi.json file however you should also copy the flows_raspberrypi_cred.json file.

See this github page for other important files and folders.

Creating Additional and Multiple Flow Files

You can created additional flow files for storing different workspaces.

To use another flows file you can create a new settings file and edit it.

As an example if I wanted to create a separate flows file to store client flows I would :

  • copy the old settings file to a new one called client_settings.js
  • Edit the settings file to point to the new flows file and remove the two forward slashes.

// flowFile: clientflows.json’,

  • Start node-red using
node-red -s client_settings.js

You could also use the new flows file without creating a new settings file by using the command option which is my preferred option.

node-red clientflows.json

The default settings file will be used.

Notice you don’t need a switch. See Local Installs and managing node-red projects for more details.

Debugging Flows

A flow debuufer is available for node-red v2.

This is a node that you need to install and activate. Once activated you can set breakpoints in the flow and the flow will pause at the breakpoints.

A screen shot is shown below:


You can find more details here

<===== Node-Red Editor

=====> Deploying Node-red flows

Related Tutorials and Resources:

Click to rate this post!
[Total: 0 Average: 0]

Leave a Reply

Your email address will not be published. Required fields are marked *