[{"data":1,"prerenderedAt":1134},["ShallowReactive",2],{"blog-\u002Fblog\u002F2023\u002F05\u002Fbringing-high-availability-to-node-red":3,"featureCatalog":204,"changelog-titles":599,"blog-all-for-related":1133},{"id":4,"title":5,"authors":6,"body":8,"cta":181,"date":182,"description":183,"extension":184,"features":181,"image":185,"lastUpdated":181,"meta":186,"navigation":193,"path":194,"release":181,"seo":195,"sitemap":196,"stem":197,"subtitle":198,"tags":199,"tldr":181,"video":181,"__hash__":203},"blog\u002Fblog\u002F2023\u002F05\u002Fbringing-high-availability-to-node-red.md","Bringing High Availability to Node-RED",[7],"nick-oleary",{"type":9,"value":10,"toc":171},"minimark",[11,21,24,42,45,50,61,64,67,70,73,76,79,82,86,89,92,95,98,101,104,107,110,113,117,120,123,126,130,133,136,139,142,145,149,152,155,158,168],[12,13,14,15,20],"p",{},"Many companies look to deploy Node-RED into use cases that require the application\nto have a high degree of availability, reliability, and scalability. Following up\nour ",[16,17,19],"a",{"href":18},"\u002Fblog\u002F2023\u002F02\u002Fhighly-available-node-red\u002F","previous post on the subject",", in this\npost I’m going to look at some of the technical details of achieving HA, the\napproaches available and what that means for the work we’re doing at FlowFuse\nand upstream in Node-RED.",[12,22,23],{},"Everyone we speak to has a different set of requirements for this topic. To help\nwith the discussion, I’m going to look at two ways of approaching it:",[25,26,27,36],"ul",{},[28,29,30,31,35],"li",{},"The ",[32,33,34],"strong",{},"hot-spare approach"," where you have a second instance of the application\nready to take over when the primary fails. This achieves availability but\ndoesn’t contribute to scalability.",[28,37,30,38,41],{},[32,39,40],{},"load-balanced approach"," where you have a second active instance of the\napplication and work is shared between them. If either fails, the other\ncontinues running. A side-effect of this approach is a higher potential\nthrough-put and scalability; although in practice you need to ensure capacity\nto tolerate an instance failing.",[12,43,44],{},"To consider which approach is most appropriate in the context of Node-RED, we\nneed to look at the benefits and complications of each approach. It comes down\nto two factors; statefulness and how work is routed.",[46,47,49],"h3",{"id":48},"statefulness","Statefulness",[12,51,52,53,56,57,60],{},"There are two types of state to consider when thinking about a Node-RED flow:\n",[32,54,55],{},"explicit"," and ",[32,58,59],{},"implicit"," state.",[12,62,63],{},"Explicit state is what is programmed into the flow. For example, a flow may store\nstate in Context or use an external database service. Within FlowFuse we provide\ntwo types of context - the default in-memory context store and a database-backed\npersistent store. Currently the database-backed store includes a memory-caching\nlayer to provide better performance and interoperability. That gets tricky when\nyou want to have multiple instances sharing the same store. The context API\ndoesn’t provide a way to atomically update values - so you can get into classic\nconcurrency issues around two applications trying to update the same value.",[12,65,66],{},"The other type of state is that which is implicitly maintained in a flow - even\nif the user hasn’t explicitly configured it. For example, the Smooth node can be\nused to calculate a running average value of messages passing through it. The\nnode does that by keeping in memory the recent values so it can recalculate the\naverage with each update. If you have multiple instances, then the node will be\ncalculating the average for just the message its instances sees.",[12,68,69],{},"Another example of implicit state is the Batch node that can be used to group\nmessages into batches. Again - it will only be able to do that for the selection\nof messages the instance receives.",[12,71,72],{},"It very much depends on the requirements of a flow and what nodes it uses, as to\nhow the state can be handled.",[12,74,75],{},"In the hot-spare approach, as only one instance is active at any time, a lot of\nthe explicit state handling will work as expected. However the implicit state\nremains bound to the individual Node-RED instances.",[12,77,78],{},"In the load-balanced approach, care has to be taken to ensure any state generated\nby the flow is done in a way that copes with multiple instances accessing it at\nthe same time.",[12,80,81],{},"A key take-away from this being that a flow has to be created with HA and\u002For scaling\nin mind.",[46,83,85],{"id":84},"routing-work","Routing work",[12,87,88],{},"Node-RED makes it easy to integrate with lots of different sources of events.\nA couple of the most common being HTTP and MQTT. When considering how to handle\nmultiple instances of an application we need to think about how work is routed\nto those instances.",[12,90,91],{},"HTTP is the most well understood; you put a load-balancing proxy in front of the\nNode-RED instances and it takes care of sharing out the incoming requests. In\nthe hot-spare scenario, the proxy needs to know which instance is active - that\nrequires some coordination within the platform to track that properly.",[12,93,94],{},"MQTT is commonly used with Node-RED, but unlike HTTP which is in-bound, MQTT\nworks by having Node-RED create an out-bound connection to a broker and then\nsubscribing to the topics of interest. In the early days of MQTT that would mean\neach instance would subscribe to the same set of topics and receive every message.\nThat doesn’t really fit any HA model.",[12,96,97],{},"With the publication of MQTTv5, the concept of Shared Subscriptions was added;\nthe ability for a group of clients to connect, subscribe to the same topic and\nhave the broker distribute messages between them. At this point you do get load\nbalancing across your Node-RED instances - as long as the MQTT nodes are suitably\nconfigured.",[12,99,100],{},"There are lots of other nodes that can be used to trigger flows, whether by\nlistening for events on an API, connecting to locally attached hardware and many\nthings in between. Typically, those that are more cloud-aligned, such as messaging\nsystems like Kafka and AMQP will have very well established ways of doing load\nbalancing.",[12,102,103],{},"Managing out-bound connections gets more complicated in the hot-spare scenario.",[12,105,106],{},"If we only had to deal with in-bound connections, the hot-spare instance can just\nsit there waiting for work to be passed its way. But once you have out-bound\nconnections, then you have a problem. The hot-spare instance should only create\nits out-bound connections when it becomes the active instance. In real terms,\nthat means the Node-RED flows should only be started when the instance becomes\nactive.",[12,108,109],{},"With our goal to minimize the Mean Time To Recovery (MTTR), we need to find a\nway to get that spare instance running as quickly as possible; if it takes just\nas long to start the spare instance as it does to restart the failed primary\ninstance, then it isn’t much of an improvement.",[12,111,112],{},"The key here is that Node-RED allows you to start the runtime without the flows\nrunning. That gets everything loaded and the runtime ready ahead of time. It can\nthen start the flows at a moment's notice with a simple call to the runtime admin\nAPI.",[46,114,116],{"id":115},"detecting-failure","Detecting failure",[12,118,119],{},"A key requirement of the hot-spare approach to HA is knowing when to failover to\nthe spare.",[12,121,122],{},"This requires close monitoring of the active instance to know whether it's still\nworking. How quickly you can detect failure is key to reducing the time to recovery.\nThis is where you have to think about the different ways an instance could fail -\nhas it crashed, has it hung, has it got ‘stuck’?",[12,124,125],{},"Detecting failure usually involves some combination of heartbeat ‘pings’ between\nthe instances to check each is able to respond to requests. The spare instance\nthen needs to be able to decide for itself whether it should become the active\ninstance - and do so safely. You do not want to accidentally have two instances\nactive at the same time. This can get quite complicated to achieve safely, but\nthere are a number of approaches that can be used. We’ll be exploring them as we\ncontinue our journey towards HA.",[46,127,129],{"id":128},"editing-flows","Editing Flows",[12,131,132],{},"Within the Node-RED architecture, each instance also serves up its own editor.\nThis is what you get when you point your web browser at it.",[12,134,135],{},"In a HA world, once you have multiple instances running behind an HTTP load\nbalancer, there is a tricky question of how you edit the flows. If each request\nhits a different instance, just loading the editor will result in different bits\ncoming from different instances. That can typically be solved at the load balancer\nlevel by creating sticky-sessions; ensuring for a given client, each request is\nrouted to a consistent instance. That solves part of the issue, but the next\nchallenge is what to do when the Deploy button is pressed. That is how new flows\nare passed from the editor to the runtime. When you have multiple instances, we\nneed to make sure that they all get updated. That is quite a tricky problem to\nsolve with the current Node-RED APIs - and something we’ll be working on both in\nFlowFuse and in the upstream Node-RED project to resolve.",[12,137,138],{},"That said, a more immediate solution could well be to take advantage of separate\ndevelopment\u002Fproduction instances. You develop in a single instance and, when happy\nwith what you’ve got, roll it out to your HA-ready production instance. This\nbypasses the need to edit the flows in the HA environment at all.",[12,140,141],{},"Whichever method is used, there is a question of how you minimize downtime whilst\ndeploying an update. In a purely in-bound environment, solutions can be built\nwhere the new application is deployed alongside the old version and, when everything\nis ready, the in-bound events are redirected to the new version. But that isn’t\nfeasible when you have out-bound connections to deal with as well. For some users,\nhaving a scheduled maintenance window for doing updates will be completely acceptable.",[12,143,144],{},"As with the hot-spare approach to failover, a similar method could be used that\nstarts new instances of Node-RED alongside the old, but with the flows all stopped.\nThen, once everything is ready, the old instances are stopped and the new instances\nstarted - minimizing the downtime, although not completely removing it.",[46,146,148],{"id":147},"continuing-the-ha-journey-at-flowfuse","Continuing the HA journey at FlowFuse",[12,150,151],{},"So the question is how are we going to apply all of this to what we’re building\nat FlowFuse. We cannot do everything at once, so we have to prioritize which\nscenarios we’re going to address first. Consequently, drawing from customer\nfeedback, we have chosen to start with the scaling side of high availability -\nallowing multiple copies of an instance to be run with appropriate load\nbalancing put in front of it.",[12,153,154],{},"We are building FlowFuse as an open platform with the ability to run on top of\nDocker Compose and Kubernetes. As we get into some of these HA features, we will\nneed to look carefully at where we can lean on these underlying technologies -\nwe don’t want to reinvent the wheel here.",[12,156,157],{},"Our initial focus is going to be when running in a Kubernetes environment - just\nas we do with our hosted FlowFuse Cloud platform. Kubernetes provides lots of\nthe building blocks for creating a scalable and highly available solution, but\nit certainly doesn’t do all of the work for you.",[12,159,160,161,167],{},"We've identified our initial set of tasks and changes to how we'll run Node-RED\ninstance with the k8s environment. You can follow our progress with this\n",[16,162,166],{"href":163,"rel":164},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fissues\u002F2156",[165],"nofollow","issue"," on our backlog.",[12,169,170],{},"I hope this post has given some useful insight into the problems we’re looking\nto solve at FlowFuse. As it's such an important requirement for many users we’ll\nkeep you updated as we make progress.",{"title":172,"searchDepth":173,"depth":173,"links":174},"",4,[175,177,178,179,180],{"id":48,"depth":176,"text":49},3,{"id":84,"depth":176,"text":85},{"id":115,"depth":176,"text":116},{"id":128,"depth":176,"text":129},{"id":147,"depth":176,"text":148},null,"2023-06-02","Explore how FlowFuse tackles HA challenges, statefulness, and work routing, revolutionizing Node-RED's reliability.","md","\u002Fimages\u002Fblog\u002Ftile-ha-nr.jpg",{"excerpt":187},{"type":9,"value":188},[189],[12,190,14,191,20],{},[16,192,19],{"href":18},true,"\u002Fblog\u002F2023\u002F05\u002Fbringing-high-availability-to-node-red",{"title":5,"description":183},{"loc":194},"blog\u002F2023\u002F05\u002Fbringing-high-availability-to-node-red","How we are tackling the hard problems of HA in FlowFuse",[200,201,202],"posts","node-red","high availablity","N1_d7USL-Q-7_Wk0vQ3is2hP75l2UaytWyEbg-BmXJs",{"id":205,"extension":206,"meta":207,"sections":208,"stem":597,"__hash__":598},"featureCatalog\u002Ffeature-catalog.yml","yml",{},[209,260,361,423,500,579],{"id":210,"title":211,"features":212},"ai-automation","AI & Automation",[213,223,233,243,249,255],{"id":214,"title":215,"description":216,"docsLink":217,"changelog":218,"tiers":222},"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",[219],{"url":220,"release":221},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner\u002F","2.28",{"edge":193,"hub":193,"fleet":193},{"id":224,"title":225,"description":226,"docsLink":227,"changelog":228,"subfeature":193,"showOnPricing":231,"tiers":232},"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",[229],{"url":230,"release":221},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context\u002F",false,{"edge":193,"hub":193,"fleet":193},{"id":234,"title":235,"description":236,"docsLink":237,"changelog":238,"subfeature":193,"showOnPricing":231,"tiers":242},"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",[239],{"url":240,"release":241},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building\u002F","2.30",{"edge":193,"hub":193,"fleet":193},{"id":244,"title":245,"description":246,"docsLink":247,"subfeature":193,"beta":193,"showOnPricing":231,"tiers":248},"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":193,"hub":193,"fleet":193},{"id":250,"title":251,"description":252,"docsLink":253,"tiers":254},"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":193,"hub":193,"fleet":193},{"id":256,"title":257,"description":258,"tiers":259},"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":193,"hub":193,"fleet":193},{"id":261,"title":262,"features":263},"build","Build",[264,270,276,286,292,298,302,308,314,322,328,332,336,345,353],{"id":265,"title":266,"description":267,"docsLink":268,"tiers":269},"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":193,"hub":231,"fleet":193},{"id":271,"title":272,"description":273,"docsLink":274,"tiers":275},"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":193,"hub":193,"fleet":193},{"id":277,"title":278,"description":279,"docsLink":280,"changelog":281,"tiers":285},"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",[282],{"url":283,"release":284},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation\u002F","2.33",{"edge":193,"hub":193,"fleet":193},{"id":287,"title":288,"description":289,"docsLink":290,"tiers":291},"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":193,"hub":193,"fleet":193},{"id":293,"title":294,"description":295,"docsLink":296,"showOnPricing":231,"tiers":297},"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":193,"hub":193,"fleet":193},{"id":299,"title":300,"showOnPricing":231,"tiers":301},"static-assets","Static Assets",{"edge":193,"hub":193,"fleet":193},{"id":303,"title":304,"description":305,"docsLink":306,"tiers":307},"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":193,"hub":193,"fleet":193},{"id":309,"title":310,"description":311,"docsLink":312,"tiers":313},"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":193,"hub":193,"fleet":193},{"id":315,"title":316,"description":317,"changelog":318,"subfeature":193,"showOnPricing":231,"tiers":321},"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.",[319],{"url":320,"release":284},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards\u002F",{"edge":193,"hub":193,"fleet":193},{"id":323,"title":324,"description":325,"docsLink":326,"tiers":327},"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":193,"hub":193,"fleet":193},{"id":329,"title":330,"subfeature":193,"showOnPricing":231,"tiers":331},"blueprints-ot-apps","Blueprints - OT APPS",{"edge":193,"hub":231,"fleet":193},{"id":333,"title":334,"subfeature":193,"showOnPricing":231,"tiers":335},"blueprints-it-apps","Blueprints - IT APPS",{"edge":231,"hub":193,"fleet":231},{"id":337,"title":338,"description":339,"changelog":340,"showOnPricing":231,"tiers":344},"immersive-editor-snapshots","Snapshot Details in Immersive Editor","View and manage snapshot details directly inside the immersive editor without leaving your editing session.",[341],{"url":342,"release":343},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor\u002F","2.29",{"edge":193,"hub":193,"fleet":193},{"id":346,"title":347,"description":348,"changelog":349,"showOnPricing":231,"tiers":352},"immersive-editor-drawer","Customisable Immersive Editor Drawer","Pin, move, resize, or full-screen the immersive editor drawer. Your preferences are remembered between sessions.",[350],{"url":351,"release":241},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer\u002F",{"edge":193,"hub":193,"fleet":193},{"id":354,"title":355,"description":356,"changelog":357,"showOnPricing":231,"tiers":360},"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.",[358],{"url":359,"release":343},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title\u002F",{"edge":193,"hub":193,"fleet":193},{"id":362,"title":363,"features":364},"deploy","Deploy",[365,371,380,386,392,398,404,410,415],{"id":366,"title":367,"description":368,"docsLink":369,"tiers":370},"hosted-instances","Cloud Instances","Run Node-RED instances managed and hosted by FlowFuse.","\u002Fdocs\u002Fuser\u002Fintroduction\u002F#creating-a-node-red-instance",{"edge":193,"hub":193,"fleet":193},{"id":372,"title":373,"description":374,"docsLink":375,"changelog":376,"tiers":379},"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",[377],{"url":378,"release":221},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options\u002F",{"edge":193,"hub":231,"fleet":193},{"id":381,"title":382,"description":383,"docsLink":384,"tiers":385},"custom-hostnames","Custom Hostnames","Access your Node-RED application via your own domain name.","\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",{"edge":231,"hub":193,"fleet":231},{"id":387,"title":388,"description":389,"docsLink":390,"tiers":391},"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":193,"hub":231,"fleet":193},{"id":393,"title":394,"description":395,"docsLink":396,"showOnPricing":231,"tiers":397},"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":193,"hub":193,"fleet":193},{"id":399,"title":400,"description":401,"docsLink":402,"tiers":403},"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":193,"hub":193,"fleet":193},{"id":405,"title":406,"description":407,"docsLink":408,"tiers":409},"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":231,"hub":193,"fleet":231},{"id":411,"title":412,"description":413,"docsLink":408,"subfeature":193,"showOnPricing":231,"tiers":414},"git-integration-github","GitHub","Push and pull snapshots to GitHub repositories through DevOps Pipeline Git Stages.",{"edge":231,"hub":193,"fleet":231},{"id":416,"title":417,"description":418,"docsLink":408,"changelog":419,"subfeature":193,"showOnPricing":231,"tiers":422},"git-integration-azure","Azure DevOps","Push and pull snapshots to Azure DevOps repositories through DevOps Pipeline Git Stages.",[420],{"url":421,"release":343},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops\u002F",{"edge":231,"hub":193,"fleet":231},{"id":424,"title":425,"features":426},"operate-maintain","Operate & Maintain",[427,433,439,444,452,456,460,465,471,477,482,488,492,496],{"id":428,"title":429,"description":430,"docsLink":431,"tiers":432},"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":193,"hub":193,"fleet":193},{"id":434,"title":435,"description":436,"docsLink":437,"subfeature":193,"showOnPricing":231,"tiers":438},"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":193,"hub":193,"fleet":193},{"id":440,"title":441,"description":442,"docsLink":437,"subfeature":193,"showOnPricing":231,"tiers":443},"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":193,"hub":193,"fleet":193},{"id":445,"title":446,"description":447,"changelog":448,"subfeature":193,"showOnPricing":231,"tiers":451},"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.",[449],{"url":450,"release":343},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer\u002F",{"edge":193,"hub":193,"fleet":193},{"id":453,"title":454,"subfeature":193,"showOnPricing":231,"tiers":455},"version-history-timeline","Version History Timeline",{"edge":193,"hub":193,"fleet":193},{"id":457,"title":458,"tiers":459},"unlimited-workflow-executions","Unlimited Workflow Executions",{"edge":193,"hub":193,"fleet":193},{"id":461,"title":462,"description":463,"tiers":464},"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":193,"hub":231,"fleet":193},{"id":466,"title":467,"description":468,"docsLink":469,"tiers":470},"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":193,"hub":231,"fleet":193},{"id":472,"title":473,"description":474,"docsLink":475,"tiers":476},"high-availability","High Availability","Leverage horizontal scaling for reliable and scalable processing of your data through Node-RED.","\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F",{"edge":231,"hub":193,"fleet":231},{"id":478,"title":479,"description":480,"tiers":481},"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":193,"hub":193,"fleet":193},{"id":483,"title":484,"description":485,"docsLink":486,"subfeature":193,"showOnPricing":231,"tiers":487},"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":193,"hub":193,"fleet":193},{"id":489,"title":490,"subfeature":193,"showOnPricing":231,"tiers":491},"email-alerts","Email Alerts",{"edge":193,"hub":193,"fleet":193},{"id":493,"title":494,"showOnPricing":231,"tiers":495},"api-debug-length-limit","API\u002FDebug Length Limit",{"edge":193,"hub":193,"fleet":193},{"id":497,"title":498,"tiers":499},"protected-instances","Protected Instances",{"edge":231,"hub":193,"fleet":231},{"id":501,"title":502,"features":503},"govern-secure","Govern and Secure",[504,513,519,525,530,536,542,548,556,562,568,574],{"id":505,"title":506,"description":507,"docsLink":508,"changelog":509,"tiers":512},"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",[510],{"url":511,"release":284},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups\u002F",{"edge":193,"hub":193,"fleet":193},{"id":514,"title":515,"description":516,"docsLink":517,"tiers":518},"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":193,"hub":193,"fleet":193},{"id":520,"title":521,"description":522,"docsLink":523,"tiers":524},"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":231,"hub":193,"fleet":193},{"id":526,"title":527,"description":528,"tiers":529},"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":193,"hub":231,"fleet":231},{"id":531,"title":532,"description":533,"docsLink":534,"tiers":535},"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":193,"hub":193,"fleet":193},{"id":537,"title":538,"description":539,"docsLink":540,"tiers":541},"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":193,"hub":193,"fleet":193},{"id":543,"title":544,"description":545,"docsLink":546,"subfeature":193,"showOnPricing":231,"tiers":547},"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":193,"hub":193,"fleet":193},{"id":549,"title":550,"description":551,"changelog":552,"subfeature":193,"showOnPricing":231,"tiers":555},"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.",[553],{"url":554,"release":284},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats\u002F",{"edge":193,"hub":193,"fleet":193},{"id":557,"title":558,"description":559,"docsLink":560,"showOnPricing":231,"tiers":561},"team-members","Team Members","Invite multiple team members to collaborate on the same Node-RED flows.","\u002Fdocs\u002Fuser\u002Fteam\u002F#teams",{"edge":193,"hub":193,"fleet":193},{"id":563,"title":564,"description":565,"docsLink":566,"showOnPricing":231,"tiers":567},"endpoint-security","Endpoint Security","Secure HTTP endpoints for hosted Node-RED instances using FlowFuse credentials.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#security",{"edge":193,"hub":193,"fleet":193},{"id":569,"title":570,"description":571,"docsLink":572,"tiers":573},"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.5\u002F",{"edge":231,"hub":193,"fleet":231},{"id":575,"title":576,"description":577,"tiers":578},"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":231,"hub":193,"fleet":231},{"id":580,"title":581,"features":582},"support","Support",[583,588,592],{"id":584,"title":585,"docsLink":586,"tiers":587},"installation-support","Installation Support","\u002Fdocs\u002Finstall\u002Fintroduction\u002F#do-you-need-help-installation-service",{"edge":193,"hub":193,"fleet":193},{"id":589,"title":590,"showOnPricing":231,"tiers":591},"live-chat-support","Live Chat Support",{"edge":193,"hub":193,"fleet":193},{"id":593,"title":594,"docsLink":595,"tiers":596},"enterprise-support","Enterprise Support","\u002Fdocs\u002Fpremium-support\u002F",{"edge":193,"hub":193,"fleet":193},"feature-catalog","0AnkhTIPCECCwP9NmbTWP5HvRYx4FTSao4lG93-HaWM",[600,603,606,609,612,615,617,620,623,626,629,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,744,747,750,753,756,759,762,765,767,770,773,776,779,782,784,787,790,793,796,799,802,805,808,811,814,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,916,919,922,925,928,931,934,937,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130],{"path":601,"title":602},"\u002Fchangelog\u002F2023\u002F09\u002Fcustom-node-support","Custom Node Support",{"path":604,"title":605},"\u002Fchangelog\u002F2023\u002F09\u002Fdevops-actions","DevOps Pipeline with action selection",{"path":607,"title":608},"\u002Fchangelog\u002F2023\u002F09\u002Fintroduction-enterprise-tier","Introducing the Enterprise Tier",{"path":610,"title":611},"\u002Fchangelog\u002F2023\u002F09\u002Fpipeline-api","API Endpoint for DevOps Pipeline",{"path":613,"title":614},"\u002Fchangelog\u002F2023\u002F09\u002Fsnapshots-devices","Usability improvements to Device Management",{"path":616,"title":324},"\u002Fchangelog\u002F2023\u002F10\u002Fblueprints",{"path":618,"title":619},"\u002Fchangelog\u002F2023\u002F10\u002Fcertified-nodes","Certified Nodes",{"path":621,"title":622},"\u002Fchangelog\u002F2023\u002F10\u002Fdevice-snapshot-selection","Enhanced Snapshot Selection",{"path":624,"title":625},"\u002Fchangelog\u002F2023\u002F10\u002Fpath-bug-fix","Device Agent path bug fix",{"path":627,"title":628},"\u002Fchangelog\u002F2023\u002F10\u002Fresource-alerts","Resource Monitoring in Audit Log",{"path":630,"title":515},"\u002Fchangelog\u002F2023\u002F11\u002F2fa",{"path":632,"title":633},"\u002Fchangelog\u002F2023\u002F11\u002Fdefault-editor","Device Editor enabled by default",{"path":635,"title":636},"\u002Fchangelog\u002F2023\u002F11\u002Fdevices-in-pipelines","Devices in DevOps Pipelines",{"path":638,"title":639},"\u002Fchangelog\u002F2023\u002F11\u002Fproject-nodes-devices","Project Nodes for Devices",{"path":641,"title":642},"\u002Fchangelog\u002F2023\u002F12\u002Fbilling","No Credit Card required for billing",{"path":644,"title":645},"\u002Fchangelog\u002F2023\u002F12\u002Fblueprint-selection","Blueprint Selection Update",{"path":647,"title":648},"\u002Fchangelog\u002F2023\u002F12\u002Fdevice-groups","Device Groups",{"path":650,"title":651},"\u002Fchangelog\u002F2023\u002F12\u002Femail-alerting-node-red-crash","Email Alerts for Audit Log Events",{"path":653,"title":654},"\u002Fchangelog\u002F2023\u002F12\u002Fnode-red-updated","Node-RED 3.1.3 now available",{"path":656,"title":657},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-audit-log","Introducing the Device Auditlog Feature",{"path":659,"title":660},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-groups-snapshot","Device Groups - Automatic snapshot assignment",{"path":662,"title":663},"\u002Fchangelog\u002F2024\u002F01\u002Ffleet-mode","Renaming \"Default Device Mode\" to \"Fleet Mode\"",{"path":665,"title":666},"\u002Fchangelog\u002F2024\u002F01\u002Fhelm-v2","Helm Chart v2.0",{"path":668,"title":669},"\u002Fchangelog\u002F2024\u002F01\u002Fnew-blueprints","New Blueprints added",{"path":671,"title":672},"\u002Fchangelog\u002F2024\u002F01\u002Fsecurity-updates","Security Updates",{"path":674,"title":675},"\u002Fchangelog\u002F2024\u002F01\u002Fsso-team-membership","Managing Team Membership via SSO",{"path":677,"title":678},"\u002Fchangelog\u002F2024\u002F01\u002Fstreamlined-device-assignment","Streamlined Device assignment",{"path":680,"title":681},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-auto-snapshot","Device Auto Snapshots",{"path":683,"title":684},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-instance-audit-logs","Device Instance Audit Logging",{"path":686,"title":687},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-onboarding-improvements","Device Onboarding Improvements",{"path":689,"title":690},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-pricing-change","Pricing change for Devices",{"path":692,"title":693},"\u002Fchangelog\u002F2024\u002F02\u002Finstance-auto-snapshots","Instance Auto Snapshots",{"path":695,"title":696},"\u002Fchangelog\u002F2024\u002F02\u002Fpostgresql-upgrade","PostgreSQL Version update",{"path":698,"title":699},"\u002Fchangelog\u002F2024\u002F03\u002Fbearer-token-authentication","Bearer Token Authentication for Node-RED Instances",{"path":701,"title":702},"\u002Fchangelog\u002F2024\u002F03\u002Finstance-protection-mode","Instance Protection Mode",{"path":704,"title":705},"\u002Fchangelog\u002F2024\u002F03\u002Flimits-debug-payload","Configure HTTP Payload and Debug Message size",{"path":707,"title":708},"\u002Fchangelog\u002F2024\u002F03\u002Frestart-devices-remotly","Remote Device Restart",{"path":710,"title":711},"\u002Fchangelog\u002F2024\u002F04\u002Fcustom-nodes-on-devices","Custom Nodes Support on Devices",{"path":713,"title":714},"\u002Fchangelog\u002F2024\u002F04\u002Fdevice-auto-snapshot","Direct Dashboard Access",{"path":716,"title":717},"\u002Fchangelog\u002F2024\u002F04\u002Fimproving-device-groups","Improving Device Groups",{"path":719,"title":720},"\u002Fchangelog\u002F2024\u002F04\u002Fpricing-change","Pricing change Enterprise & Teams Tier",{"path":722,"title":723},"\u002Fchangelog\u002F2024\u002F04\u002Ftougher-rate-limiting","Tougher Rate Limiting on Public Routes",{"path":725,"title":726},"\u002Fchangelog\u002F2024\u002F05\u002Finstance-healthcheck","Customizing instance health-check settings",{"path":728,"title":729},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-blueprints","Blueprints added to Library",{"path":731,"title":732},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-flowviewer","Team Library - Flow Viewer",{"path":734,"title":735},"\u002Fchangelog\u002F2024\u002F05\u002Fmanaging-node-red-version-on-devices","Managing Node-RED versions on Devices",{"path":737,"title":738},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements","Snapshot Improvements",{"path":740,"title":741},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements-pt3","Snapshot Upload",{"path":743,"title":741},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-upload",{"path":745,"title":746},"\u002Fchangelog\u002F2024\u002F06\u002Fdevice-agent-proxy-support","Running the Device Agent behind an HTTP proxy",{"path":748,"title":749},"\u002Fchangelog\u002F2024\u002F06\u002Flibrary-blueprints","Custom hostnames for your instances",{"path":751,"title":752},"\u002Fchangelog\u002F2024\u002F06\u002Fmultiline-env-vars","Multi-line Environment Variables",{"path":754,"title":755},"\u002Fchangelog\u002F2024\u002F06\u002Fsnapshot-flow-compare","Compare Snapshots flows",{"path":757,"title":758},"\u002Fchangelog\u002F2024\u002F07\u002Fapplications-search","Applications Search",{"path":760,"title":761},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-group-clear-snapshot","Device Groups Snapshots",{"path":763,"title":764},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-delete","Managing devices",{"path":766,"title":764},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-move",{"path":768,"title":769},"\u002Fchangelog\u002F2024\u002F07\u002Fedit-snapshots","Edit Snapshots",{"path":771,"title":772},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant","The FlowFuse Expert",{"path":774,"title":775},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant-json","FlowFuse Expert Writes JSON",{"path":777,"title":778},"\u002Fchangelog\u002F2024\u002F07\u002Fimmersive-editor","Immersive Editor Experience",{"path":780,"title":781},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-inbox","Notifications Inbox",{"path":783,"title":781},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-update",{"path":785,"title":786},"\u002Fchangelog\u002F2024\u002F07\u002Fpersistent-storage","Persistent Storage on FlowFuse Cloud",{"path":788,"title":789},"\u002Fchangelog\u002F2024\u002F07\u002Fsso","Single Sign On Updates",{"path":791,"title":792},"\u002Fchangelog\u002F2024\u002F08\u002Fbill-of-materials","Bill of Materials",{"path":794,"title":795},"\u002Fchangelog\u002F2024\u002F08\u002Fenterprise-license-update","Enforcing Enterprise Restrictions",{"path":797,"title":798},"\u002Fchangelog\u002F2024\u002F08\u002Fldap-sso-groups","LDAP Single Sign On Updates",{"path":800,"title":801},"\u002Fchangelog\u002F2024\u002F08\u002Fstatic-file-service-navigation-visibility","Static File Service Navigation and Visibility",{"path":803,"title":804},"\u002Fchangelog\u002F2024\u002F10\u002Fdevice-group-env-vars","Environment Variables for your Device Groups",{"path":806,"title":807},"\u002Fchangelog\u002F2024\u002F10\u002Fmqtt-service","MQTT Broker Service",{"path":809,"title":810},"\u002Fchangelog\u002F2024\u002F10\u002Fnotifications-bulk-actions","Managing Notifications",{"path":812,"title":813},"\u002Fchangelog\u002F2024\u002F10\u002Fsnapshot-download-upload-options","Snapshot Upload and Download Improvements",{"path":815,"title":454},"\u002Fchangelog\u002F2024\u002F10\u002Fversion-history-timeline",{"path":817,"title":818},"\u002Fchangelog\u002F2024\u002F11\u002Faudit-log-hierarchy","Audit logs show hierarchical events",{"path":820,"title":821},"\u002Fchangelog\u002F2024\u002F11\u002Fdevice-agent-release","Device Agent 3.0 released",{"path":823,"title":824},"\u002Fchangelog\u002F2024\u002F11\u002Fmqtt-topic-hierarchy","MQTT Topic Hierarchy view",{"path":826,"title":827},"\u002Fchangelog\u002F2024\u002F11\u002Fteam-search","Team-wide search",{"path":829,"title":830},"\u002Fchangelog\u002F2024\u002F12\u002Fdashboad-iframe","Allow Dashboards to be embedded in iFrames",{"path":832,"title":833},"\u002Fchangelog\u002F2024\u002F12\u002Fdevice-editor-cache","Device Editor Access Speed Up",{"path":835,"title":836},"\u002Fchangelog\u002F2024\u002F12\u002Fteam-bom-timeline","Team BOM and Pipeline Views",{"path":838,"title":839},"\u002Fchangelog\u002F2025\u002F01\u002Ffree-tier-onboarding","New Onboarding Tour for Free Tier Users",{"path":841,"title":842},"\u002Fchangelog\u002F2025\u002F01\u002Fhidden-env-vars","Hidden Environment Variables",{"path":844,"title":845},"\u002Fchangelog\u002F2025\u002F01\u002Fimproved-diagnostics","Improved Diagnostics",{"path":847,"title":848},"\u002Fchangelog\u002F2025\u002F01\u002Fteam-level-groups","Team level view of Groups",{"path":850,"title":851},"\u002Fchangelog\u002F2025\u002F02\u002Fadditional-device-version-history-events","New Remote Instances Version History Events",{"path":853,"title":854},"\u002Fchangelog\u002F2025\u002F02\u002Fbroker-error-feedback","Improved Broker Connection Feedback",{"path":856,"title":857},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-agent-updates","FlowFuse User Authentication on Remote Instances",{"path":859,"title":454},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-version-history-timeline",{"path":861,"title":862},"\u002Fchangelog\u002F2025\u002F02\u002Fexternal-brokers","External MQTT Brokers",{"path":864,"title":865},"\u002Fchangelog\u002F2025\u002F02\u002Fmqtt-schema-suggestions","MQTT Smart Schema Suggestions",{"path":867,"title":868},"\u002Fchangelog\u002F2025\u002F02\u002Fresend-and-extend-team-invitation-expiration","Re-send Team Invitations",{"path":870,"title":871},"\u002Fchangelog\u002F2025\u002F02\u002Fschema-docs","Personalized Schema Documentation",{"path":873,"title":874},"\u002Fchangelog\u002F2025\u002F02\u002Ftopic-hierarchy-search","Search & Filter for Topic Hierarchy List",{"path":876,"title":877},"\u002Fchangelog\u002F2025\u002F03\u002Fcontainer-tags","Changes to tags for flowfuse\u002Fnode-red",{"path":879,"title":880},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-groups","Multiple Device Groups in a pipeline",{"path":882,"title":883},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-local-login","Local Login for Remote Instances",{"path":885,"title":886},"\u002Fchangelog\u002F2025\u002F03\u002Ffree-tier","Free Tier now more accessible to all",{"path":888,"title":889},"\u002Fchangelog\u002F2025\u002F03\u002Fresource-notifications","Resource Alerts",{"path":891,"title":892},"\u002Fchangelog\u002F2025\u002F03\u002Fsnapshot-filter","Filtering Snapshots",{"path":894,"title":895},"\u002Fchangelog\u002F2025\u002F03\u002Fteam-npm-registry","NPM Package Hosting",{"path":897,"title":898},"\u002Fchangelog\u002F2025\u002F03\u002Ftopic-deletion","MQTT Topic Management",{"path":900,"title":901},"\u002Fchangelog\u002F2025\u002F04\u002Fdevice-provisioning","Remote Instance Provisioning",{"path":903,"title":904},"\u002Fchangelog\u002F2025\u002F04\u002Fgit-integration","Git Integration with Pipelines",{"path":906,"title":907},"\u002Fchangelog\u002F2025\u002F04\u002Finstance-log-browsing","Better Node-RED log handling",{"path":909,"title":910},"\u002Fchangelog\u002F2025\u002F05\u002Fimport-node-red-flows","Import Node-RED Flows During Remote Instance Setup",{"path":912,"title":913},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant","FlowFuse Expert just got smarter",{"path":915,"title":913},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant-2",{"path":917,"title":918},"\u002Fchangelog\u002F2025\u002F06\u002Fgit-integration","Pulling snapshots from Git with Pipelines",{"path":920,"title":921},"\u002Fchangelog\u002F2025\u002F06\u002Finstance-performance-memory","Memory Metrics in Instance Performance View",{"path":923,"title":924},"\u002Fchangelog\u002F2025\u002F06\u002Fnew-home-page","Introducing the New Home Page Experience",{"path":926,"title":927},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance","Team Performance Feature",{"path":929,"title":930},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance-view","Instance Performance View",{"path":932,"title":933},"\u002Fchangelog\u002F2025\u002F06\u002Fui-refresh","Navigation UI Refresh",{"path":935,"title":936},"\u002Fchangelog\u002F2025\u002F07\u002Fbrowse-node-red-flows","Browse for Node-RED Flows During Remote Instance Setup",{"path":938,"title":278},"\u002Fchangelog\u002F2025\u002F07\u002Fflowfuse-tables",{"path":940,"title":941},"\u002Fchangelog\u002F2025\u002F07\u002Fimport-blueprints","Import blueprints directly into your existing instances",{"path":943,"title":944},"\u002Fchangelog\u002F2025\u002F07\u002Fsimplified-applications-overview","Simplified Applications Page with Summary Tiles",{"path":946,"title":947},"\u002Fchangelog\u002F2025\u002F07\u002Fsmart-suggestions","Smart Suggestions",{"path":949,"title":950},"\u002Fchangelog\u002F2025\u002F07\u002Fteam-to-pro-plan-rename","Team Plan Renamed to Pro Plan",{"path":952,"title":953},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-hosted","Generate snapshot descriptions with AI",{"path":955,"title":956},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-remote","AI Snapshot Descriptions Now Work with Remote Instances",{"path":958,"title":959},"\u002Fchangelog\u002F2025\u002F08\u002Fdevice-performance","FlowFuse Remote Instance Performance Data",{"path":961,"title":962},"\u002Fchangelog\u002F2025\u002F08\u002Fdirect-sso","Direct SSO Login",{"path":964,"title":965},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-assistant","FlowFuse Expert documents your flows",{"path":967,"title":968},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-mqtt","FlowFuse MQTT",{"path":970,"title":971},"\u002Fchangelog\u002F2025\u002F08\u002Fhttp-cors","Configure HTTP CORS",{"path":973,"title":974},"\u002Fchangelog\u002F2025\u002F08\u002Fsubflow-export","Export SubFlow as Node-RED module",{"path":976,"title":977},"\u002Fchangelog\u002F2025\u002F08\u002Ftables-assistant","FlowFuse Tables with a little help from the Assistant",{"path":979,"title":980},"\u002Fchangelog\u002F2025\u002F09\u002Fexpose-saml-groups-to-dashboard","Allow SSO groups to be shared with the Node-RED Dashboard",{"path":982,"title":983},"\u002Fchangelog\u002F2025\u002F09\u002Finline-assist","FlowFuse Expert can help you write code",{"path":985,"title":986},"\u002Fchangelog\u002F2025\u002F09\u002Fretiring-flowforge-device-agent","No more @flowforge\u002Fflowforge-device-agent releases",{"path":988,"title":989},"\u002Fchangelog\u002F2025\u002F09\u002Frevised-instance-snapshot-ui","Streamlined Snapshot Management",{"path":991,"title":992},"\u002Fchangelog\u002F2025\u002F09\u002Fteam-broker-async-api","Capture Async API data from FlowFuse Team Broker",{"path":994,"title":995},"\u002Fchangelog\u002F2025\u002F10\u002Fapplication-level-rbac","Application-level access control for Enterprise teams",{"path":997,"title":998},"\u002Fchangelog\u002F2025\u002F10\u002Fbulk-device-group-assignment","Easier Access to Bulk Device Group Management",{"path":1000,"title":1001},"\u002Fchangelog\u002F2025\u002F10\u002Fduplicate-instances-across-applications","Duplicate Instances Across Different Applications",{"path":1003,"title":1004},"\u002Fchangelog\u002F2025\u002F10\u002Fimport-flows-on-instance-creation","Import flows during instance creation",{"path":1006,"title":1007},"\u002Fchangelog\u002F2025\u002F10\u002Fmcp-nodes","FlowFuse MCP Server Nodes",{"path":1009,"title":1010},"\u002Fchangelog\u002F2025\u002F10\u002Fonnx-nodes","FlowFuse AI Nodes",{"path":1012,"title":1013},"\u002Fchangelog\u002F2025\u002F10\u002Fsettings-page-device-group-management","Device Group Management from Settings Page",{"path":1015,"title":1016},"\u002Fchangelog\u002F2025\u002F11\u002Fff-expert-update","FlowFuse Expert Update",{"path":1018,"title":1019},"\u002Fchangelog\u002F2025\u002F11\u002Fminimum-nodejs-version","Node.js v20 Minimum Version Requirement",{"path":1021,"title":1022},"\u002Fchangelog\u002F2025\u002F11\u002Fsso-session","SSO control over Session life",{"path":1024,"title":1025},"\u002Fchangelog\u002F2025\u002F12\u002Fff-expert-mcp-insights","FlowFuse Expert: Now with MCP-Powered Insights",{"path":1027,"title":1028},"\u002Fchangelog\u002F2025\u002F12\u002Fscheduled-maintenance","Scheduled Maintenance Mode",{"path":1030,"title":1031},"\u002Fchangelog\u002F2026\u002F01\u002Fdevice-agent-containers","Device Agent Docker Containers updated",{"path":1033,"title":1034},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-manage-palette","FlowFuse Expert: Enhanced Palette Integration",{"path":1036,"title":1037},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-nr-actions","FlowFuse Expert: Integration with Node-RED",{"path":1039,"title":1040},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-palette-queries","FlowFuse Expert: Palette Queries",{"path":1042,"title":1043},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-select-flows","FlowFuse Expert: Ask about your flows",{"path":1045,"title":1046},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-rbacs","FlowFuse Expert: MCP-Powered Insights with RBACs",{"path":1048,"title":1049},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-security","FlowFuse Expert: MCP-Powered Insights",{"path":1051,"title":1052},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options","Set Node.js Options for Remote Instances",{"path":1054,"title":1055},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context","FlowFuse Expert: Helping you make sense of your debug log",{"path":1057,"title":1058},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner","FlowFuse Expert: Never Miss an Update",{"path":1060,"title":1061},"\u002Fchangelog\u002F2026\u002F02\u002Fha-instance-rolling-restart","HA Hosted Instance Rolling Restart",{"path":1063,"title":1064},"\u002Fchangelog\u002F2026\u002F02\u002Fremote-instances-immersive-editor","Immersive Mode for Remote Instances",{"path":1066,"title":1067},"\u002Fchangelog\u002F2026\u002F02\u002Frestoring-snapshots-to-remote-instances","Restoring snapshots to developer-mode Remote Instances",{"path":1069,"title":1070},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops","Azure DevOps Pipeline support",{"path":1072,"title":1073},"\u002Fchangelog\u002F2026\u002F03\u002Fdeveloper-mode-in-immersive-editor","Developer Mode Now Accessible from the Immersive Editor",{"path":1075,"title":1076},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title","Embedded Editor Now Shows Active Tab",{"path":1078,"title":1079},"\u002Fchangelog\u002F2026\u002F03\u002Fmarch-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on March 28th, 2026",{"path":1081,"title":1082},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor","View Snapshot Details in the Immersive Editor",{"path":1084,"title":1085},"\u002Fchangelog\u002F2026\u002F04\u002Fexpert-action-links","FlowFuse expert action links",{"path":1087,"title":1088},"\u002Fchangelog\u002F2026\u002F04\u002Fhosted-instance-url-env-var","Hosted Instances know their own URL",{"path":1090,"title":347},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer",{"path":1092,"title":1093},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer","Richer snapshot comparison view",{"path":1095,"title":1096},"\u002Fchangelog\u002F2026\u002F05\u002Fai-opt-out","AI Feature Opt-Out for Teams",{"path":1098,"title":1099},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building","FlowFuse Expert Builds Your Application",{"path":1101,"title":1102},"\u002Fchangelog\u002F2026\u002F05\u002Fsingle-sso-provider","Single SSO provider for all users",{"path":1104,"title":1105},"\u002Fchangelog\u002F2026\u002F06\u002Fdark-mode","Dark Mode",{"path":1107,"title":1108},"\u002Fchangelog\u002F2026\u002F06\u002Fdevice-agent-v4-released","Device Agent v4 released",{"path":1110,"title":1111},"\u002Fchangelog\u002F2026\u002F06\u002Fgeneric-git-server-support","Connect Pipelines to Any Git Server",{"path":1113,"title":1114},"\u002Fchangelog\u002F2026\u002F06\u002Fjuly-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on July 11th, 2026",{"path":1116,"title":1117},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups","Application Roles from SSO Groups",{"path":1119,"title":1120},"\u002Fchangelog\u002F2026\u002F07\u002Fdevice-agent-onboarding","Getting started with FlowFuse straight from the terminal",{"path":1122,"title":1123},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-enhancements","FlowFuse Expert Enhancements",{"path":1125,"title":1126},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation","FlowFuse Expert Can Now Work With Your Tables",{"path":1128,"title":1129},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats","Team Scoped Personal Access Tokens",{"path":1131,"title":1132},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards","A Dedicated Home for Your Dashboards",[],1786105877886]