[{"data":1,"prerenderedAt":1246},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fnode-red-guide\u002Fpatterns\u002Fhandling-data\u002F":3,"featureCatalog":295,"docs-nav":700},{"id":4,"title":5,"body":6,"description":19,"editUrl":284,"extension":285,"layout":286,"meta":287,"navGroup":286,"navGroupOrder":286,"navOrder":288,"navTitle":5,"navigation":289,"originalPath":286,"path":290,"redirect":286,"seo":291,"stem":292,"updated":293,"version":286,"__hash__":294},"docs\u002Fdocs\u002Fnode-red-guide\u002Fpatterns\u002Fhandling-data.md","Handling data",{"type":7,"value":8,"toc":280},"minimark",[9,13,20,27],[10,11,5],"h1",{"id":12},"handling-data",[14,15,16],"p",{},[17,18,19],"strong",{},"Handling data — classify what you've got, then pick your methods",[14,21,22,23,26],{},"A flow's data isn't one thing. First ",[17,24,25],{},"classify"," each signal — by shape, purpose, and direction — then select the handling methods each kind needs. Building a flow you'll usually reach for more than one: separate the paths, pace the flow, hold state in context, manage config. Start in the first tab; the rest are the methods you choose from.",[28,29,30,122,156,190,240],"guide-tabs",{},[31,32,34,45,48,53,77,82,88,108,113,116],"guide-tab",{"label":33},"Classify the data",[14,35,36,39,40,44],{},[17,37,38],{},"Know what kind of data you're handling"," — before you pick any method, name each signal by its shape, its purpose, and its direction. What a signal ",[41,42,43],"em",{},"is"," decides how you move it, how fast, and where it's stored. Mixing kinds — and polling everything at the fastest rate — is what creates load a controller can't sustain.",[14,46,47],{},"Every point you touch is some combination of the three:",[14,49,50],{},[17,51,52],{},"By shape — is it an event or a stream?",[54,55,56,67],"ul",{},[57,58,59,62,63,66],"li",{},[17,60,61],{},"Event"," — something happened at a moment: a button press, a state change, a fault, a batch complete. Discrete and irregular, and each one matters on its own. You handle it ",[41,64,65],{},"when it fires"," — you don't poll for it.",[57,68,69,72,73,76],{},[17,70,71],{},"Stream"," — a continuous series of readings sampled on a clock: temperature, flow, level, vibration. Regular and high-volume, where the latest value usually matters more than any single earlier one. You read it ",[41,74,75],{},"at a cadence"," and often only keep the trend.",[14,78,79],{},[17,80,81],{},"By purpose — what is the value for?",[83,84],"flow-diagram",{":edges":85,":nodes":86,"align":87},"[{\"from\":\"src\",\"to\":\"telemetry\"},{\"from\":\"src\",\"to\":\"control\"},{\"from\":\"src\",\"to\":\"config\"}]","[{\"id\":\"src\",\"label\":\"a signal\",\"sub\":\"event or stream\",\"accent\":\"slate\",\"col\":1,\"row\":2},{\"id\":\"telemetry\",\"label\":\"Telemetry\",\"sub\":\"observe & trend · latency-tolerant\",\"accent\":\"green\",\"col\":2,\"row\":1},{\"id\":\"control\",\"label\":\"Control\",\"sub\":\"drives a decision · time-critical\",\"accent\":\"red\",\"col\":2,\"row\":2},{\"id\":\"config\",\"label\":\"Config\",\"sub\":\"shapes the app · written rarely\",\"accent\":\"slate\",\"col\":2,\"row\":3}]","left",[54,89,90,96,102],{},[57,91,92,95],{},[17,93,94],{},"Telemetry"," — readings you observe and trend. Continuous and latency-tolerant: a second late only moves a timestamp.",[57,97,98,101],{},[17,99,100],{},"Control"," — a value that drives a decision or an actuator. Small and time-critical: a second late changes an outcome.",[57,103,104,107],{},[17,105,106],{},"Config"," — a setting that shapes how the app runs. Written rarely, read often.",[14,109,110],{},[17,111,112],{},"By direction — read or write?",[14,114,115],{},"Reading a value out of a device and writing one back into it are not the same cost or risk. Writes touch the process; treat them with more care and a tighter path than the reads you take for observation.",[14,117,118,121],{},[17,119,120],{},"Put it together"," — for each point, ask: event or stream? Does a delay change a decision or only a timestamp? Read or write? Those three answers set its rate, its path, and its store — and point you at the methods in the next tabs. The common mistake is treating every point as one population and polling all of it at the fastest rate; usually only a handful genuinely need the fast path, and the rest just starve the ones that do.",[31,123,125,131,137,141,144,150],{"label":124},"Separate the paths",[14,126,127,130],{},[17,128,129],{},"Telemetry one way, control another"," — give each kind its own route so the fast path never inherits the slow one's load.",[14,132,133,136],{},[41,134,135],{},"Select when — a flow carries both telemetry and control (from Classify)."," This split is the foundational method; the pacing and storage choices all follow from it.",[83,138],{":edges":139,":nodes":140,"align":87},"[{\"from\":\"plc\",\"to\":\"nodered\",\"label\":\"reads\"},{\"from\":\"nodered\",\"to\":\"broker\",\"label\":\"live\"},{\"from\":\"nodered\",\"to\":\"ctrl\",\"label\":\"control write\",\"accent\":\"red\"},{\"from\":\"nodered\",\"to\":\"sqldb\",\"label\":\"history, batched\"}]","[{\"id\":\"plc\",\"label\":\"PLC\",\"sub\":\"reads · writes\",\"col\":1,\"row\":2},{\"id\":\"nodered\",\"label\":\"Node-RED\",\"sub\":\"splits by kind\",\"accent\":\"slate\",\"col\":2,\"row\":2},{\"id\":\"broker\",\"label\":\"Broker\",\"sub\":\"live telemetry · minimal set\",\"accent\":\"teal\",\"col\":3,\"row\":1},{\"id\":\"ctrl\",\"label\":\"actuator \u002F setpoint\",\"sub\":\"control · lean, dedicated\",\"accent\":\"red\",\"col\":3,\"row\":2},{\"id\":\"sqldb\",\"label\":\"SQL database\",\"sub\":\"history telemetry · batched\",\"accent\":\"green\",\"col\":3,\"row\":3}]",[14,142,143],{},"Telemetry and control have different timing needs. Share one route and one protocol, and the fast, time-critical path inherits the load of the slow, high-volume one — a burst of telemetry can delay a control decision.",[14,145,146,149],{},[17,147,148],{},"How"," — buffer telemetry in the source and pull it at its real cadence, timestamped at acquisition, then batch it into history. Keep the control path to the minimum tag set on a dedicated, faster route. Reads you take for observation and writes that touch the process never share a lane.",[14,151,152,155],{},[17,153,154],{},"The payoff"," — the fast path stays lean no matter how much telemetry flows, and each kind can be paced and stored on its own terms.",[31,157,159,165,171,176,179,184],{"label":158},"Batch \u002F rate-limit",[14,160,161,164],{},[17,162,163],{},"Pace a fast source into a slow sink"," — add the brake that a fast-in \u002F slow-out path doesn't have on its own.",[14,166,167,170],{},[41,168,169],{},"Select when — a fast or bursty source (a stream, or high-rate events) feeds a slower sink."," This is the #1 event-driven failure, so reach for it whenever input can outrun output.",[83,172],{":edges":173,":nodes":174,":legend":175},"[{\"from\":\"mqtt\",\"to\":\"pace\",\"label\":\"many msg\u002Fs\",\"accent\":\"indigo\",\"dashed\":true},{\"from\":\"pace\",\"to\":\"db\",\"label\":\"steady rate\"}]","[{\"id\":\"mqtt\",\"label\":\"MQTT in\",\"sub\":\"fast · bursty\",\"accent\":\"teal\",\"col\":1},{\"id\":\"pace\",\"label\":\"rate limit \u002F batch\",\"sub\":\"delay · queue · drop\",\"col\":2},{\"id\":\"db\",\"label\":\"DB write\",\"sub\":\"slow · the bottleneck\",\"accent\":\"green\",\"col\":3}]","[{\"line\":\"indigo\",\"dashed\":true,\"label\":\"fast in\"},{\"line\":\"neutral\",\"label\":\"paced out\"}]",[14,177,178],{},"A fast source (an MQTT topic, a tight poll) feeding a slow sink (a DB write, a remote API) has no natural brake. Messages pile up in memory faster than they drain, and the runtime eventually runs out of heap and dies.",[14,180,181,183],{},[17,182,148],{}," — a delay node in rate-limit mode; batching (join into chunks), which also cuts per-write overhead; or dropping stale readings when only the latest matters. Watch heap and the node's queue — if it only grows, you have backpressure, not a spike.",[14,185,186,189],{},[17,187,188],{},"The tell"," — a backend holding a live connection (an MQTT subscription) can't be pooled away; pace at the source or offload the heavy work.",[31,191,193,199,205,210,213,234],{"label":192},"Hold state in context",[14,194,195,198],{},[17,196,197],{},"One place for state"," — keep a logical object in context instead of threading it through wires.",[14,200,201,204],{},[41,202,203],{},"Select when — you're passing the same object through many nodes just to move it, or state must survive a restart."," Messages are verbs; context is nouns.",[83,206],{":edges":207,":nodes":208,":legend":209},"[\"event>node\",{\"from\":\"node\",\"to\":\"store\",\"label\":\"write\"},{\"from\":\"store\",\"to\":\"reader\",\"label\":\"read the one key it needs\",\"dashed\":true}]","[{\"id\":\"event\",\"label\":\"event\",\"sub\":\"a reading arrived\",\"col\":1,\"row\":1},{\"id\":\"node\",\"label\":\"node\",\"sub\":\"recompute\",\"col\":2,\"row\":1,\"accent\":\"indigo\"},{\"id\":\"store\",\"label\":\"context store\",\"sub\":\"assets.\u003Cid>, oee.line1\",\"col\":3,\"row\":1,\"accent\":\"green\"},{\"id\":\"reader\",\"label\":\"another node\",\"sub\":\"reads one key\",\"col\":2,\"row\":2}]","[{\"line\":\"neutral\",\"label\":\"write \u002F flow\"},{\"line\":\"neutral\",\"dashed\":true,\"label\":\"read\"}]",[14,211,212],{},"Context is shared memory with a defined scope. It holds a logical object in one place instead of threading it through fifteen nodes just to carry it — wire gymnastics to avoid storing a value is the real anti-pattern.",[14,214,215,217,218,221,222,225,226,229,230,233],{},[17,216,148],{}," — store the object once under a namespaced key at the narrowest scope that works. ",[17,219,220],{},"Node"," scope is private to that one node, so anything ",[41,223,224],{},"shared"," between nodes starts at ",[17,227,228],{},"flow"," scope (then ",[17,231,232],{},"global"," only if it must cross tabs). Each node reads the one key it needs, and a persistent store holds anything that must survive a restart.",[14,235,236,239],{},[17,237,238],{},"Watch out"," — one writer per key, serialize concurrent updates, and keep enough on the wire to stay debuggable.",[31,241,242,248,254,259,269,274],{"label":106},[14,243,244,247],{},[17,245,246],{},"Static in env vars, runtime in persisted context"," — decide which kind each setting is, then store it accordingly.",[14,249,250,253],{},[41,251,252],{},"Select when — the flow has settings."," The question for each one: does it change per environment at deploy, or while running, by a user?",[83,255],{":edges":256,":nodes":257,":groups":258},"[{\"from\":\"ui\",\"to\":\"store\",\"label\":\"intent\"},\"store>flowrun\"]","[{\"id\":\"broker\",\"label\":\"BROKER_HOST\",\"sub\":\"baked, read-only — edit env + redeploy\",\"col\":1,\"row\":1,\"accent\":\"slate\"},{\"id\":\"ui\",\"label\":\"UI edits\",\"sub\":\"a form or button\",\"col\":2,\"row\":1,\"accent\":\"indigo\"},{\"id\":\"store\",\"label\":\"context store\",\"sub\":\"live config\",\"col\":3,\"row\":1,\"accent\":\"green\"},{\"id\":\"flowrun\",\"label\":\"flow at run\",\"sub\":\"reads current\",\"col\":4,\"row\":1}]","[{\"label\":\"Env var — set at deploy\",\"nodes\":[\"broker\"]},{\"label\":\"Persisted context — changed by a user\",\"accent\":\"green\",\"nodes\":[\"ui\",\"store\",\"flowrun\"]}]",[14,260,261,264,265,268],{},[17,262,263],{},"Static config"," changes per environment and is set at deploy — broker host, DB connection. It's resolved at deploy time and read-only to the running flow. ",[17,266,267],{},"Runtime config"," changes while running, by a user, with no redeploy.",[14,270,271,273],{},[17,272,148],{}," — keep static config in env vars or a config node; put user-editable config in persisted context (or a config file), edited through the UI via an intent message and read by the flow at execution time.",[14,275,276,279],{},[17,277,278],{},"The rule"," — if a value would ever be changed through a button or form, it is not an env var.",{"title":281,"searchDepth":282,"depth":282,"links":283},"",4,[],"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fwebsite\u002Fedit\u002Fmain\u002Fnuxt\u002Fcontent-guides\u002Fnode-red-guide\u002Fpatterns\u002Fhandling-data.md","md",null,{},2,true,"\u002Fdocs\u002Fnode-red-guide\u002Fpatterns\u002Fhandling-data",{"title":5,"description":19},"docs\u002Fnode-red-guide\u002Fpatterns\u002Fhandling-data","2026-09-03 18:30:59 +0200","zLBHBJ9bTZ3wiDY7_A9GagpKrkVzAgl0MzzS_MCvaIc",{"id":296,"extension":297,"meta":298,"sections":299,"stem":698,"__hash__":699},"featureCatalog\u002Ffeature-catalog.yml","yml",{},[300,361,462,524,601,680],{"id":301,"title":302,"features":303},"ai-automation","AI & Automation",[304,314,324,334,340,350,356],{"id":305,"title":306,"description":307,"docsLink":308,"changelog":309,"tiers":313},"flowfuse-expert-ai","FlowFuse Expert AI","Build industrial apps with agents, and query the state of the factory with an agent. Adapt your current hardware and machines so agentic work can be done against them, without ripping and replacing what's already on the plant floor.","\u002Fdocs\u002Fuser\u002Fexpert\u002F",[310],{"url":311,"release":312},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner\u002F","2.28",{"edge":289,"hub":289,"fleet":289},{"id":315,"title":316,"description":317,"docsLink":318,"changelog":319,"subfeature":289,"showOnPricing":322,"tiers":323},"flowfuse-expert-support-mode","Support Mode","Chat-based assistance for FlowFuse and Node-RED, including Node-RED instance management through natural language.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F#support-mode",[320],{"url":321,"release":312},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context\u002F",false,{"edge":289,"hub":289,"fleet":289},{"id":325,"title":326,"description":327,"docsLink":328,"changelog":329,"subfeature":289,"showOnPricing":322,"tiers":333},"flowfuse-expert-application-building","Application Building","Describe what you want to build and FlowFuse Expert assembles it on your workspace, adding tabs, wiring nodes, and configuring properties.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F",[330],{"url":331,"release":332},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building\u002F","2.30",{"edge":289,"hub":289,"fleet":289},{"id":335,"title":336,"description":337,"docsLink":338,"subfeature":289,"beta":289,"showOnPricing":322,"tiers":339},"flowfuse-expert-insights-mode","Insights Mode","Connects FlowFuse Expert to MCP servers in your Node-RED instances, enabling real-time data queries and actions through a single chat interface.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F#insights-mode",{"edge":289,"hub":289,"fleet":289},{"id":341,"title":342,"description":343,"docsLink":344,"changelog":345,"tiers":349},"third-party-agents","Connect Your Own AI Agent","Point the AI agent your company already uses at FlowFuse, so it can query your teams and instances and build Node-RED applications, with you deciding which teams it reaches and whether it can make changes.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fthird-party-agents\u002F",[346],{"url":347,"release":348},"\u002Fchangelog\u002F2026\u002F08\u002Fconnect-your-own-ai-agent\u002F","3.0",{"edge":289,"hub":289,"fleet":289},{"id":351,"title":352,"description":353,"docsLink":354,"tiers":355},"mcp-servers","Agentic Operations","Expose your Node-RED flows as tools an AI agent can call directly, so agents can query the state of the factory or trigger actions without custom integration work.","\u002Fnode-red\u002Fflowfuse\u002Fmcp\u002F",{"edge":289,"hub":289,"fleet":289},{"id":357,"title":358,"description":359,"tiers":360},"onnx-integration","ONNX Integration","Run trained machine learning models directly in your flows, including on edge hardware, without sending data out to an external inference service.",{"edge":289,"hub":289,"fleet":289},{"id":362,"title":363,"features":364},"build","Build",[365,371,377,387,393,399,403,409,415,423,429,433,437,446,454],{"id":366,"title":367,"description":368,"docsLink":369,"tiers":370},"edge-development","Edge Development","Develop and test Node-RED flows directly on edge devices with a remote editor proxy.","\u002Fdocs\u002Fdevice-agent\u002Fquickstart\u002F",{"edge":289,"hub":322,"fleet":289},{"id":372,"title":373,"description":374,"docsLink":375,"tiers":376},"private-npm-registry","Custom Node-RED Nodes","Create and manage your own private npm registry for Node-RED nodes, so you can share custom nodes across your team and devices without publishing them publicly.","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages\u002F",{"edge":289,"hub":289,"fleet":289},{"id":378,"title":379,"description":380,"docsLink":381,"changelog":382,"tiers":386},"flowfuse-tables","FlowFuse Tables","A managed PostgreSQL database for every application, so you can store and query structured data without standing up and maintaining your own database.","\u002Fdocs\u002Fuser\u002Fff-tables\u002F",[383],{"url":384,"release":385},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation\u002F","2.33",{"edge":289,"hub":289,"fleet":289},{"id":388,"title":389,"description":390,"docsLink":391,"tiers":392},"persistent-files","File Storage","Store and retrieve files from your Node-RED flows, with automatic replication and backup across your devices and hosted instances.","\u002Fdocs\u002Finstall\u002Ffile-storage\u002F",{"edge":289,"hub":289,"fleet":289},{"id":394,"title":395,"description":396,"docsLink":397,"showOnPricing":322,"tiers":398},"persistent-context","Persistent Context","In-memory values defined in a Node-RED flow persist across project restarts and upgrades.","\u002Fdocs\u002Fuser\u002Fpersistent-context\u002F",{"edge":289,"hub":289,"fleet":289},{"id":400,"title":401,"showOnPricing":322,"tiers":402},"static-assets","Static Assets",{"edge":289,"hub":289,"fleet":289},{"id":404,"title":405,"description":406,"docsLink":407,"tiers":408},"team-library","Team Library","Set up standard nodes and flows that can be shared with all team members across your organisation.","\u002Fdocs\u002Fuser\u002Fshared-library\u002F",{"edge":289,"hub":289,"fleet":289},{"id":410,"title":411,"description":412,"docsLink":413,"tiers":414},"personalised-multi-user-dashboards","Personalised Multi-User Dashboards","Build applications that provide unique data to each logged-in user using personalised multi-user dashboards.","https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fmulti-tenancy.html",{"edge":289,"hub":289,"fleet":289},{"id":416,"title":417,"description":418,"changelog":419,"subfeature":289,"showOnPricing":322,"tiers":422},"dashboards-view","Dashboards View","Browse and open every dashboard across your team from a dedicated Dashboards view, at both team and application level, without leaving FlowFuse.",[420],{"url":421,"release":385},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards\u002F",{"edge":289,"hub":289,"fleet":289},{"id":424,"title":425,"description":426,"docsLink":427,"tiers":428},"blueprints-converge","Blueprints","Ready-made starting points for your apps, from cross-team Converge templates to OT and IT specific blueprints.","\u002Fdocs\u002Fuser\u002Fconcepts\u002F#blueprint",{"edge":289,"hub":289,"fleet":289},{"id":430,"title":431,"subfeature":289,"showOnPricing":322,"tiers":432},"blueprints-ot-apps","Blueprints - OT APPS",{"edge":289,"hub":322,"fleet":289},{"id":434,"title":435,"subfeature":289,"showOnPricing":322,"tiers":436},"blueprints-it-apps","Blueprints - IT APPS",{"edge":322,"hub":289,"fleet":322},{"id":438,"title":439,"description":440,"changelog":441,"showOnPricing":322,"tiers":445},"immersive-editor-snapshots","Snapshot Details in Immersive Editor","View and manage snapshot details directly inside the immersive editor without leaving your editing session.",[442],{"url":443,"release":444},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor\u002F","2.29",{"edge":289,"hub":289,"fleet":289},{"id":447,"title":448,"description":449,"changelog":450,"showOnPricing":322,"tiers":453},"immersive-editor-drawer","Customisable Immersive Editor Drawer","Pin, move, resize, or full-screen the immersive editor drawer. Your preferences are remembered between sessions.",[451],{"url":452,"release":332},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer\u002F",{"edge":289,"hub":289,"fleet":289},{"id":455,"title":456,"description":457,"changelog":458,"showOnPricing":322,"tiers":461},"embedded-editor-tab-title","Embedded Editor Browser Tab Title","The browser tab title updates to reflect the active Node-RED canvas tab when working in the embedded editor.",[459],{"url":460,"release":444},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title\u002F",{"edge":289,"hub":289,"fleet":289},{"id":463,"title":464,"features":465},"deploy","Deploy",[466,472,481,487,493,499,505,511,516],{"id":467,"title":468,"description":469,"docsLink":470,"tiers":471},"hosted-instances","Cloud Instances","Run Node-RED instances managed and hosted by FlowFuse.","\u002Fdocs\u002Fuser\u002Fintroduction\u002F#creating-a-node-red-instance",{"edge":289,"hub":289,"fleet":289},{"id":473,"title":474,"description":475,"docsLink":476,"changelog":477,"tiers":480},"edge-devices","Edge Instances","Deploy and mange your Node-RED instances on edge PLCs and gateways, with full visibility and control from the cloud.","\u002Fdocs\u002Fdevice-agent\u002Fintroduction\u002F",[478],{"url":479,"release":312},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options\u002F",{"edge":289,"hub":322,"fleet":289},{"id":482,"title":483,"description":484,"docsLink":485,"tiers":486},"custom-hostnames","Custom Hostnames","Access your Node-RED application via your own domain name.","\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",{"edge":322,"hub":289,"fleet":322},{"id":488,"title":489,"description":490,"docsLink":491,"tiers":492},"mqtt-broker","MQTT Broker","Manage and create MQTT clients to transport data for efficient messaging and communication within your applications.","\u002Fdocs\u002Fuser\u002Fteambroker\u002F",{"edge":289,"hub":322,"fleet":289},{"id":494,"title":495,"description":496,"docsLink":497,"showOnPricing":322,"tiers":498},"project-nodes","Project Nodes aka seamless project comms","FlowFuse Project Nodes enable the passing of data and messages between your Node-RED projects.","\u002Fdocs\u002Fuser\u002Fprojectnodes\u002F",{"edge":289,"hub":289,"fleet":289},{"id":500,"title":501,"description":502,"docsLink":503,"tiers":504},"devops-pipelines","DevOps Pipelines","Set up different environments for development, testing, and production Node-RED instances to support a full software delivery lifecycle.","\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F",{"edge":289,"hub":289,"fleet":289},{"id":506,"title":507,"description":508,"docsLink":509,"tiers":510},"git-integration","Git Integration","Back up your flows to a remote Git repository through a DevOps Pipeline. Supports GitHub and Azure DevOps repositories.","\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F#git-repository-stage",{"edge":322,"hub":289,"fleet":322},{"id":512,"title":513,"description":514,"docsLink":509,"subfeature":289,"showOnPricing":322,"tiers":515},"git-integration-github","GitHub","Push and pull snapshots to GitHub repositories through DevOps Pipeline Git Stages.",{"edge":322,"hub":289,"fleet":322},{"id":517,"title":518,"description":519,"docsLink":509,"changelog":520,"subfeature":289,"showOnPricing":322,"tiers":523},"git-integration-azure","Azure DevOps","Push and pull snapshots to Azure DevOps repositories through DevOps Pipeline Git Stages.",[521],{"url":522,"release":444},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops\u002F",{"edge":322,"hub":289,"fleet":322},{"id":525,"title":526,"features":527},"operate-maintain","Operate & Maintain",[528,534,540,545,553,557,561,566,572,578,583,589,593,597],{"id":529,"title":530,"description":531,"docsLink":532,"tiers":533},"snapshots","Snapshots & Version History","Automatic snapshots on remote devices and hosted instances, plus a full version history timeline so you can roll back to any prior state.","\u002Fdocs\u002Fuser\u002Fsnapshots\u002F",{"edge":289,"hub":289,"fleet":289},{"id":535,"title":536,"description":537,"docsLink":538,"subfeature":289,"showOnPricing":322,"tiers":539},"auto-snapshot-remote","Auto Snapshot (Remote)","Automatically capture a snapshot every time a remote instance is deployed, so you always have a recoverable history of what was running on each device.","\u002Fdocs\u002Fuser\u002Fsnapshots\u002F#auto-snapshots",{"edge":289,"hub":289,"fleet":289},{"id":541,"title":542,"description":543,"docsLink":538,"subfeature":289,"showOnPricing":322,"tiers":544},"auto-snapshot-hosted","Auto Snapshot (Hosted)","Automatically capture a snapshot every time a hosted instance is deployed, so you always have a recoverable history of what was running.",{"edge":289,"hub":289,"fleet":289},{"id":546,"title":547,"description":548,"changelog":549,"subfeature":289,"showOnPricing":322,"tiers":552},"snapshot-comparison","Snapshot Comparison","Compare two snapshots side-by-side with a navigable diff view. Step through every changed, added, or deleted node and see property and code diffs.",[550],{"url":551,"release":444},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer\u002F",{"edge":289,"hub":289,"fleet":289},{"id":554,"title":555,"subfeature":289,"showOnPricing":322,"tiers":556},"version-history-timeline","Version History Timeline",{"edge":289,"hub":289,"fleet":289},{"id":558,"title":559,"tiers":560},"unlimited-workflow-executions","Unlimited Workflow Executions",{"edge":289,"hub":289,"fleet":289},{"id":562,"title":563,"description":564,"tiers":565},"device-fleet-updates","Device Fleet Updates","Connect to edge devices to quickly assess and update logic. Debug one device and roll out improvements to your fleet in minutes, securely without requiring full device access for your whole organisation.",{"edge":289,"hub":322,"fleet":289},{"id":567,"title":568,"description":569,"docsLink":570,"tiers":571},"device-group-management","Device Group Management","Logically group devices assigned to an application and integrate device groups into your DevOps Pipeline for coordinated fleet updates.","\u002Fdocs\u002Fuser\u002Fdevice-groups\u002F",{"edge":289,"hub":322,"fleet":289},{"id":573,"title":574,"description":575,"docsLink":576,"tiers":577},"high-availability","High Availability","Leverage horizontal scaling for reliable and scalable processing of your data through Node-RED.","\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F",{"edge":322,"hub":289,"fleet":322},{"id":579,"title":580,"description":581,"tiers":582},"performance-monitoring","Performance Monitoring & Alerts","Track CPU, memory, and event loop performance across your instances and devices, with email alerts when something needs your attention.",{"edge":289,"hub":289,"fleet":289},{"id":584,"title":585,"description":586,"docsLink":587,"subfeature":289,"showOnPricing":322,"tiers":588},"instance-monitoring","Instance Monitoring","Enable alerts to be sent via email when your Node-RED instances encounter issues.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#alerts",{"edge":289,"hub":289,"fleet":289},{"id":590,"title":591,"subfeature":289,"showOnPricing":322,"tiers":592},"email-alerts","Email Alerts",{"edge":289,"hub":289,"fleet":289},{"id":594,"title":595,"showOnPricing":322,"tiers":596},"api-debug-length-limit","API\u002FDebug Length Limit",{"edge":289,"hub":289,"fleet":289},{"id":598,"title":599,"tiers":600},"protected-instances","Protected Instances",{"edge":322,"hub":289,"fleet":322},{"id":602,"title":603,"features":604},"govern-secure","Govern and Secure",[605,614,620,626,631,637,643,649,657,663,669,675],{"id":606,"title":607,"description":608,"docsLink":609,"changelog":610,"tiers":613},"single-sign-on","Single Sign-On (SSO)","Configure FlowFuse to work with your own SSO provider, allowing users to access FlowFuse with a single set of login credentials.","\u002Fdocs\u002Fadmin\u002Fsso\u002F",[611],{"url":612,"release":385},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups\u002F",{"edge":289,"hub":289,"fleet":289},{"id":615,"title":616,"description":617,"docsLink":618,"tiers":619},"two-factor-authentication","Two-Factor Authentication","Two-factor authentication adds an extra layer of security to your FlowFuse account.","\u002Fdocs\u002Fuser\u002Fuser-settings\u002F#two-factor-authentication",{"edge":289,"hub":289,"fleet":289},{"id":621,"title":622,"description":623,"docsLink":624,"tiers":625},"certified-nodes-it","Certified Nodes - IT","IT certified node bundle includes: Redis, MQTT, HTTP Request, AI nodes (Gemini, Claude, ChatGPT, Ollama), MCP Server","\u002Fblog\u002F2025\u002F07\u002Fcertified-nodes-v2\u002F",{"edge":322,"hub":289,"fleet":289},{"id":627,"title":628,"description":629,"tiers":630},"certified-nodes-ot","Certified OT Connections - OPC-UA, Modbus, etc.","OT certified node bundle includes: OPC-UA, Modbus TCP & RTU, RTSP, EtherNet\u002FIP, AI nodes (Gemini, Claude, ChatGPT, Ollama), MCP Server",{"edge":289,"hub":322,"fleet":322},{"id":632,"title":633,"description":634,"docsLink":635,"tiers":636},"audit-log","Audit Log","Keep track of everything going on in your Node-RED instances and FlowFuse. Audit Logs provide details on what actions have taken place, when they happened, and who did them.","\u002Fdocs\u002Fuser\u002Flogs\u002F#audit-log",{"edge":289,"hub":289,"fleet":289},{"id":638,"title":639,"description":640,"docsLink":641,"tiers":642},"role-based-access-control","Role-Based Access Control","Control who can do what at both the team and application level, from viewers to admins.","\u002Fdocs\u002Fuser\u002Frole-based-access-control\u002F",{"edge":289,"hub":289,"fleet":289},{"id":644,"title":645,"description":646,"docsLink":647,"subfeature":289,"showOnPricing":322,"tiers":648},"application-level-rbac","Application-Level RBAC","Fine-grained access control per application, allowing team members to have different permission levels across different applications without requiring separate teams.","\u002Fdocs\u002Fuser\u002Frole-based-access-control\u002F#application-level-rbac",{"edge":289,"hub":289,"fleet":289},{"id":650,"title":651,"description":652,"changelog":653,"subfeature":289,"showOnPricing":322,"tiers":656},"scoped-personal-access-tokens","Scoped Personal Access Tokens","Restrict a Personal Access Token to specific teams, limit it to read-only operations, or control whether it carries admin privileges.",[654],{"url":655,"release":385},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats\u002F",{"edge":289,"hub":289,"fleet":289},{"id":658,"title":659,"description":660,"docsLink":661,"showOnPricing":322,"tiers":662},"team-members","Team Members","Invite multiple team members to collaborate on the same Node-RED flows.","\u002Fdocs\u002Fuser\u002Fteam\u002F#teams",{"edge":289,"hub":289,"fleet":289},{"id":664,"title":665,"description":666,"docsLink":667,"showOnPricing":322,"tiers":668},"endpoint-security","Endpoint Security","Secure HTTP endpoints for hosted Node-RED instances using FlowFuse credentials.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#security",{"edge":289,"hub":289,"fleet":289},{"id":670,"title":671,"description":672,"docsLink":673,"tiers":674},"baa-for-hipaa","BAA for HIPAA","FlowFuse can sign a Business Associate Agreement to ensure proper safeguarding of protected health information handled on your behalf.","\u002Fhandbook\u002Fsales\u002Fsubscription-agreement-1.6\u002F",{"edge":322,"hub":289,"fleet":322},{"id":676,"title":677,"description":678,"tiers":679},"sbom","Software Bill of Materials","A complete list of all software components used in your Node-RED instances and hosted applications, including version numbers and license information.",{"edge":322,"hub":289,"fleet":322},{"id":681,"title":682,"features":683},"support","Support",[684,689,693],{"id":685,"title":686,"docsLink":687,"tiers":688},"installation-support","Installation Support","\u002Fdocs\u002Finstall\u002Fintroduction\u002F#do-you-need-help-installation-service",{"edge":289,"hub":289,"fleet":289},{"id":690,"title":691,"showOnPricing":322,"tiers":692},"live-chat-support","Live Chat Support",{"edge":289,"hub":289,"fleet":289},{"id":694,"title":695,"docsLink":696,"tiers":697},"enterprise-support","Enterprise Support","\u002Fdocs\u002Fpremium-support\u002F",{"edge":289,"hub":289,"fleet":289},"feature-catalog","hY0VeasLOC24bT8rw9hqj_AyHvZQSo7N2XoKRk8vk0Q",[701,788,932,1003,1016,1155,1165],{"name":702,"order":703,"children":704},"Application Guide",0,[705,756],{"title":706,"path":707,"group":702,"groupOrder":703,"order":708,"children":709},"Building FlowFuse applications","\u002Fdocs\u002Fapplication-guide",1,[710,714,726,731,747],{"title":711,"path":712,"order":708,"children":713},"Foundations","\u002Fdocs\u002Fapplication-guide\u002Ffoundations",[],{"title":715,"path":716,"order":288,"children":717},"App delivery methods","\u002Fdocs\u002Fapplication-guide\u002Fapp-delivery-methods",[718,722],{"title":719,"path":720,"order":708,"children":721},"Hardware apps","\u002Fdocs\u002Fapplication-guide\u002Fapp-delivery-methods\u002Fhardware-apps",[],{"title":723,"path":724,"order":288,"children":725},"Software apps","\u002Fdocs\u002Fapplication-guide\u002Fapp-delivery-methods\u002Fsoftware-apps",[],{"title":727,"path":728,"order":729,"children":730},"Data plane","\u002Fdocs\u002Fapplication-guide\u002Fdata-plane",3,[],{"title":732,"path":733,"order":282,"children":734},"Architectures","\u002Fdocs\u002Fapplication-guide\u002Farchitectures",[735,739,743],{"title":736,"path":737,"order":708,"children":738},"IT architectures","\u002Fdocs\u002Fapplication-guide\u002Farchitectures\u002Fit",[],{"title":740,"path":741,"order":288,"children":742},"OT architectures","\u002Fdocs\u002Fapplication-guide\u002Farchitectures\u002Fot",[],{"title":744,"path":745,"order":729,"children":746},"IIoT architectures","\u002Fdocs\u002Fapplication-guide\u002Farchitectures\u002Fiiot",[],{"title":748,"path":749,"order":750,"children":751},"Worked examples","\u002Fdocs\u002Fapplication-guide\u002Fworked-examples",5,[752],{"title":753,"path":754,"order":708,"children":755},"OEE, end to end","\u002Fdocs\u002Fapplication-guide\u002Fworked-examples\u002Foee",[],{"title":757,"path":758,"group":702,"groupOrder":703,"order":288,"children":759},"Designing Node-RED flows","\u002Fdocs\u002Fnode-red-guide",[760,763,777],{"title":711,"path":761,"order":708,"children":762},"\u002Fdocs\u002Fnode-red-guide\u002Ffoundations",[],{"title":764,"path":765,"order":288,"children":766},"Patterns","\u002Fdocs\u002Fnode-red-guide\u002Fpatterns",[767,771,773],{"title":768,"path":769,"order":708,"children":770},"Design patterns","\u002Fdocs\u002Fnode-red-guide\u002Fpatterns\u002Fdesign-patterns",[],{"title":5,"path":290,"order":288,"children":772},[],{"title":774,"path":775,"order":729,"children":776},"Good form","\u002Fdocs\u002Fnode-red-guide\u002Fpatterns\u002Fgood-form",[],{"title":748,"path":778,"order":729,"children":779},"\u002Fdocs\u002Fnode-red-guide\u002Fworked-examples",[780,784],{"title":781,"path":782,"order":708,"children":783},"OEE - Edge Aggregator","\u002Fdocs\u002Fnode-red-guide\u002Fworked-examples\u002Foee-edge-aggregator",[],{"title":785,"path":786,"order":288,"children":787},"OEE - Central Dashboard","\u002Fdocs\u002Fnode-red-guide\u002Fworked-examples\u002Foee-central-dashboard",[],{"name":789,"order":708,"children":790},"FlowFuse User Manuals",[791,916,920],{"title":792,"path":793,"group":789,"groupOrder":708,"order":708,"children":794,"link":322},"Using FlowFuse","\u002Fdocs\u002Fuser",[795,799,803,807,811,816,820,823,827,831,834,838,854,858,862,866,870,873,877,881,885,889,893,896,900,904,908,912],{"title":796,"path":797,"order":708,"children":798},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":800,"path":801,"order":708,"children":802},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":804,"path":805,"order":288,"children":806},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":808,"path":809,"order":288,"children":810},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":812,"path":813,"order":814,"children":815},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":817,"path":818,"order":286,"children":819},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":483,"path":821,"order":286,"children":822},"\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":824,"path":825,"order":286,"children":826},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":828,"path":829,"order":286,"children":830},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":501,"path":832,"order":286,"children":833},"\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":835,"path":836,"order":286,"children":837},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":839,"path":840,"order":286,"children":841},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[842,846,850],{"title":843,"path":844,"order":286,"children":845},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":847,"path":848,"order":286,"children":849},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":851,"path":852,"order":286,"children":853},"Connect Your Own Agent","\u002Fdocs\u002Fuser\u002Fexpert\u002Fthird-party-agents",[],{"title":855,"path":856,"order":286,"children":857},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":859,"path":860,"order":286,"children":861},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":863,"path":864,"order":286,"children":865},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":867,"path":868,"order":286,"children":869},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":379,"path":871,"order":286,"children":872},"\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":874,"path":875,"order":286,"children":876},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":878,"path":879,"order":286,"children":880},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":882,"path":883,"order":286,"children":884},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":886,"path":887,"order":286,"children":888},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":890,"path":891,"order":286,"children":892},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":639,"path":894,"order":286,"children":895},"\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":897,"path":898,"order":286,"children":899},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":901,"path":902,"order":286,"children":903},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":905,"path":906,"order":286,"children":907},"Team Broker","\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":909,"path":910,"order":286,"children":911},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":913,"path":914,"order":286,"children":915},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],{"title":917,"path":918,"group":789,"groupOrder":708,"order":288,"children":919},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"title":921,"path":922,"group":789,"groupOrder":708,"order":729,"children":923,"link":322},"Migrating a Node-RED project to FlowFuse","\u002Fdocs\u002Fmigration",[924,928],{"title":925,"path":926,"order":708,"children":927},"Introduction","\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":929,"path":930,"order":286,"children":931},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"name":933,"order":288,"children":934},"Device Agent",[935,984],{"title":933,"path":936,"group":933,"groupOrder":288,"order":708,"children":937,"link":322},"\u002Fdocs\u002Fdevice-agent",[938,942,946,971,975,979],{"title":939,"path":940,"order":708,"children":941},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":943,"path":944,"order":288,"children":945},"Quick Start","\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":947,"path":948,"group":949,"order":729,"children":950,"link":322},"Installation","\u002Fdocs\u002Fdevice-agent\u002Finstall","DeviceAgentInstallation",[951,955,959,963,967],{"title":952,"path":953,"group":949,"order":708,"children":954},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview",[],{"title":956,"path":957,"group":949,"order":288,"children":958},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":960,"path":961,"group":949,"order":729,"children":962},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":964,"path":965,"group":949,"order":282,"children":966},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":968,"path":969,"group":949,"order":750,"children":970},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":972,"path":973,"order":282,"children":974},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":976,"path":977,"order":750,"children":978},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":980,"path":981,"order":982,"children":983},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":985,"path":986,"group":933,"groupOrder":288,"order":288,"children":987,"link":322},"Hardware Guides","\u002Fdocs\u002Fhardware",[988,991,995,999],{"title":952,"path":989,"order":708,"children":990},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":992,"path":993,"order":288,"children":994},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":996,"path":997,"order":729,"children":998},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":1000,"path":1001,"order":729,"children":1002},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"name":1004,"order":729,"children":1005},"FlowFuse Cloud",[1006],{"title":1004,"path":1007,"group":1004,"groupOrder":729,"order":729,"children":1008,"link":322},"\u002Fdocs\u002Fcloud",[1009,1012],{"title":925,"path":1010,"order":708,"children":1011},"\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":1013,"path":1014,"order":286,"children":1015},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"name":1017,"order":282,"children":1018},"FlowFuse Self-Hosted",[1019,1022,1097,1109],{"title":943,"path":1020,"group":1017,"groupOrder":282,"order":708,"children":1021},"\u002Fdocs\u002Fquick-start",[],{"title":1023,"path":1024,"group":1017,"groupOrder":282,"order":288,"children":1025,"link":322},"Installing FlowFuse","\u002Fdocs\u002Finstall",[1026,1029,1033,1037,1057,1061,1065,1069],{"title":952,"path":1027,"order":708,"children":1028},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":1030,"path":1031,"order":286,"children":1032},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":1034,"path":1035,"order":286,"children":1036},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":1038,"path":1039,"order":286,"children":1040},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[1041,1045,1049,1053],{"title":1042,"path":1043,"order":286,"children":1044},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":1046,"path":1047,"order":286,"children":1048},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":1050,"path":1051,"order":286,"children":1052},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":1054,"path":1055,"order":286,"children":1056},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":1058,"path":1059,"order":286,"children":1060},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":1062,"path":1063,"order":286,"children":1064},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":1066,"path":1067,"order":286,"children":1068},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":1070,"path":1071,"order":286,"children":1072},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[1073,1077,1081,1085,1089,1093],{"title":1074,"path":1075,"order":286,"children":1076},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":1078,"path":1079,"order":286,"children":1080},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":1082,"path":1083,"order":286,"children":1084},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":1086,"path":1087,"order":286,"children":1088},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":1090,"path":1091,"order":286,"children":1092},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":1094,"path":1095,"order":286,"children":1096},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":1098,"path":1099,"group":1017,"groupOrder":282,"order":729,"children":1100},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[1101,1105],{"title":1102,"path":1103,"order":286,"children":1104},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":1106,"path":1107,"order":286,"children":1108},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"title":1110,"path":1111,"group":1017,"groupOrder":282,"order":282,"children":1112,"link":322},"Administering FlowFuse","\u002Fdocs\u002Fadmin",[1113,1116,1128,1136,1140,1144,1148,1151],{"title":1110,"path":1114,"order":708,"children":1115},"\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":1117,"path":1118,"order":286,"children":1119},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[1120,1124],{"title":1121,"path":1122,"order":286,"children":1123},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":1125,"path":1126,"order":286,"children":1127},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":1129,"path":1130,"order":286,"children":1131,"link":322},"Hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[1132],{"title":1133,"path":1134,"order":286,"children":1135},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":1137,"path":1138,"order":286,"children":1139},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":1141,"path":1142,"order":286,"children":1143},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":1145,"path":1146,"order":286,"children":1147},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":94,"path":1149,"order":286,"children":1150},"\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":1152,"path":1153,"order":286,"children":1154},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"name":682,"order":750,"children":1156},[1157,1161],{"title":1158,"path":1159,"group":682,"groupOrder":750,"order":729,"children":1160},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":1162,"path":1163,"group":682,"groupOrder":750,"order":286,"children":1164},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":1166,"order":982,"children":1167},"Contributing",[1168],{"title":1169,"path":1170,"group":1166,"groupOrder":982,"order":286,"children":1171,"link":322},"Contributing to FlowFuse","\u002Fdocs\u002Fcontribute",[1172,1175,1179,1183,1187,1191,1195,1203,1239,1242],{"title":925,"path":1173,"order":708,"children":1174},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":1176,"path":1177,"order":286,"children":1178},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":1180,"path":1181,"order":286,"children":1182},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":1184,"path":1185,"order":286,"children":1186},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":1188,"path":1189,"order":286,"children":1190},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":1192,"path":1193,"order":286,"children":1194},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":1196,"path":1197,"order":286,"children":1198},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[1199],{"title":1200,"path":1201,"order":286,"children":1202},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":1204,"path":1205,"order":286,"children":1206},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[1207,1211,1215,1219,1223,1227,1231,1235],{"title":1208,"path":1209,"order":286,"children":1210},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":1212,"path":1213,"order":286,"children":1214},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":1216,"path":1217,"order":286,"children":1218},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":1220,"path":1221,"order":286,"children":1222},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":1224,"path":1225,"order":286,"children":1226},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":1228,"path":1229,"order":286,"children":1230},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":1232,"path":1233,"order":286,"children":1234},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":1236,"path":1237,"order":286,"children":1238},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":905,"path":1240,"order":286,"children":1241},"\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":1243,"path":1244,"order":286,"children":1245},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],1788520208279]