[{"data":1,"prerenderedAt":574},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fuser\u002Fprojectnodes\u002F":3,"docs-nav":116},{"id":4,"title":5,"body":6,"description":16,"extension":105,"layout":106,"meta":107,"navGroup":106,"navGroupOrder":106,"navOrder":106,"navTitle":5,"navigation":108,"originalPath":109,"path":110,"redirect":106,"seo":111,"stem":112,"updated":113,"version":114,"__hash__":115},"docs\u002Fdocs\u002Fuser\u002Fprojectnodes.md","FlowFuse Project Nodes",{"type":7,"value":8,"toc":98},"minimark",[9,13,17,20,23,26,31,34,57,72,75,78,81,84,88],[10,11,5],"h1",{"id":12},"flowfuse-project-nodes",[14,15,16],"p",{},"Node-RED instances running within FlowFuse include a set of nodes that make it\nvery quick and easy to securely send and receive messages between different\ninstances in a team.",[14,18,19],{},"The nodes act in a similar way to the Node-RED Link nodes, but by allowing the\nlinks to extended between different instances and devices, they open up a wide\nrange of possibilities.",[14,21,22],{},"For example, a single Node-RED instance may contain a set of utility flows that\nyou want to reuse in other instances. Rather than copy the flows around, the\nProject Nodes allow you to easily call those flows and get the result back.",[14,24,25],{},"The project nodes are only available in the Enterprise tier of FlowFuse.",[27,28,30],"h3",{"id":29},"nodes","Nodes",[14,32,33],{},"There are three nodes in this collection:",[35,36,37,45,51],"ul",{},[38,39,40,44],"li",{},[41,42,43],"code",{},"Project In"," - listens for messages being broadcast by other Node-RED instances, or for\nmessages being sent just to this instance",[38,46,47,50],{},[41,48,49],{},"Project Out"," - sends messages to other Node-RED instances",[38,52,53,56],{},[41,54,55],{},"Project Call"," - sends messages to other Node-RED instances and waits for a response",[14,58,59,60,63,64,67,68,71],{},"The nodes send the whole ",[41,61,62],{},"msg"," object. Due to the way the nodes\nencode messages, there are some data types that do not get sent. For example,\nthe ",[41,65,66],{},"msg.req","\u002F",[41,69,70],{},"msg.res"," properties used by the core HTTP nodes will not be sent.\nInstead, they are temporarily removed from the message and re-attached when the\nmessage is received back.",[14,73,74],{},"Each node is configured with a topic on which it either sends or receives messages\non. This is similar in concept to MQTT topics - although the nodes do not currently\nsupport using MQTT wildcards in their topics.",[14,76,77],{},"The Project Out nodes can either broadcast messages on a topic to anyone listening,\nor they can send messages on a topic to a specific other instance.",[14,79,80],{},"The Project In nodes do the opposite - they can either listen for messages being\nbroadcast, or for messages sent directly to them.",[14,82,83],{},"The Project Call node can be used to send a message to another Project In node\nand then wait for a response, with a built-in timeout if it doesn't arrive.\nThe response is sent back using a Project Out node configured to respond to the call\nnode.",[27,85,87],{"id":86},"github","GitHub",[14,89,90,91,97],{},"The nodes are published under an Apache-2.0 license and available on ",[92,93,87],"a",{"href":94,"rel":95},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes",[96],"nofollow",".",{"title":99,"searchDepth":100,"depth":100,"links":101},"",4,[102,104],{"id":29,"depth":103,"text":30},3,{"id":86,"depth":103,"text":87},"md",null,{},true,"user\u002Fprojectnodes.md","\u002Fdocs\u002Fuser\u002Fprojectnodes",{"title":5,"description":16},"docs\u002Fuser\u002Fprojectnodes","2026-07-24 11:22:34 -0700","2.33.2","9GppYL9BH1xN5KB7aBgbC9RzHDQoT3TqXQCL3JXsj4I",[117,126,145,157],{"name":118,"order":119,"children":120},"FlowFuse User Manuals",1,[121],{"title":122,"path":123,"group":118,"groupOrder":119,"order":124,"children":125},"FlowFuse API","\u002Fdocs\u002Fapi",2,[],{"name":127,"order":100,"children":128},"FlowFuse Self-Hosted",[129,133],{"title":130,"path":131,"group":127,"groupOrder":100,"order":119,"children":132},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":134,"path":135,"group":127,"groupOrder":100,"order":103,"children":136},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[137,141],{"title":138,"path":139,"order":106,"children":140},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":142,"path":143,"order":106,"children":144},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":146,"order":147,"children":148},"Support",5,[149,153],{"title":150,"path":151,"group":146,"groupOrder":147,"order":103,"children":152},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":154,"path":155,"group":146,"groupOrder":147,"order":106,"children":156},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":158,"order":106,"children":159},"Other",[160,208,220,299,348,367,441,452],{"title":161,"path":162,"order":106,"children":163},"admin","\u002Fdocs\u002Fadmin",[164,168,180,188,192,196,200,204],{"title":165,"path":166,"order":119,"children":167},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":169,"path":170,"order":106,"children":171},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[172,176],{"title":173,"path":174,"order":106,"children":175},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":177,"path":178,"order":106,"children":179},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":181,"path":182,"order":106,"children":183},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[184],{"title":185,"path":186,"order":106,"children":187},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":189,"path":190,"order":106,"children":191},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":193,"path":194,"order":106,"children":195},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":197,"path":198,"order":106,"children":199},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":201,"path":202,"order":106,"children":203},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":205,"path":206,"order":106,"children":207},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":209,"path":210,"order":106,"children":211},"cloud","\u002Fdocs\u002Fcloud",[212,216],{"title":213,"path":214,"order":119,"children":215},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":217,"path":218,"order":106,"children":219},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":221,"path":222,"order":106,"children":223},"contribute","\u002Fdocs\u002Fcontribute",[224,227,231,235,239,243,247,255,291,295],{"title":213,"path":225,"order":119,"children":226},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":228,"path":229,"order":106,"children":230},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":232,"path":233,"order":106,"children":234},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":236,"path":237,"order":106,"children":238},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":240,"path":241,"order":106,"children":242},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":244,"path":245,"order":106,"children":246},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":248,"path":249,"order":106,"children":250},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[251],{"title":252,"path":253,"order":106,"children":254},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":256,"path":257,"order":106,"children":258},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[259,263,267,271,275,279,283,287],{"title":260,"path":261,"order":106,"children":262},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":264,"path":265,"order":106,"children":266},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":268,"path":269,"order":106,"children":270},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":272,"path":273,"order":106,"children":274},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":276,"path":277,"order":106,"children":278},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":280,"path":281,"order":106,"children":282},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":284,"path":285,"order":106,"children":286},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":288,"path":289,"order":106,"children":290},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":292,"path":293,"order":106,"children":294},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":296,"path":297,"order":106,"children":298},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":300,"path":301,"order":106,"children":302},"device-agent","\u002Fdocs\u002Fdevice-agent",[303,307,310,314,318,323],{"title":304,"path":305,"order":119,"children":306},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":130,"path":308,"order":124,"children":309},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":311,"path":312,"order":100,"children":313},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":315,"path":316,"order":147,"children":317},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":319,"path":320,"order":321,"children":322},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":324,"path":325,"order":106,"children":326},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[327,332,336,340,344],{"title":328,"path":329,"group":330,"order":119,"children":331},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":333,"path":334,"group":330,"order":124,"children":335},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":337,"path":338,"group":330,"order":103,"children":339},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":341,"path":342,"group":330,"order":100,"children":343},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":345,"path":346,"group":330,"order":147,"children":347},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":349,"path":350,"order":106,"children":351},"hardware","\u002Fdocs\u002Fhardware",[352,355,359,363],{"title":328,"path":353,"order":119,"children":354},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":356,"path":357,"order":124,"children":358},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":360,"path":361,"order":103,"children":362},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":364,"path":365,"order":103,"children":366},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":324,"path":368,"order":106,"children":369},"\u002Fdocs\u002Finstall",[370,373,377,381,401,405,409,413],{"title":328,"path":371,"order":119,"children":372},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":374,"path":375,"order":106,"children":376},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":378,"path":379,"order":106,"children":380},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":382,"path":383,"order":106,"children":384},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[385,389,393,397],{"title":386,"path":387,"order":106,"children":388},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":390,"path":391,"order":106,"children":392},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":394,"path":395,"order":106,"children":396},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":398,"path":399,"order":106,"children":400},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":402,"path":403,"order":106,"children":404},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":406,"path":407,"order":106,"children":408},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":410,"path":411,"order":106,"children":412},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":414,"path":415,"order":106,"children":416},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[417,421,425,429,433,437],{"title":418,"path":419,"order":106,"children":420},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":422,"path":423,"order":106,"children":424},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":426,"path":427,"order":106,"children":428},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":430,"path":431,"order":106,"children":432},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":434,"path":435,"order":106,"children":436},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":438,"path":439,"order":106,"children":440},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":442,"path":443,"order":106,"children":444},"migration","\u002Fdocs\u002Fmigration",[445,448],{"title":213,"path":446,"order":119,"children":447},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":449,"path":450,"order":106,"children":451},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":453,"path":454,"order":106,"children":455},"user","\u002Fdocs\u002Fuser",[456,460,464,468,472,477,481,485,489,493,497,501,513,517,521,525,527,531,535,539,543,547,551,555,559,563,566,570],{"title":457,"path":458,"order":119,"children":459},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":461,"path":462,"order":119,"children":463},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":465,"path":466,"order":124,"children":467},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":469,"path":470,"order":124,"children":471},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":473,"path":474,"order":475,"children":476},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":478,"path":479,"order":106,"children":480},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":482,"path":483,"order":106,"children":484},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":486,"path":487,"order":106,"children":488},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":490,"path":491,"order":106,"children":492},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":494,"path":495,"order":106,"children":496},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":498,"path":499,"order":106,"children":500},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":502,"path":503,"order":106,"children":504},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[505,509],{"title":506,"path":507,"order":106,"children":508},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":510,"path":511,"order":106,"children":512},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":514,"path":515,"order":106,"children":516},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":518,"path":519,"order":106,"children":520},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":522,"path":523,"order":106,"children":524},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":5,"path":110,"order":106,"children":526},[],{"title":528,"path":529,"order":106,"children":530},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":532,"path":533,"order":106,"children":534},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":536,"path":537,"order":106,"children":538},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":540,"path":541,"order":106,"children":542},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":544,"path":545,"order":106,"children":546},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":548,"path":549,"order":106,"children":550},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":552,"path":553,"order":106,"children":554},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":556,"path":557,"order":106,"children":558},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":560,"path":561,"order":106,"children":562},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":292,"path":564,"order":106,"children":565},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":567,"path":568,"order":106,"children":569},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":571,"path":572,"order":106,"children":573},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546045048]