Package detail

node-red

node-red97.9kApache-2.04.1.0

Low-code programming for event-driven applications

editor, messaging, iot, flow

readme

Node-RED

https://nodered.org

Low-code programming for event-driven applications.

Node-RED: Low-code programming for event-driven applications.

Quick Start

Check out https://nodered.org/docs/getting-started/ for full instructions on getting started.

  1. sudo npm install -g --unsafe-perm node-red
  2. node-red
  3. Open http://localhost:1880

Getting Help

More documentation can be found here.

For further help, or general discussion, please use the Node-RED Forum or slack team.

Developers

The main Node-RED modules are maintained as a monorepo on GitHub.

Contributing

Before raising a pull-request, please read our contributing guide.

This project adheres to the Contributor Covenant 1.4. By participating, you are expected to uphold this code. Please report unacceptable behavior to any of the project's core team at team@nodered.org.

Authors

Node-RED is a project of the OpenJS Foundation.

It is maintained by:

Copyright and license

Copyright OpenJS Foundation and other contributors, https://openjsf.org under the Apache 2.0 license.

changelog

4.1.0: Milestone Release

  • Fix: multipart form data upload issue (#5228) @debadutta98
  • Update help document of filter node (#5210) @kazuhitoyokoi
  • Fix inject node validation to support binary and hexadecimal numbers (#5212) @ZJvandeWeg
  • Do not select a nearest node if move is active (#5199) @GogoVega

4.1.0-beta.2: Beta Release

Editor

  • feat: tray's primary button function will no longer run when clicking anywhere in #red-ui-editor-shade (#5122) @AllanOricil
  • Truncate topic of debug message and add tooltip (#5168) @GogoVega
  • Add event-log widget to status bar (#5181) @knolleary
  • Add splice property to nodes:add event context (#5195) @knolleary
  • Add support for plugin sources of autoComplete fields (#5194) @knolleary
  • setSuggestedFlow api improvements (#5180) @knolleary
  • Do not update suggestion whilst typeSearch hiding (#5193) @knolleary
  • Update jquery (#5192) @knolleary
  • Hide event log status widget by default (#5191) @knolleary
  • Swap manage/install-all buttons in dependency notification (#5189) @knolleary
  • Follow-up tweaks to HTTP In skip body parser (#5188) @knolleary
  • Fixes infotip handling of cursor keys and updates english tip (#5187) @knolleary
  • Add Japanese translations for 4.1.0-beta.1 (#5173) @kazuhitoyokoi
  • Do not use css display when counting filtered palette nodes (#5178) @knolleary
  • Fix pending_version not set after module update (#5169) @GogoVega

Runtime

  • Prevent library leaking full local paths (#5186) @hardillb

Nodes

  • HTTP In: feat: Add an option to the HTTP In to include the raw body. (#5037) @debadutta98
  • HTTP Request: Allow limited Strings for msg.rejectUnauthorized (#5172) @hardillb

4.1.0-beta.1: Beta Release

Editor

  • Add update notification (#5117) @knolleary
  • Add a node annotation if the info property is set (#4955) @knolleary
  • Add node suggestion api to editor and apply to typeSearch (#5135) @knolleary
  • Node filter support for typedInput's builtin node (#5154) @GogoVega
  • Import got module only once when sending metrics (#5152) @GogoVega
  • Trigger button action of the selected nodes with new Hotkey (#4924) @GogoVega
  • Handle deleting of subflow context entries (#5071) @knolleary
  • Add the changed badge to the config node (#5062) @GogoVega
  • Default Palette Search: Sort by Downloads (#5108) @joepavitt
  • Show deprecated message if module flagged (#5134) @knolleary
  • Add link icon to node docs and warn for major update (#5143) @GogoVega
  • Support for a module with nodes and plugins in the palette (#4945) @GogoVega
  • Include module list in global-config node when importing/exporting flows (#4599) @knolleary
  • Add Install all button to the module list feature (#5123) @GogoVega
  • Fix node tab filtering (#5119) @knolleary
  • Cleanup global Palette Manager variables (#4958) @GogoVega
  • Add a new update available widget to statusBar (#4948) @knolleary
  • Add a queue while installing or removing a module from the Palette Manager (#4937) @GogoVega
  • Ignore state of disabled nodes/flows during deployment (#5054) @GogoVega
  • Exclude internal properties from node definition (#5144) @GogoVega
  • Refresh config node sidebar when changing lock state of a flow (#5072) @knolleary
  • Add a border to better distinguish typedInput type/option dropdowns (#5078) @knolleary
  • Fix undo of subflow color change not applying to instances (#5012) @GogoVega
  • Properly handle scale factor in getLinksAtPoint for firefox (#5087) @knolleary
  • Update markdown drop-target appearance (#5059) @knolleary
  • Support for disabled flows in Sidebar Config (#5061) @GogoVega
  • Support text drag & drop into markdown editor (#5056) @gorenje
  • Truncate long messages from the Debug Sidebar (#4944) @GogoVega
  • Handle link nodes with show/hide label action (#5106) @knolleary
  • Update the Node-RED logo to use the hex variant (#5103) @joepavitt
  • Add the vertical marker to the palette hand (#4954) @GogoVega
  • Monaco Latest (0.52.0) (#4930) @Steve-Mcl
  • Updates monaco to 0.52.0 for action widget sizing fix (#5110) @Steve-Mcl
  • Bump Multer to 2.0.1 (#5151) @hardillb
  • Upgrade multer to 2.0.0 (#5148) @hardillb
  • Update dompurify (#5120) @knolleary
  • Colourise the Node-RED logs (#5109) @hardillb
  • Only apply colours for non-default log lines (#5129) @knolleary
  • feat: import default export if plugin is a transpiled es module (#5137) @dschmidt
  • Add an additional git_auth_failed condition (#5145) @sonnyp
  • Fix Sass deprecation warnings (#4922) @bonanitech
  • chore(editor)!: remove Internet Explorer polyfill (#5070) @Rotzbua
  • Remove Internet Explorer CSS hacks (#5142) @bonanitech

Runtime

  • fix: set label in themeSettings.deployButton despite type attribute (#5053) @matiseni51
  • fix(html): correct buggy html (#4768) @Rotzbua
  • Update dev (#4836) @knolleary
  • Update dependencies (#5107) @knolleary
  • Bump i18next to 24.x and auto-migrate message catalog format (#5088) @knolleary
  • chore(editor): update DOMPurify flag (#5073) @Rotzbua
  • Add .editorconfig to .gitignore (#5060) @gorenje

Nodes

  • Complete/Status: Fix complete node to not feedback immediately connected nodes (#5114) @dceejay
  • Function: Add URL/URLSearchParams to Function sandbox (#5159) @knolleary
  • Function: Add support for node: prefixed modules in function node (#5067) @knolleary
  • Function: Add globalFunctionTimeout (#4985) @vasuvanka
  • Exec: Make encoding handling consistent between stdout and err (#5158) @knolleary
  • Split: Let split node send original msg to complete node (#5113) @dceejay
  • Split: Rename Split The field (#5130) @dceejay
  • MQTT: Ensure generated mqtt clientId uses only valid chars (#5156) @knolleary
  • HTTP Request: Fix the capitisation for ALPN settings in http-request (#5105) @hardillb
  • HTTP Request: (docs) Recommend HTTPS over HTTP (#5141) @ZJvandeWeg
  • HTTP Request: Include URL query params in HTTP Digest (#5166) @hardillb
  • Catch: Add code to error object sent by Catch node (#5081) @knolleary
  • Debug: Improve debug display of error objects (#5079) @knolleary

4.0.9: Maintenance Release

Editor

  • Add details for the dynamic subscription to match the English docs (#5050) @aikitori
  • Fix tooltip snapping based on typedInput type (#5051) @GogoVega
  • Prevent symbol usage warning in monaco (#5049) @Steve-Mcl
  • Show subflow flow context under node section of sidebar (#5025) @knolleary
  • feat: Add custom label for default deploy button in settings.editorTheme (#5030) @matiseni51
  • Handle long auto-complete suggests (#5042) @knolleary
  • Handle undefined username when generating user icon (#5043) @knolleary
  • Handle dragging node into group and splicing link at same time (#5027) @knolleary
  • Remember context sidebar tree state when refreshing (#5021) @knolleary
  • Update sf instance env vars when removed from template (#5023) @knolleary
  • Do not select group when triggering quick-add within it (#5022) @knolleary
  • Fix library icon handling within library browser component (#5017) @knolleary

Runtime

  • Allow env var access to context (#5016) @knolleary
  • fix debug status reporting if null (#5018) @dceejay
  • Fix grunt dev via better ndoemon ignore rules (#5015) @knolleary
  • Fix typo in CHANGELOG (4.0.7-->4.0.8) (#5007) @natcl

Nodes

  • Switch: Avoid exceeding call stack when draining message group in Switch (#5014) @knolleary

4.0.8: Maintenance Release

Editor

  • Fix config node sort order when importing (#5000) @knolleary

4.0.7: Maintenance Release

Editor

  • Fix def can be undefined if the type is missing (#4997) @GogoVega
  • Fix the user list of nested config node (#4995) @GogoVega
  • Support custom login message and button (#4993) @knolleary

4.0.6: Maintenance Release

Editor

  • Roll up various fixes on config node change history (#4975) @knolleary
  • Add quotes when installing local tgz to fix spacing in the file path (#4949) @AGhorab-upland
  • Validate json dropped into editor to avoid unhelpful error messages (#4964) @knolleary
  • Fix junction insert position via context menu (#4974) @knolleary
  • Apply zoom scale when calculating annotation positions (#4981) @knolleary
  • Handle the import of an incomplete Subflow (#4811) @GogoVega
  • Fix updating the Subflow name during a copy (#4809) @GogoVega
  • Rename variable to avoid confusion in view.js (#4963) @knolleary
  • Change groups.length to groups.size (#4959) @hungtcs
  • Remove disabled node types from QuickAddDialog list (#4946) @GogoVega
  • Fix setModulePendingUpdated with plugins (#4939) @GogoVega
  • Missing getSubscriptions in the docs while its implemented (#4934) @ersinpw
  • Apply envVarExcludes setting to util.getSetting into the function node (#4925) @GogoVega
  • Fix envVar editable list should be sortable (#4932) @GogoVega
  • Improve the node name auto-generated with the first available number (#4912) @GogoVega

Runtime

  • Get the env config node from the parent subflow (#4960) @GogoVega
  • Update dependencies (#4987) @knolleary

Nodes

  • Performance : make reading single buffer / string file faster by not re-allocating and handling huge buffers (#4980) @Fadoli
  • Make delay node rate limit reset consistent - not send on reset. (#4940) @dceejay
  • Fix trigger node date handling for latest time type input (#4915) @dceejay
  • Fix delay node not dropping when nodeMessageBufferMaxLength is set (#4973)
  • Ensure node.sep is honoured when generating CSV (#4982) @knolleary

4.0.5: Maintenance Release

Editor

  • Refix link call node can call out of a subflow (#4908) @GogoVega

4.0.4: Maintenance Release

Editor

  • Fix link call node can call out of a subflow (#4892) @GogoVega
  • Fix wrong unlock state when event is triggered after deployment (#4889) @GogoVega
  • i18n(App) update with latest language file changes (#4903) @joebordes
  • fix typo: depreciated (#4895) @dxdc

Runtime

  • Update dev dependencies (#4893) @knolleary

Nodes

  • MQTT: Allow msg.userProperties to have number values (#4900) @hardillb

4.0.3: Maintenance Release

Editor

  • Refresh page title after changing tab name (#4850) @kazuhitoyokoi
  • Add Japanese translations for v4.0.2 (again) (#4853) @kazuhitoyokoi
  • Stay in quick-add mode following context menu insert (#4883) @knolleary
  • Do not include Junction type in quick-add for virtual links (#4879) @knolleary
  • Multiplayer cursor tracking (#4845) @knolleary
  • Hide add-flow options when disabled via editorTheme (#4869) @knolleary
  • Fix env-var config select when multiple defined (#4872) @knolleary
  • Fix subflow outbound-link filter (#4857) @GogoVega
  • Add French translations for v4.0.2 (#4856) @GogoVega
  • Fix moving link wires (#4851) @knolleary
  • Adjust type search dialog position to prevent x-overflow (#4844) @Steve-Mcl
  • fix: modulesInUse might be undefined (#4838) @lorenz-maurer
  • Add Japanese translations for v4.0.2 (#4849) @kazuhitoyokoi
  • Fix menu to enable/disable selection when it's a group (#4828) @GogoVega

Runtime

  • Update dependencies (#4874) @knolleary
  • GitHub: Add citation file to enable "Cite this repository" feature (#4861) @lobis
  • Remove use of util.log (#4875) @knolleary

Nodes

  • Fix invalid property error in range node example (#4855)
  • Fix typo in flow example name (#4854) @kazuhitoyokoi
  • Move SNI, ALPN and Verify Server cert out of check (#4882) @hardillb
  • Set status of mqtt nodes to "disconnected" when deregistered from broker (#4878) @Steve-Mcl
  • MQTT: Ensure will payload is a string (#4873) @knolleary
  • Let batch node terminate "early" if msg.parts set to end of sequence (#4829) @dceejay
  • Fix unintentional Capitalisation in Split node name (#4835) @dceejay

4.0.2: Maintenance Release

Editor

  • Use a more subtle border on the header (#4818) @bonanitech
  • Improve the editor's French translations (#4824) @GogoVega
  • Clean up orphaned editors (#4821) @Steve-Mcl
  • Fix node validation if the property is not required (#4812) @GogoVega
  • Ensure mermaid.min.js is cached properly between loads of the editor (#4817) @knolleary

Runtime

  • Allow auth cookie name to be customised (#4815) @knolleary
  • Guard against undefined sessions in multiplayer (#4816) @knolleary

4.0.1: Maintenance Release

Editor

  • Ensure subflow instance credential property values are extracted (#4802) @knolleary
  • Use _ADD_ value for both add new... and none options (#4800) @GogoVega
  • Fix the config node select value assignment (#4788) @GogoVega
  • Add tooltip for number of subflow instance on info tab (#4786) @kazuhitoyokoi
  • Add Japanese translations for v4.0.0 (#4785) @kazuhitoyokoi

Runtime

  • Ensure group nodes are properly exported in /flow api (#4803) @knolleary

    Nodes

  • Joins: make using msg.parts optional in join node (#4796) @dceejay

  • HTTP Request: UI proxy should setup agents for both http_proxy and https_proxy (#4794) @Steve-Mcl
  • HTTP Request: Remove default user agent (#4791) @Steve-Mcl

4.0.0: Milestone Release

This marks the next major release of Node-RED. The following changes represent those added since the last beta. Check the beta release details below for the complete list.

Breaking Changes

  • Node-RED now requires Node 18.x or later. At the time of release, we recommend using Node 20.

Editor

  • Add httpStaticCors (#4761) @knolleary
  • Update dependencies (#4763) @knolleary
  • Sync master to dev (#4756) @knolleary
  • Add tooltip and message validation to typedInput (#4747) @GogoVega
  • Replace bcrypt with @node-rs/bcrypt (#4744) @knolleary
  • Export Nodes dialog refinement (#4746) @Steve-Mcl

4.0.0-beta.4: Beta Release

Editor

  • Fix the Sidebar Config is not refreshed after a deploy (#4734) @GogoVega
  • Fix checkboxes are not updated when calling typedInput("value", "") (#4729) @GogoVega
  • Fix panning with middle mouse button on windows 10/11 (#4716) @corentin-sodebo-voile
  • Add Japanese translation for sidebar tooltip (#4727) @kazuhitoyokoi
  • Translate the number of items selected in the options list (#4730) @GogoVega
  • Fix a checkbox should return a Boolean value and not the string on (#4715) @GogoVega
  • Deleting a grouped node should update the group (#4714) @GogoVega
  • Change the Config Node cursor to pointer (#4711) @GogoVega
  • Add missing tooltips to Sidebar (#4713) @GogoVega
  • Allow nodes to return additional history entries in onEditSave (#4710) @knolleary
  • Update to Monaco 0.49.0 (#4725) @Steve-Mcl
  • Add Japanese translations for 4.0.0-beta.3 (#4726) @kazuhitoyokoi
  • Show lock on deploy if user is read-only (#4706) @knolleary

Runtime

  • Ensure all CSS variables are in the output file (#3743) @bonanitech
  • Add httpAdminCookieOptions (#4718) @knolleary
  • chore: migrate deprecated util.isArray (#4724) @Rotzbua
  • Add --version cli args (#4707) @knolleary
  • feat(grunt): fail if files are missing (#4739) @Rotzbua
  • fix(node-red-pi): node-red not started by path (#4736) @Rotzbua
  • fix(editor): remove trailing slash (#4735) @Rotzbua
  • fix: remove deprecated mqtt.js (#4733) @Rotzbua

Nodes

  • Perform Proxy logic more like cURL (#4616) @Steve-Mcl

4.0.0-beta.3: Beta Release

Editor

  • Improve background-deploy notification handling (#4692) @knolleary
  • Hide workspace tab on middle mouse click (#4657) @Steve-Mcl
  • multiplayer: Add user presence indicators (#4666) @knolleary
  • Enable updating dependency node of package.json in project feature (#4676) @kazuhitoyokoi
  • Add French translations for 4.0.0-beta.2 (#4681) @GogoVega
  • Add Japanese translations for 4.0.0-beta.2 (#4674) @kazuhitoyokoi
  • Fix saving of conf-type properties in module packaged subflows (#4658) @knolleary
  • Add npm install timeout notification (#4662) @hardillb
  • Fix undo of subflow env property edits (#4667) @knolleary
  • Fix three error typos in monaco.js (#4660) @JoshuaCWebDeveloper
  • docs: Add closing paragraph tag (#4664) @ZJvandeWeg
  • Avoid login loops when autoLogin enabled but login fails (#4684) @knolleary

Runtime

  • Allow blank strings to be used for env var property substitutions (#4672) @knolleary
  • Use rfdc for cloning pure JSON values (#4679) @knolleary
  • fix: remove outdated Node 11+ check (#4314) @Rotzbua
  • feat(ci): add new nodejs v22 (#4694) @Rotzbua
  • fix(node): increase required node >=18.5 (#4690) @Rotzbua
  • fix(dns): remove outdated node check (#4689) @Rotzbua
  • fix(polyfill): remove import module polyfill (#4688) @Rotzbua
  • Fix typo (#4686) @Rotzbua

Nodes

  • Pass full error object in Function node and copy over cause property (#4685) @knolleary
  • Replacing vm.createScript in favour of vm.Script (#4534) @patlux

4.0.0-beta.2: Beta Release

Editor

  • Introduce multiplayer feature (#4629) @knolleary
  • Separate the "add new config-node" option into a new (+) button (#4627) @GogoVega
  • Retain Palette categories collapsed and filter to localStorage (#4634) @knolleary
  • Ensure palette filter reapplies and clear up unknown categories (#4637) @knolleary
  • Add support for plugin (only) modules to the palette manager (#4620) @knolleary
  • Update monaco to latest and node types to 18 LTS (#4615) @Steve-Mcl

Runtime

  • Fix handling of subflow config-node select type in sf module (#4643) @knolleary
  • Comms API updates (#4628) @knolleary
  • Add French translations for 4.0.0-beta.1 (#4621) @GogoVega
  • Add Japanese translations for 4.0.0-beta.1 (#4612) @kazuhitoyokoi

Nodes

  • Fix change node handling of replacing with boolean (#4639) @knolleary

4.0.0-beta.1: Beta Release

Editor

  • Click on id in debug panel highlights node or flow (#4439) @ralphwetzel
  • Support config selection in a subflow env var (#4587) @Steve-Mcl
  • Add timestamp formatting options to TypedInput (#4468) @knolleary
  • Allow RED.view.select to select links (#4553) @lgrkvst
  • Add auto-complete to flow/global/env typedInput types (#4480) @knolleary
  • Improve the appearance of the Node-RED primary header (#4598) @joepavitt

Runtime

  • let settings.httpNodeAuth accept single middleware or array of middlewares (#4572) @kevinGodell
  • Upgrade to JSONata 2.x (#4590) @knolleary
  • Bump minimum version to node 18 (#4571) @knolleary
  • npm: Remove production flag on npm invocation (#4347) @ZJvandeWeg
  • Timer testing fix (#4367) @hlovdal
  • Bump to 4.0.0-dev (#4322) @knolleary

Nodes

  • TCP node - when resetting, if no payload, stay disconnected @dceejay
  • HTML node: add option for collecting attributes and content (#4513) @gorenje
  • let split node specify property to split on, and join auto join correctly (#4386) @dceejay
  • Add RFC4180 compliant mode to CSV node (#4540) @Steve-Mcl
  • Fix change node to return boolean if asked (#4525) @dceejay
  • Let msg.reset reset Tcp request node connection when in stay connected mode (#4406) @dceejay
  • Let debug node status msg length be settable via settings (#4402) @dceejay
  • Feat: Add ability to set headers for WebSocket client (#4436) @marcus-j-davies

Older Releases

Change logs for older releases are available on GitHub: https://github.com/node-red/node-red/releases