[{"data":1,"prerenderedAt":1640},["ShallowReactive",2],{"blog-\u002Fblog\u002F2025\u002F11\u002Foptimize-industrial-data-protocol-buffers":3,"featureCatalog":710,"changelog-titles":1105,"blog-all-for-related":1639},{"id":4,"title":5,"authors":6,"body":8,"cta":687,"date":688,"description":689,"extension":690,"features":687,"image":691,"lastUpdated":692,"meta":693,"navigation":255,"path":701,"release":687,"seo":702,"sitemap":703,"stem":704,"subtitle":705,"tags":706,"tldr":708,"video":687,"__hash__":709},"blog\u002Fblog\u002F2025\u002F11\u002Foptimize-industrial-data-protocol-buffers.md","How to Optimize Industrial Data Communication with Protocol Buffers",[7],"sumit-shinde",{"type":9,"value":10,"toc":675},"minimark",[11,15,18,21,24,29,32,35,164,179,182,188,191,194,197,200,205,208,213,216,219,222,225,229,232,239,299,302,307,325,331,334,338,341,355,360,367,377,418,421,425,428,443,446,450,494,504,516,524,527,530,562,573,576,580,586,589,614,617,621,624,627,630,633,636,639,645,648,652,655,658,661,664,671],[12,13,14],"p",{},"You're generating terabytes of sensor data every day. Most of it is waste, I mean..",[12,16,17],{},"Not the measurements, those are fine. It's the packaging. Text formats wrap every reading in field names, quotes, and brackets. You're moving more formatting characters than actual data across your network.",[12,19,20],{},"Protocol Buffers eliminates this. It's binary serialization that transmits only what matters, no overhead, no bloat. This article shows you how to implement it and what happens when you stop paying to transmit garbage.",[12,22,23],{},"Don't worry about complexity, in FlowFuse this is three nodes and one text file. No thousand lines of code. You'll define your data structure in 5-10 lines, drag some nodes into your flow, point them at that file, and you're done. FlowFuse handles the rest.",[25,26,28],"h2",{"id":27},"what-youre-actually-transmitting","What You're Actually Transmitting",[12,30,31],{},"Your network doesn't have a data problem. It has a packaging problem.",[12,33,34],{},"Right now, somewhere in your facility, a sensor just reported 74°C. Simple reading. Four pieces of information. But here's what actually transmitted:",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"sensor_id\": \"T-220\",\n  \"temperature\": 74,\n  \"unit\": \"C\",\n  \"timestamp\": 1700580000,\n  \"status\": \"OK\"\n}\n","json","",[43,44,45,54,82,100,121,138,158],"code",{"__ignoreMap":41},[46,47,50],"span",{"class":48,"line":49},"line",1,[46,51,53],{"class":52},"sMK4o","{\n",[46,55,57,60,64,67,70,73,77,79],{"class":48,"line":56},2,[46,58,59],{"class":52},"  \"",[46,61,63],{"class":62},"spNyl","sensor_id",[46,65,66],{"class":52},"\"",[46,68,69],{"class":52},":",[46,71,72],{"class":52}," \"",[46,74,76],{"class":75},"sfazB","T-220",[46,78,66],{"class":52},[46,80,81],{"class":52},",\n",[46,83,85,87,90,92,94,98],{"class":48,"line":84},3,[46,86,59],{"class":52},[46,88,89],{"class":62},"temperature",[46,91,66],{"class":52},[46,93,69],{"class":52},[46,95,97],{"class":96},"sbssI"," 74",[46,99,81],{"class":52},[46,101,103,105,108,110,112,114,117,119],{"class":48,"line":102},4,[46,104,59],{"class":52},[46,106,107],{"class":62},"unit",[46,109,66],{"class":52},[46,111,69],{"class":52},[46,113,72],{"class":52},[46,115,116],{"class":75},"C",[46,118,66],{"class":52},[46,120,81],{"class":52},[46,122,124,126,129,131,133,136],{"class":48,"line":123},5,[46,125,59],{"class":52},[46,127,128],{"class":62},"timestamp",[46,130,66],{"class":52},[46,132,69],{"class":52},[46,134,135],{"class":96}," 1700580000",[46,137,81],{"class":52},[46,139,141,143,146,148,150,152,155],{"class":48,"line":140},6,[46,142,59],{"class":52},[46,144,145],{"class":62},"status",[46,147,66],{"class":52},[46,149,69],{"class":52},[46,151,72],{"class":52},[46,153,154],{"class":75},"OK",[46,156,157],{"class":52},"\"\n",[46,159,161],{"class":48,"line":160},7,[46,162,163],{"class":52},"}\n",[12,165,166,167,169,170,169,172,169,174,169,176,178],{},"See those field names? ",[43,168,63],{},", ",[43,171,89],{},[43,173,107],{},[43,175,128],{},[43,177,145],{},". You wrote them once when you defined your data model. Now you're transmitting them thousands of times per second. Every single message carries a complete description of itself.",[12,180,181],{},"It's like receiving a package where the shipping label is bigger than what's inside.",[12,183,184],{},[185,186,187],"strong",{},"Here's what this costs you:",[12,189,190],{},"One sensor sending 109 bytes every 5 seconds is nothing. One thousand sensors doing the same thing creates 21.8 KB\u002Fsecond of continuous traffic. That's 1.88 GB per day. Except only about 650 MB are actual measurement, the rest is field names, quotes, and brackets you're paying to transmit, store, and process.",[12,192,193],{},"Your edge device receives this message and fires up a JSON parser. It reads character by character, validates every quote matches, converts \"74\" from a string into a number, and builds a data structure. This happens millions of times per day in a mid-sized facility. The CPU isn't processing sensor data, it's processing text formatting.",[12,195,196],{},"Your control loop needs that temperature reading in 50 milliseconds. But the network is congested because it's moving 3-4x more data than necessary. The parser is slow because it's converting strings. And suddenly your 50ms requirement becomes 200ms, and nobody can figure out why because \"we have plenty of bandwidth.\"",[12,198,199],{},"Meanwhile, your cloud provider charges by the gigabyte. Every month, you pay to ingest 1.88 GB from this sensor array. About 1.2 GB of that is field names and formatting. You're literally paying to store the word \"temperature\" millions of times.",[12,201,202],{},[185,203,204],{},"The compression trap:",[12,206,207],{},"The obvious fix is GZIP. Compress everything, cut it in half, problem solved. Except now you're compressing garbage, then paying CPU cycles to decompress it, then parsing the same bloated JSON on the other end. You've added latency and processing overhead to save bandwidth on data you shouldn't be sending in the first place.",[12,209,210],{},[185,211,212],{},"What if you just didn't send it?",[12,214,215],{},"Protocol Buffers doesn't compress your JSON. It replaces it. No field names in every message, they're defined once in a schema. No quotes or brackets, it's binary. No string-to-number conversions, numbers are already numbers.",[12,217,218],{},"That 109-byte JSON message becomes 47 bytes with Protocol Buffers. Not compressed. Just stripped of everything that isn't data, a 60% reduction in size.",[12,220,221],{},"The same sensor array that generated 1.88 GB per day now generates 750 MB. Your edge devices process messages in microseconds instead of milliseconds. Your control loops hit their timing requirements. And your cloud bill drops by 60%.",[12,223,224],{},"This isn't theoretical. It's measurable, repeatable, and you can implement it in an afternoon.",[25,226,228],{"id":227},"understanding-protocol-buffers","Understanding Protocol Buffers",[12,230,231],{},"Before we dive into implementation, let's understand what makes Protocol Buffers different.",[12,233,234,235,238],{},"Protocol Buffers (protobuf) is a serialization format developed by Google. Unlike JSON, which describes data with every message, protobuf separates the schema from the data. You define your message structure once in a ",[43,236,237],{},".proto"," file:",[36,240,244],{"className":241,"code":242,"language":243,"meta":41,"style":41},"language-protobuf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","syntax = \"proto3\";\n\n\u002F\u002F Temperature sensor reading\nmessage TemperatureSensorReading {\n  string sensor_id = 1;\n  float temperature = 2;\n  string unit = 3;\n  int64 timestamp = 4;\n  string status = 5;\n}\n","protobuf",[43,245,246,251,257,262,267,272,277,282,288,294],{"__ignoreMap":41},[46,247,248],{"class":48,"line":49},[46,249,250],{},"syntax = \"proto3\";\n",[46,252,253],{"class":48,"line":56},[46,254,256],{"emptyLinePlaceholder":255},true,"\n",[46,258,259],{"class":48,"line":84},[46,260,261],{},"\u002F\u002F Temperature sensor reading\n",[46,263,264],{"class":48,"line":102},[46,265,266],{},"message TemperatureSensorReading {\n",[46,268,269],{"class":48,"line":123},[46,270,271],{},"  string sensor_id = 1;\n",[46,273,274],{"class":48,"line":140},[46,275,276],{},"  float temperature = 2;\n",[46,278,279],{"class":48,"line":160},[46,280,281],{},"  string unit = 3;\n",[46,283,285],{"class":48,"line":284},8,[46,286,287],{},"  int64 timestamp = 4;\n",[46,289,291],{"class":48,"line":290},9,[46,292,293],{},"  string status = 5;\n",[46,295,297],{"class":48,"line":296},10,[46,298,163],{},[12,300,301],{},"Those numbers (1, 2, 3, 4, 5) are field identifiers. When you encode a message, protobuf transmits only the field number and the value. No field names, no formatting characters, no whitespace.",[12,303,304],{},[185,305,306],{},"The binary difference:",[308,309,310,318],"ul",{},[311,312,313,314,317],"li",{},"JSON: ",[43,315,316],{},"{\"sensor_id\":\"T-220\",\"temperature\":74,...}"," (109 bytes)",[311,319,320,321,324],{},"Protobuf: ",[43,322,323],{},"[21,0,0,74,66,26,7,99,101,108,11..."," (47 bytes)",[12,326,327,328,330],{},"The receiver uses the same ",[43,329,237],{}," file to decode field 1 as sensor_id, field 2 as temperature, and so on. The schema exists once on each side, never in the message itself.",[12,332,333],{},"Now let's implement this in FlowFuse.",[25,335,337],{"id":336},"implementing-protocol-buffers-in-flowfuse","Implementing Protocol Buffers in FlowFuse",[12,339,340],{},"We'll build a complete protobuf pipeline: define your data schema, encode sensor readings, transmit them, and decode on the receiving end.",[342,343,344],"blockquote",{},[12,345,346,347,354],{},"Before you start, Make sure you have a FlowFuse instance running on your edge device. If you don't have an account yet, ",[348,349,353],"a",{"href":350,"rel":351},"https:\u002F\u002Fapp.flowfuse.com\u002Faccount\u002Fcreate",[352],"nofollow","create one with our free trial",". FlowFuse simplifies connecting devices and systems, transform, validate, contextualize, and visualize data while building industrial applications, all in a low-code environment. It includes enterprise features that accelerate management, development, deployment, and scaling with built-in security.",[356,357,359],"h3",{"id":358},"preparing-your-protocol-buffers-schema","Preparing Your Protocol Buffers Schema",[12,361,362,363,366],{},"Let's start by defining your data structure. This will be the foundation of your binary serialization. If you're using FlowFuse Device Agent to run your Node-RED instance, it's recommended to create this file inside the ",[43,364,365],{},"\u002Fopt\u002Fflowfuse-device\u002F"," directory for proper access and management.",[12,368,369,370,373,374,376],{},"Create a file named ",[43,371,372],{},"temperature-sensor.proto"," ( or you can give it any name you want ). Make sure it ends with the ",[43,375,237],{}," extension:",[36,378,380],{"className":241,"code":379,"language":243,"meta":41,"style":41},"syntax = \"proto3\";\n\nmessage TemperatureSensorReading {\n  string sensor_id = 1;\n  float temperature = 2;\n  string unit = 3;\n  int64 timestamp = 4;\n  string status = 5;\n}\n",[43,381,382,386,390,394,398,402,406,410,414],{"__ignoreMap":41},[46,383,384],{"class":48,"line":49},[46,385,250],{},[46,387,388],{"class":48,"line":56},[46,389,256],{"emptyLinePlaceholder":255},[46,391,392],{"class":48,"line":84},[46,393,266],{},[46,395,396],{"class":48,"line":102},[46,397,271],{},[46,399,400],{"class":48,"line":123},[46,401,276],{},[46,403,404],{"class":48,"line":140},[46,405,281],{},[46,407,408],{"class":48,"line":160},[46,409,287],{},[46,411,412],{"class":48,"line":284},[46,413,293],{},[46,415,416],{"class":48,"line":290},[46,417,163],{},[12,419,420],{},"You can define as many message types as you need for different data in the file. Each message type gets its own structure optimized for the specific data it carries.",[356,422,424],{"id":423},"installing-the-protocol-buffers-node","Installing the Protocol Buffers Node",[12,426,427],{},"To work with Protocol Buffers in FlowFuse, you'll need the protobuf node:",[429,430,431,434,440],"ol",{},[311,432,433],{},"In your FlowFuse instance, open the palette manager (Menu → Manage palette)",[311,435,436,437],{},"Search for ",[43,438,439],{},"node-red-contrib-protobuf",[311,441,442],{},"Install the node",[12,444,445],{},"Once installed you will see the nodes in the left palette under the protobuf category.",[356,447,449],{"id":448},"encoding-data-with-protocol-buffers","Encoding Data with Protocol Buffers",[429,451,452,455,458],{},[311,453,454],{},"Drag your data source node (Modbus Read, OPC UA Client, S7, etc.) into the flow. Ensure it's configured correctly and that data is coming through, you can verify this using a Debug node.",[311,456,457],{},"Transform the data as needed and add any required metadata.",[311,459,460,461,464,465,468,469,472,473,475,476],{},"Add the ",[185,462,463],{},"Encode"," node to the flow. Open its configuration and click the ",[185,466,467],{},"+"," icon next to ",[185,470,471],{},"Protofile"," to add the full path to your ",[43,474,237],{}," file.",[308,477,478,488],{},[311,479,480,481,484,485,487],{},"Enable ",[185,482,483],{},"Watch file"," if you want the node to automatically reload when the ",[43,486,237],{}," changes",[311,489,480,490,493],{},[185,491,492],{},"Keep snake_case (underscores)"," if your field names require it",[12,495,496,501],{},[497,498],"img",{"alt":499,"dataZoomable":41,"src":500},"Protocol Buffers node configuration","\u002Fblog\u002F2025\u002F11\u002Fimages\u002Fencode-config.png",[502,503,499],"em",{},[429,505,506],{"start":102},[311,507,508,509,512,513,515],{},"Specify the ",[185,510,511],{},"Message Type"," as defined in your ",[43,514,237],{}," file. For example, using the schema shown earlier, the type would be:",[36,517,522],{"className":518,"code":520,"language":521},[519],"language-text","TemperatureSensorReading\n","text",[43,523,520],{"__ignoreMap":41},[12,525,526],{},"This tells the Encode node which message structure to apply during serialization.",[12,528,529],{},"If you need to set the type dynamically, you can also do:",[36,531,535],{"className":532,"code":533,"language":534,"meta":41,"style":41},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","msg.protobufType = \"TemperatureSensorReading\";\n","js",[43,536,537],{"__ignoreMap":41},[46,538,539,543,546,549,552,554,557,559],{"class":48,"line":49},[46,540,542],{"class":541},"sTEyZ","msg",[46,544,545],{"class":52},".",[46,547,548],{"class":541},"protobufType ",[46,550,551],{"class":52},"=",[46,553,72],{"class":52},[46,555,556],{"class":75},"TemperatureSensorReading",[46,558,66],{"class":52},[46,560,561],{"class":52},";\n",[429,563,564,570],{"start":123},[311,565,566,567,569],{},"Finally, connect the ",[185,568,463],{}," node to the communication node (or to the node that is transforming data and adding metadata) that will send your data onward, for example, MQTT Out, HTTP Request, or any other transport you're using.",[311,571,572],{},"Deploy the flow.",[12,574,575],{},"Once data passes through the Encode node, it will automatically encode it into Protocol Buffers. When everything is working correctly, you'll see the node status update to \"processed\" with a green indicator.",[356,577,579],{"id":578},"decoding-protocol-buffers-data","Decoding Protocol Buffers Data",[12,581,582,583,585],{},"Now that you're encoding and transmitting binary data, you need to decode it on the receiving end. This is where the matching ",[43,584,237],{}," schema comes into play.",[12,587,588],{},"On your receiving FlowFuse instance (or wherever you're processing the data):",[429,590,591,597,600,609,612],{},[311,592,593,594,596],{},"Copy the same ",[43,595,237],{}," file to your receiving system. The schema must match exactly, same field numbers, same types, same message structure. This is critical for successful decoding.",[311,598,599],{},"Add the Decode node to your flow where you receive the protobuf data (after MQTT In, HTTP In, etc.)",[311,601,602,603,605,606,608],{},"Configure the Decode node by Clicking the + icon next to Protofile and enter the full path to your ",[43,604,237],{}," file. Set the Message Type to match what was encoded (e.g., ",[43,607,556],{},"). Enable Watch file if you want automatic reloading on schema changes.",[311,610,611],{},"Connect Protocol buffer data source to Decode node.",[311,613,572],{},[12,615,616],{},"The Decode node will parse the binary message and output a standard JavaScript object that you can work with in function nodes, store in databases, or display in dashboards.",[25,618,620],{"id":619},"what-you-actually-get","What You Actually Get",[12,622,623],{},"Let's talk about what changes when you actually implement this.",[12,625,626],{},"Your network traffic drops by half or more. That struggling edge gateway suddenly has headroom. You can add more data sources or increase message frequency without upgrading anything.",[12,628,629],{},"Your edge devices aren't parsing text anymore. Messages that took milliseconds now decode in microseconds. Those freed CPU cycles go back to your actual application logic. Your processing loops hit their timing requirements again.",[12,631,632],{},"Your time-series database just got considerably smaller. The storage you already paid for goes further. That retention policy you've been managing? You just extended it without buying anything.",[12,634,635],{},"Your cloud provider charges per gigabyte. You were paying to transmit and store field names with every reading. Whatever your current cloud bill is, expect it to drop by 40-60%. Your provider doesn't care why, they just bill you for what moved through their infrastructure.",[12,637,638],{},"Before Protocol Buffers, scaling meant budgeting for more capacity. After implementation, the same infrastructure handles more without additional spend. That next tier pricing? You just pushed it out by years.",[12,640,641,642,644],{},"You're not rebuilding anything. Define a ",[43,643,237],{}," schema, drop in encode\u002Fdecode nodes, deploy. No consultants, no multi-phase rollout, no capital purchases.",[12,646,647],{},"This isn't optimization theater. It's removing waste that never should have been there. And once implemented, every new data source, every increased message rate, every additional field benefits from the same reduction. You're not just cutting your bill once, you're changing the cost structure of every future expansion.",[25,649,651],{"id":650},"cut-the-waste-now","Cut the Waste Now",[12,653,654],{},"Your messages are 60% packaging. Protocol Buffers strips it out.",[12,656,657],{},"One schema file. Three nodes in FlowFuse. Deploy. Done.",[12,659,660],{},"The same platform you use to connect devices, systems and build dashboards now optimizes every byte you transmit. No new tools. No complexity. Just smaller messages and lower bills.",[12,662,663],{},"Pick one data flow. Implement it this afternoon. Scale it tomorrow.",[12,665,666,670],{},[348,667,669],{"href":350,"rel":668},[352],"Start your free FlowFuse trial"," and stop paying to transmit field names.",[672,673,674],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":41,"searchDepth":102,"depth":102,"links":676},[677,678,679,685,686],{"id":27,"depth":56,"text":28},{"id":227,"depth":56,"text":228},{"id":336,"depth":56,"text":337,"children":680},[681,682,683,684],{"id":358,"depth":84,"text":359},{"id":423,"depth":84,"text":424},{"id":448,"depth":84,"text":449},{"id":578,"depth":84,"text":579},{"id":619,"depth":56,"text":620},{"id":650,"depth":56,"text":651},null,"2025-11-28","Stop transmitting waste. Learn how Protocol Buffers reduces industrial IoT data size by 60% using FlowFuse. Implementation takes one afternoon with three nodes and a schema file, no coding required.","md","\u002Fblog\u002F2025\u002F11\u002Fimages\u002Foptimize-industrial-data.png","2026-06-17",{"keywords":694,"excerpt":695},"protocol buffers, protobuf, industrial IoT, data optimization, binary serialization, sensor data, edge computing, FlowFuse, Node-RED, MQTT, network bandwidth, cloud costs, data compression, IIoT",{"type":9,"value":696},[697,699],[12,698,14],{},[12,700,17],{},"\u002Fblog\u002F2025\u002F11\u002Foptimize-industrial-data-protocol-buffers",{"title":5,"description":689},{"loc":701},"blog\u002F2025\u002F11\u002Foptimize-industrial-data-protocol-buffers","Cut network traffic by 60% with binary serialization, three nodes, one file, no complexity",[707],"flowfuse","Industrial IoT systems waste bandwidth and CPU transmitting JSON field names, quotes, and brackets with every message. Protocol Buffers replaces JSON with binary serialization that defines the schema once in a .proto file, cutting message size by about 60% (a 109-byte message becomes 47 bytes). In FlowFuse it takes one schema file and three nodes, install node-red-contrib-protobuf, then add Encode and Decode nodes, and can lower cloud bills by 40-60% with no custom code.","1YC6-L5QhijBdPxg3Pr_l6FMWYT89__WXJqKhIrftyE",{"id":711,"extension":712,"meta":713,"sections":714,"stem":1103,"__hash__":1104},"featureCatalog\u002Ffeature-catalog.yml","yml",{},[715,766,867,929,1006,1085],{"id":716,"title":717,"features":718},"ai-automation","AI & Automation",[719,729,739,749,755,761],{"id":720,"title":721,"description":722,"docsLink":723,"changelog":724,"tiers":728},"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",[725],{"url":726,"release":727},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner\u002F","2.28",{"edge":255,"hub":255,"fleet":255},{"id":730,"title":731,"description":732,"docsLink":733,"changelog":734,"subfeature":255,"showOnPricing":737,"tiers":738},"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",[735],{"url":736,"release":727},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context\u002F",false,{"edge":255,"hub":255,"fleet":255},{"id":740,"title":741,"description":742,"docsLink":743,"changelog":744,"subfeature":255,"showOnPricing":737,"tiers":748},"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",[745],{"url":746,"release":747},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building\u002F","2.30",{"edge":255,"hub":255,"fleet":255},{"id":750,"title":751,"description":752,"docsLink":753,"subfeature":255,"beta":255,"showOnPricing":737,"tiers":754},"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":255,"hub":255,"fleet":255},{"id":756,"title":757,"description":758,"docsLink":759,"tiers":760},"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":255,"hub":255,"fleet":255},{"id":762,"title":763,"description":764,"tiers":765},"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":255,"hub":255,"fleet":255},{"id":767,"title":768,"features":769},"build","Build",[770,776,782,792,798,804,808,814,820,828,834,838,842,851,859],{"id":771,"title":772,"description":773,"docsLink":774,"tiers":775},"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":255,"hub":737,"fleet":255},{"id":777,"title":778,"description":779,"docsLink":780,"tiers":781},"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":255,"hub":255,"fleet":255},{"id":783,"title":784,"description":785,"docsLink":786,"changelog":787,"tiers":791},"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",[788],{"url":789,"release":790},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation\u002F","2.33",{"edge":255,"hub":255,"fleet":255},{"id":793,"title":794,"description":795,"docsLink":796,"tiers":797},"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":255,"hub":255,"fleet":255},{"id":799,"title":800,"description":801,"docsLink":802,"showOnPricing":737,"tiers":803},"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":255,"hub":255,"fleet":255},{"id":805,"title":806,"showOnPricing":737,"tiers":807},"static-assets","Static Assets",{"edge":255,"hub":255,"fleet":255},{"id":809,"title":810,"description":811,"docsLink":812,"tiers":813},"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":255,"hub":255,"fleet":255},{"id":815,"title":816,"description":817,"docsLink":818,"tiers":819},"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":255,"hub":255,"fleet":255},{"id":821,"title":822,"description":823,"changelog":824,"subfeature":255,"showOnPricing":737,"tiers":827},"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.",[825],{"url":826,"release":790},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards\u002F",{"edge":255,"hub":255,"fleet":255},{"id":829,"title":830,"description":831,"docsLink":832,"tiers":833},"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":255,"hub":255,"fleet":255},{"id":835,"title":836,"subfeature":255,"showOnPricing":737,"tiers":837},"blueprints-ot-apps","Blueprints - OT APPS",{"edge":255,"hub":737,"fleet":255},{"id":839,"title":840,"subfeature":255,"showOnPricing":737,"tiers":841},"blueprints-it-apps","Blueprints - IT APPS",{"edge":737,"hub":255,"fleet":737},{"id":843,"title":844,"description":845,"changelog":846,"showOnPricing":737,"tiers":850},"immersive-editor-snapshots","Snapshot Details in Immersive Editor","View and manage snapshot details directly inside the immersive editor without leaving your editing session.",[847],{"url":848,"release":849},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor\u002F","2.29",{"edge":255,"hub":255,"fleet":255},{"id":852,"title":853,"description":854,"changelog":855,"showOnPricing":737,"tiers":858},"immersive-editor-drawer","Customisable Immersive Editor Drawer","Pin, move, resize, or full-screen the immersive editor drawer. Your preferences are remembered between sessions.",[856],{"url":857,"release":747},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer\u002F",{"edge":255,"hub":255,"fleet":255},{"id":860,"title":861,"description":862,"changelog":863,"showOnPricing":737,"tiers":866},"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.",[864],{"url":865,"release":849},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title\u002F",{"edge":255,"hub":255,"fleet":255},{"id":868,"title":869,"features":870},"deploy","Deploy",[871,877,886,892,898,904,910,916,921],{"id":872,"title":873,"description":874,"docsLink":875,"tiers":876},"hosted-instances","Cloud Instances","Run Node-RED instances managed and hosted by FlowFuse.","\u002Fdocs\u002Fuser\u002Fintroduction\u002F#creating-a-node-red-instance",{"edge":255,"hub":255,"fleet":255},{"id":878,"title":879,"description":880,"docsLink":881,"changelog":882,"tiers":885},"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",[883],{"url":884,"release":727},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options\u002F",{"edge":255,"hub":737,"fleet":255},{"id":887,"title":888,"description":889,"docsLink":890,"tiers":891},"custom-hostnames","Custom Hostnames","Access your Node-RED application via your own domain name.","\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",{"edge":737,"hub":255,"fleet":737},{"id":893,"title":894,"description":895,"docsLink":896,"tiers":897},"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":255,"hub":737,"fleet":255},{"id":899,"title":900,"description":901,"docsLink":902,"showOnPricing":737,"tiers":903},"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":255,"hub":255,"fleet":255},{"id":905,"title":906,"description":907,"docsLink":908,"tiers":909},"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":255,"hub":255,"fleet":255},{"id":911,"title":912,"description":913,"docsLink":914,"tiers":915},"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":737,"hub":255,"fleet":737},{"id":917,"title":918,"description":919,"docsLink":914,"subfeature":255,"showOnPricing":737,"tiers":920},"git-integration-github","GitHub","Push and pull snapshots to GitHub repositories through DevOps Pipeline Git Stages.",{"edge":737,"hub":255,"fleet":737},{"id":922,"title":923,"description":924,"docsLink":914,"changelog":925,"subfeature":255,"showOnPricing":737,"tiers":928},"git-integration-azure","Azure DevOps","Push and pull snapshots to Azure DevOps repositories through DevOps Pipeline Git Stages.",[926],{"url":927,"release":849},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops\u002F",{"edge":737,"hub":255,"fleet":737},{"id":930,"title":931,"features":932},"operate-maintain","Operate & Maintain",[933,939,945,950,958,962,966,971,977,983,988,994,998,1002],{"id":934,"title":935,"description":936,"docsLink":937,"tiers":938},"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":255,"hub":255,"fleet":255},{"id":940,"title":941,"description":942,"docsLink":943,"subfeature":255,"showOnPricing":737,"tiers":944},"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":255,"hub":255,"fleet":255},{"id":946,"title":947,"description":948,"docsLink":943,"subfeature":255,"showOnPricing":737,"tiers":949},"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":255,"hub":255,"fleet":255},{"id":951,"title":952,"description":953,"changelog":954,"subfeature":255,"showOnPricing":737,"tiers":957},"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.",[955],{"url":956,"release":849},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer\u002F",{"edge":255,"hub":255,"fleet":255},{"id":959,"title":960,"subfeature":255,"showOnPricing":737,"tiers":961},"version-history-timeline","Version History Timeline",{"edge":255,"hub":255,"fleet":255},{"id":963,"title":964,"tiers":965},"unlimited-workflow-executions","Unlimited Workflow Executions",{"edge":255,"hub":255,"fleet":255},{"id":967,"title":968,"description":969,"tiers":970},"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":255,"hub":737,"fleet":255},{"id":972,"title":973,"description":974,"docsLink":975,"tiers":976},"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":255,"hub":737,"fleet":255},{"id":978,"title":979,"description":980,"docsLink":981,"tiers":982},"high-availability","High Availability","Leverage horizontal scaling for reliable and scalable processing of your data through Node-RED.","\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F",{"edge":737,"hub":255,"fleet":737},{"id":984,"title":985,"description":986,"tiers":987},"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":255,"hub":255,"fleet":255},{"id":989,"title":990,"description":991,"docsLink":992,"subfeature":255,"showOnPricing":737,"tiers":993},"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":255,"hub":255,"fleet":255},{"id":995,"title":996,"subfeature":255,"showOnPricing":737,"tiers":997},"email-alerts","Email Alerts",{"edge":255,"hub":255,"fleet":255},{"id":999,"title":1000,"showOnPricing":737,"tiers":1001},"api-debug-length-limit","API\u002FDebug Length Limit",{"edge":255,"hub":255,"fleet":255},{"id":1003,"title":1004,"tiers":1005},"protected-instances","Protected Instances",{"edge":737,"hub":255,"fleet":737},{"id":1007,"title":1008,"features":1009},"govern-secure","Govern and Secure",[1010,1019,1025,1031,1036,1042,1048,1054,1062,1068,1074,1080],{"id":1011,"title":1012,"description":1013,"docsLink":1014,"changelog":1015,"tiers":1018},"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",[1016],{"url":1017,"release":790},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups\u002F",{"edge":255,"hub":255,"fleet":255},{"id":1020,"title":1021,"description":1022,"docsLink":1023,"tiers":1024},"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":255,"hub":255,"fleet":255},{"id":1026,"title":1027,"description":1028,"docsLink":1029,"tiers":1030},"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":737,"hub":255,"fleet":255},{"id":1032,"title":1033,"description":1034,"tiers":1035},"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":255,"hub":737,"fleet":737},{"id":1037,"title":1038,"description":1039,"docsLink":1040,"tiers":1041},"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":255,"hub":255,"fleet":255},{"id":1043,"title":1044,"description":1045,"docsLink":1046,"tiers":1047},"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":255,"hub":255,"fleet":255},{"id":1049,"title":1050,"description":1051,"docsLink":1052,"subfeature":255,"showOnPricing":737,"tiers":1053},"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":255,"hub":255,"fleet":255},{"id":1055,"title":1056,"description":1057,"changelog":1058,"subfeature":255,"showOnPricing":737,"tiers":1061},"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.",[1059],{"url":1060,"release":790},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats\u002F",{"edge":255,"hub":255,"fleet":255},{"id":1063,"title":1064,"description":1065,"docsLink":1066,"showOnPricing":737,"tiers":1067},"team-members","Team Members","Invite multiple team members to collaborate on the same Node-RED flows.","\u002Fdocs\u002Fuser\u002Fteam\u002F#teams",{"edge":255,"hub":255,"fleet":255},{"id":1069,"title":1070,"description":1071,"docsLink":1072,"showOnPricing":737,"tiers":1073},"endpoint-security","Endpoint Security","Secure HTTP endpoints for hosted Node-RED instances using FlowFuse credentials.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#security",{"edge":255,"hub":255,"fleet":255},{"id":1075,"title":1076,"description":1077,"docsLink":1078,"tiers":1079},"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":737,"hub":255,"fleet":737},{"id":1081,"title":1082,"description":1083,"tiers":1084},"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":737,"hub":255,"fleet":737},{"id":1086,"title":1087,"features":1088},"support","Support",[1089,1094,1098],{"id":1090,"title":1091,"docsLink":1092,"tiers":1093},"installation-support","Installation Support","\u002Fdocs\u002Finstall\u002Fintroduction\u002F#do-you-need-help-installation-service",{"edge":255,"hub":255,"fleet":255},{"id":1095,"title":1096,"showOnPricing":737,"tiers":1097},"live-chat-support","Live Chat Support",{"edge":255,"hub":255,"fleet":255},{"id":1099,"title":1100,"docsLink":1101,"tiers":1102},"enterprise-support","Enterprise Support","\u002Fdocs\u002Fpremium-support\u002F",{"edge":255,"hub":255,"fleet":255},"feature-catalog","0AnkhTIPCECCwP9NmbTWP5HvRYx4FTSao4lG93-HaWM",[1106,1109,1112,1115,1118,1121,1123,1126,1129,1132,1135,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,1245,1248,1250,1253,1256,1259,1262,1265,1268,1271,1273,1276,1279,1282,1285,1288,1290,1293,1296,1299,1302,1305,1308,1311,1314,1317,1320,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1422,1425,1428,1431,1434,1437,1440,1443,1445,1448,1451,1454,1457,1460,1463,1466,1469,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523,1526,1529,1532,1535,1538,1541,1544,1547,1550,1553,1556,1559,1562,1565,1568,1571,1574,1577,1580,1583,1586,1589,1592,1595,1597,1600,1603,1606,1609,1612,1615,1618,1621,1624,1627,1630,1633,1636],{"path":1107,"title":1108},"\u002Fchangelog\u002F2023\u002F09\u002Fcustom-node-support","Custom Node Support",{"path":1110,"title":1111},"\u002Fchangelog\u002F2023\u002F09\u002Fdevops-actions","DevOps Pipeline with action selection",{"path":1113,"title":1114},"\u002Fchangelog\u002F2023\u002F09\u002Fintroduction-enterprise-tier","Introducing the Enterprise Tier",{"path":1116,"title":1117},"\u002Fchangelog\u002F2023\u002F09\u002Fpipeline-api","API Endpoint for DevOps Pipeline",{"path":1119,"title":1120},"\u002Fchangelog\u002F2023\u002F09\u002Fsnapshots-devices","Usability improvements to Device Management",{"path":1122,"title":830},"\u002Fchangelog\u002F2023\u002F10\u002Fblueprints",{"path":1124,"title":1125},"\u002Fchangelog\u002F2023\u002F10\u002Fcertified-nodes","Certified Nodes",{"path":1127,"title":1128},"\u002Fchangelog\u002F2023\u002F10\u002Fdevice-snapshot-selection","Enhanced Snapshot Selection",{"path":1130,"title":1131},"\u002Fchangelog\u002F2023\u002F10\u002Fpath-bug-fix","Device Agent path bug fix",{"path":1133,"title":1134},"\u002Fchangelog\u002F2023\u002F10\u002Fresource-alerts","Resource Monitoring in Audit Log",{"path":1136,"title":1021},"\u002Fchangelog\u002F2023\u002F11\u002F2fa",{"path":1138,"title":1139},"\u002Fchangelog\u002F2023\u002F11\u002Fdefault-editor","Device Editor enabled by default",{"path":1141,"title":1142},"\u002Fchangelog\u002F2023\u002F11\u002Fdevices-in-pipelines","Devices in DevOps Pipelines",{"path":1144,"title":1145},"\u002Fchangelog\u002F2023\u002F11\u002Fproject-nodes-devices","Project Nodes for Devices",{"path":1147,"title":1148},"\u002Fchangelog\u002F2023\u002F12\u002Fbilling","No Credit Card required for billing",{"path":1150,"title":1151},"\u002Fchangelog\u002F2023\u002F12\u002Fblueprint-selection","Blueprint Selection Update",{"path":1153,"title":1154},"\u002Fchangelog\u002F2023\u002F12\u002Fdevice-groups","Device Groups",{"path":1156,"title":1157},"\u002Fchangelog\u002F2023\u002F12\u002Femail-alerting-node-red-crash","Email Alerts for Audit Log Events",{"path":1159,"title":1160},"\u002Fchangelog\u002F2023\u002F12\u002Fnode-red-updated","Node-RED 3.1.3 now available",{"path":1162,"title":1163},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-audit-log","Introducing the Device Auditlog Feature",{"path":1165,"title":1166},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-groups-snapshot","Device Groups - Automatic snapshot assignment",{"path":1168,"title":1169},"\u002Fchangelog\u002F2024\u002F01\u002Ffleet-mode","Renaming \"Default Device Mode\" to \"Fleet Mode\"",{"path":1171,"title":1172},"\u002Fchangelog\u002F2024\u002F01\u002Fhelm-v2","Helm Chart v2.0",{"path":1174,"title":1175},"\u002Fchangelog\u002F2024\u002F01\u002Fnew-blueprints","New Blueprints added",{"path":1177,"title":1178},"\u002Fchangelog\u002F2024\u002F01\u002Fsecurity-updates","Security Updates",{"path":1180,"title":1181},"\u002Fchangelog\u002F2024\u002F01\u002Fsso-team-membership","Managing Team Membership via SSO",{"path":1183,"title":1184},"\u002Fchangelog\u002F2024\u002F01\u002Fstreamlined-device-assignment","Streamlined Device assignment",{"path":1186,"title":1187},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-auto-snapshot","Device Auto Snapshots",{"path":1189,"title":1190},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-instance-audit-logs","Device Instance Audit Logging",{"path":1192,"title":1193},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-onboarding-improvements","Device Onboarding Improvements",{"path":1195,"title":1196},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-pricing-change","Pricing change for Devices",{"path":1198,"title":1199},"\u002Fchangelog\u002F2024\u002F02\u002Finstance-auto-snapshots","Instance Auto Snapshots",{"path":1201,"title":1202},"\u002Fchangelog\u002F2024\u002F02\u002Fpostgresql-upgrade","PostgreSQL Version update",{"path":1204,"title":1205},"\u002Fchangelog\u002F2024\u002F03\u002Fbearer-token-authentication","Bearer Token Authentication for Node-RED Instances",{"path":1207,"title":1208},"\u002Fchangelog\u002F2024\u002F03\u002Finstance-protection-mode","Instance Protection Mode",{"path":1210,"title":1211},"\u002Fchangelog\u002F2024\u002F03\u002Flimits-debug-payload","Configure HTTP Payload and Debug Message size",{"path":1213,"title":1214},"\u002Fchangelog\u002F2024\u002F03\u002Frestart-devices-remotly","Remote Device Restart",{"path":1216,"title":1217},"\u002Fchangelog\u002F2024\u002F04\u002Fcustom-nodes-on-devices","Custom Nodes Support on Devices",{"path":1219,"title":1220},"\u002Fchangelog\u002F2024\u002F04\u002Fdevice-auto-snapshot","Direct Dashboard Access",{"path":1222,"title":1223},"\u002Fchangelog\u002F2024\u002F04\u002Fimproving-device-groups","Improving Device Groups",{"path":1225,"title":1226},"\u002Fchangelog\u002F2024\u002F04\u002Fpricing-change","Pricing change Enterprise & Teams Tier",{"path":1228,"title":1229},"\u002Fchangelog\u002F2024\u002F04\u002Ftougher-rate-limiting","Tougher Rate Limiting on Public Routes",{"path":1231,"title":1232},"\u002Fchangelog\u002F2024\u002F05\u002Finstance-healthcheck","Customizing instance health-check settings",{"path":1234,"title":1235},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-blueprints","Blueprints added to Library",{"path":1237,"title":1238},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-flowviewer","Team Library - Flow Viewer",{"path":1240,"title":1241},"\u002Fchangelog\u002F2024\u002F05\u002Fmanaging-node-red-version-on-devices","Managing Node-RED versions on Devices",{"path":1243,"title":1244},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements","Snapshot Improvements",{"path":1246,"title":1247},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements-pt3","Snapshot Upload",{"path":1249,"title":1247},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-upload",{"path":1251,"title":1252},"\u002Fchangelog\u002F2024\u002F06\u002Fdevice-agent-proxy-support","Running the Device Agent behind an HTTP proxy",{"path":1254,"title":1255},"\u002Fchangelog\u002F2024\u002F06\u002Flibrary-blueprints","Custom hostnames for your instances",{"path":1257,"title":1258},"\u002Fchangelog\u002F2024\u002F06\u002Fmultiline-env-vars","Multi-line Environment Variables",{"path":1260,"title":1261},"\u002Fchangelog\u002F2024\u002F06\u002Fsnapshot-flow-compare","Compare Snapshots flows",{"path":1263,"title":1264},"\u002Fchangelog\u002F2024\u002F07\u002Fapplications-search","Applications Search",{"path":1266,"title":1267},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-group-clear-snapshot","Device Groups Snapshots",{"path":1269,"title":1270},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-delete","Managing devices",{"path":1272,"title":1270},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-move",{"path":1274,"title":1275},"\u002Fchangelog\u002F2024\u002F07\u002Fedit-snapshots","Edit Snapshots",{"path":1277,"title":1278},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant","The FlowFuse Expert",{"path":1280,"title":1281},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant-json","FlowFuse Expert Writes JSON",{"path":1283,"title":1284},"\u002Fchangelog\u002F2024\u002F07\u002Fimmersive-editor","Immersive Editor Experience",{"path":1286,"title":1287},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-inbox","Notifications Inbox",{"path":1289,"title":1287},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-update",{"path":1291,"title":1292},"\u002Fchangelog\u002F2024\u002F07\u002Fpersistent-storage","Persistent Storage on FlowFuse Cloud",{"path":1294,"title":1295},"\u002Fchangelog\u002F2024\u002F07\u002Fsso","Single Sign On Updates",{"path":1297,"title":1298},"\u002Fchangelog\u002F2024\u002F08\u002Fbill-of-materials","Bill of Materials",{"path":1300,"title":1301},"\u002Fchangelog\u002F2024\u002F08\u002Fenterprise-license-update","Enforcing Enterprise Restrictions",{"path":1303,"title":1304},"\u002Fchangelog\u002F2024\u002F08\u002Fldap-sso-groups","LDAP Single Sign On Updates",{"path":1306,"title":1307},"\u002Fchangelog\u002F2024\u002F08\u002Fstatic-file-service-navigation-visibility","Static File Service Navigation and Visibility",{"path":1309,"title":1310},"\u002Fchangelog\u002F2024\u002F10\u002Fdevice-group-env-vars","Environment Variables for your Device Groups",{"path":1312,"title":1313},"\u002Fchangelog\u002F2024\u002F10\u002Fmqtt-service","MQTT Broker Service",{"path":1315,"title":1316},"\u002Fchangelog\u002F2024\u002F10\u002Fnotifications-bulk-actions","Managing Notifications",{"path":1318,"title":1319},"\u002Fchangelog\u002F2024\u002F10\u002Fsnapshot-download-upload-options","Snapshot Upload and Download Improvements",{"path":1321,"title":960},"\u002Fchangelog\u002F2024\u002F10\u002Fversion-history-timeline",{"path":1323,"title":1324},"\u002Fchangelog\u002F2024\u002F11\u002Faudit-log-hierarchy","Audit logs show hierarchical events",{"path":1326,"title":1327},"\u002Fchangelog\u002F2024\u002F11\u002Fdevice-agent-release","Device Agent 3.0 released",{"path":1329,"title":1330},"\u002Fchangelog\u002F2024\u002F11\u002Fmqtt-topic-hierarchy","MQTT Topic Hierarchy view",{"path":1332,"title":1333},"\u002Fchangelog\u002F2024\u002F11\u002Fteam-search","Team-wide search",{"path":1335,"title":1336},"\u002Fchangelog\u002F2024\u002F12\u002Fdashboad-iframe","Allow Dashboards to be embedded in iFrames",{"path":1338,"title":1339},"\u002Fchangelog\u002F2024\u002F12\u002Fdevice-editor-cache","Device Editor Access Speed Up",{"path":1341,"title":1342},"\u002Fchangelog\u002F2024\u002F12\u002Fteam-bom-timeline","Team BOM and Pipeline Views",{"path":1344,"title":1345},"\u002Fchangelog\u002F2025\u002F01\u002Ffree-tier-onboarding","New Onboarding Tour for Free Tier Users",{"path":1347,"title":1348},"\u002Fchangelog\u002F2025\u002F01\u002Fhidden-env-vars","Hidden Environment Variables",{"path":1350,"title":1351},"\u002Fchangelog\u002F2025\u002F01\u002Fimproved-diagnostics","Improved Diagnostics",{"path":1353,"title":1354},"\u002Fchangelog\u002F2025\u002F01\u002Fteam-level-groups","Team level view of Groups",{"path":1356,"title":1357},"\u002Fchangelog\u002F2025\u002F02\u002Fadditional-device-version-history-events","New Remote Instances Version History Events",{"path":1359,"title":1360},"\u002Fchangelog\u002F2025\u002F02\u002Fbroker-error-feedback","Improved Broker Connection Feedback",{"path":1362,"title":1363},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-agent-updates","FlowFuse User Authentication on Remote Instances",{"path":1365,"title":960},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-version-history-timeline",{"path":1367,"title":1368},"\u002Fchangelog\u002F2025\u002F02\u002Fexternal-brokers","External MQTT Brokers",{"path":1370,"title":1371},"\u002Fchangelog\u002F2025\u002F02\u002Fmqtt-schema-suggestions","MQTT Smart Schema Suggestions",{"path":1373,"title":1374},"\u002Fchangelog\u002F2025\u002F02\u002Fresend-and-extend-team-invitation-expiration","Re-send Team Invitations",{"path":1376,"title":1377},"\u002Fchangelog\u002F2025\u002F02\u002Fschema-docs","Personalized Schema Documentation",{"path":1379,"title":1380},"\u002Fchangelog\u002F2025\u002F02\u002Ftopic-hierarchy-search","Search & Filter for Topic Hierarchy List",{"path":1382,"title":1383},"\u002Fchangelog\u002F2025\u002F03\u002Fcontainer-tags","Changes to tags for flowfuse\u002Fnode-red",{"path":1385,"title":1386},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-groups","Multiple Device Groups in a pipeline",{"path":1388,"title":1389},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-local-login","Local Login for Remote Instances",{"path":1391,"title":1392},"\u002Fchangelog\u002F2025\u002F03\u002Ffree-tier","Free Tier now more accessible to all",{"path":1394,"title":1395},"\u002Fchangelog\u002F2025\u002F03\u002Fresource-notifications","Resource Alerts",{"path":1397,"title":1398},"\u002Fchangelog\u002F2025\u002F03\u002Fsnapshot-filter","Filtering Snapshots",{"path":1400,"title":1401},"\u002Fchangelog\u002F2025\u002F03\u002Fteam-npm-registry","NPM Package Hosting",{"path":1403,"title":1404},"\u002Fchangelog\u002F2025\u002F03\u002Ftopic-deletion","MQTT Topic Management",{"path":1406,"title":1407},"\u002Fchangelog\u002F2025\u002F04\u002Fdevice-provisioning","Remote Instance Provisioning",{"path":1409,"title":1410},"\u002Fchangelog\u002F2025\u002F04\u002Fgit-integration","Git Integration with Pipelines",{"path":1412,"title":1413},"\u002Fchangelog\u002F2025\u002F04\u002Finstance-log-browsing","Better Node-RED log handling",{"path":1415,"title":1416},"\u002Fchangelog\u002F2025\u002F05\u002Fimport-node-red-flows","Import Node-RED Flows During Remote Instance Setup",{"path":1418,"title":1419},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant","FlowFuse Expert just got smarter",{"path":1421,"title":1419},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant-2",{"path":1423,"title":1424},"\u002Fchangelog\u002F2025\u002F06\u002Fgit-integration","Pulling snapshots from Git with Pipelines",{"path":1426,"title":1427},"\u002Fchangelog\u002F2025\u002F06\u002Finstance-performance-memory","Memory Metrics in Instance Performance View",{"path":1429,"title":1430},"\u002Fchangelog\u002F2025\u002F06\u002Fnew-home-page","Introducing the New Home Page Experience",{"path":1432,"title":1433},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance","Team Performance Feature",{"path":1435,"title":1436},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance-view","Instance Performance View",{"path":1438,"title":1439},"\u002Fchangelog\u002F2025\u002F06\u002Fui-refresh","Navigation UI Refresh",{"path":1441,"title":1442},"\u002Fchangelog\u002F2025\u002F07\u002Fbrowse-node-red-flows","Browse for Node-RED Flows During Remote Instance Setup",{"path":1444,"title":784},"\u002Fchangelog\u002F2025\u002F07\u002Fflowfuse-tables",{"path":1446,"title":1447},"\u002Fchangelog\u002F2025\u002F07\u002Fimport-blueprints","Import blueprints directly into your existing instances",{"path":1449,"title":1450},"\u002Fchangelog\u002F2025\u002F07\u002Fsimplified-applications-overview","Simplified Applications Page with Summary Tiles",{"path":1452,"title":1453},"\u002Fchangelog\u002F2025\u002F07\u002Fsmart-suggestions","Smart Suggestions",{"path":1455,"title":1456},"\u002Fchangelog\u002F2025\u002F07\u002Fteam-to-pro-plan-rename","Team Plan Renamed to Pro Plan",{"path":1458,"title":1459},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-hosted","Generate snapshot descriptions with AI",{"path":1461,"title":1462},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-remote","AI Snapshot Descriptions Now Work with Remote Instances",{"path":1464,"title":1465},"\u002Fchangelog\u002F2025\u002F08\u002Fdevice-performance","FlowFuse Remote Instance Performance Data",{"path":1467,"title":1468},"\u002Fchangelog\u002F2025\u002F08\u002Fdirect-sso","Direct SSO Login",{"path":1470,"title":1471},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-assistant","FlowFuse Expert documents your flows",{"path":1473,"title":1474},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-mqtt","FlowFuse MQTT",{"path":1476,"title":1477},"\u002Fchangelog\u002F2025\u002F08\u002Fhttp-cors","Configure HTTP CORS",{"path":1479,"title":1480},"\u002Fchangelog\u002F2025\u002F08\u002Fsubflow-export","Export SubFlow as Node-RED module",{"path":1482,"title":1483},"\u002Fchangelog\u002F2025\u002F08\u002Ftables-assistant","FlowFuse Tables with a little help from the Assistant",{"path":1485,"title":1486},"\u002Fchangelog\u002F2025\u002F09\u002Fexpose-saml-groups-to-dashboard","Allow SSO groups to be shared with the Node-RED Dashboard",{"path":1488,"title":1489},"\u002Fchangelog\u002F2025\u002F09\u002Finline-assist","FlowFuse Expert can help you write code",{"path":1491,"title":1492},"\u002Fchangelog\u002F2025\u002F09\u002Fretiring-flowforge-device-agent","No more @flowforge\u002Fflowforge-device-agent releases",{"path":1494,"title":1495},"\u002Fchangelog\u002F2025\u002F09\u002Frevised-instance-snapshot-ui","Streamlined Snapshot Management",{"path":1497,"title":1498},"\u002Fchangelog\u002F2025\u002F09\u002Fteam-broker-async-api","Capture Async API data from FlowFuse Team Broker",{"path":1500,"title":1501},"\u002Fchangelog\u002F2025\u002F10\u002Fapplication-level-rbac","Application-level access control for Enterprise teams",{"path":1503,"title":1504},"\u002Fchangelog\u002F2025\u002F10\u002Fbulk-device-group-assignment","Easier Access to Bulk Device Group Management",{"path":1506,"title":1507},"\u002Fchangelog\u002F2025\u002F10\u002Fduplicate-instances-across-applications","Duplicate Instances Across Different Applications",{"path":1509,"title":1510},"\u002Fchangelog\u002F2025\u002F10\u002Fimport-flows-on-instance-creation","Import flows during instance creation",{"path":1512,"title":1513},"\u002Fchangelog\u002F2025\u002F10\u002Fmcp-nodes","FlowFuse MCP Server Nodes",{"path":1515,"title":1516},"\u002Fchangelog\u002F2025\u002F10\u002Fonnx-nodes","FlowFuse AI Nodes",{"path":1518,"title":1519},"\u002Fchangelog\u002F2025\u002F10\u002Fsettings-page-device-group-management","Device Group Management from Settings Page",{"path":1521,"title":1522},"\u002Fchangelog\u002F2025\u002F11\u002Fff-expert-update","FlowFuse Expert Update",{"path":1524,"title":1525},"\u002Fchangelog\u002F2025\u002F11\u002Fminimum-nodejs-version","Node.js v20 Minimum Version Requirement",{"path":1527,"title":1528},"\u002Fchangelog\u002F2025\u002F11\u002Fsso-session","SSO control over Session life",{"path":1530,"title":1531},"\u002Fchangelog\u002F2025\u002F12\u002Fff-expert-mcp-insights","FlowFuse Expert: Now with MCP-Powered Insights",{"path":1533,"title":1534},"\u002Fchangelog\u002F2025\u002F12\u002Fscheduled-maintenance","Scheduled Maintenance Mode",{"path":1536,"title":1537},"\u002Fchangelog\u002F2026\u002F01\u002Fdevice-agent-containers","Device Agent Docker Containers updated",{"path":1539,"title":1540},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-manage-palette","FlowFuse Expert: Enhanced Palette Integration",{"path":1542,"title":1543},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-nr-actions","FlowFuse Expert: Integration with Node-RED",{"path":1545,"title":1546},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-palette-queries","FlowFuse Expert: Palette Queries",{"path":1548,"title":1549},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-select-flows","FlowFuse Expert: Ask about your flows",{"path":1551,"title":1552},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-rbacs","FlowFuse Expert: MCP-Powered Insights with RBACs",{"path":1554,"title":1555},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-security","FlowFuse Expert: MCP-Powered Insights",{"path":1557,"title":1558},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options","Set Node.js Options for Remote Instances",{"path":1560,"title":1561},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context","FlowFuse Expert: Helping you make sense of your debug log",{"path":1563,"title":1564},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner","FlowFuse Expert: Never Miss an Update",{"path":1566,"title":1567},"\u002Fchangelog\u002F2026\u002F02\u002Fha-instance-rolling-restart","HA Hosted Instance Rolling Restart",{"path":1569,"title":1570},"\u002Fchangelog\u002F2026\u002F02\u002Fremote-instances-immersive-editor","Immersive Mode for Remote Instances",{"path":1572,"title":1573},"\u002Fchangelog\u002F2026\u002F02\u002Frestoring-snapshots-to-remote-instances","Restoring snapshots to developer-mode Remote Instances",{"path":1575,"title":1576},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops","Azure DevOps Pipeline support",{"path":1578,"title":1579},"\u002Fchangelog\u002F2026\u002F03\u002Fdeveloper-mode-in-immersive-editor","Developer Mode Now Accessible from the Immersive Editor",{"path":1581,"title":1582},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title","Embedded Editor Now Shows Active Tab",{"path":1584,"title":1585},"\u002Fchangelog\u002F2026\u002F03\u002Fmarch-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on March 28th, 2026",{"path":1587,"title":1588},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor","View Snapshot Details in the Immersive Editor",{"path":1590,"title":1591},"\u002Fchangelog\u002F2026\u002F04\u002Fexpert-action-links","FlowFuse expert action links",{"path":1593,"title":1594},"\u002Fchangelog\u002F2026\u002F04\u002Fhosted-instance-url-env-var","Hosted Instances know their own URL",{"path":1596,"title":853},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer",{"path":1598,"title":1599},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer","Richer snapshot comparison view",{"path":1601,"title":1602},"\u002Fchangelog\u002F2026\u002F05\u002Fai-opt-out","AI Feature Opt-Out for Teams",{"path":1604,"title":1605},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building","FlowFuse Expert Builds Your Application",{"path":1607,"title":1608},"\u002Fchangelog\u002F2026\u002F05\u002Fsingle-sso-provider","Single SSO provider for all users",{"path":1610,"title":1611},"\u002Fchangelog\u002F2026\u002F06\u002Fdark-mode","Dark Mode",{"path":1613,"title":1614},"\u002Fchangelog\u002F2026\u002F06\u002Fdevice-agent-v4-released","Device Agent v4 released",{"path":1616,"title":1617},"\u002Fchangelog\u002F2026\u002F06\u002Fgeneric-git-server-support","Connect Pipelines to Any Git Server",{"path":1619,"title":1620},"\u002Fchangelog\u002F2026\u002F06\u002Fjuly-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on July 11th, 2026",{"path":1622,"title":1623},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups","Application Roles from SSO Groups",{"path":1625,"title":1626},"\u002Fchangelog\u002F2026\u002F07\u002Fdevice-agent-onboarding","Getting started with FlowFuse straight from the terminal",{"path":1628,"title":1629},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-enhancements","FlowFuse Expert Enhancements",{"path":1631,"title":1632},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation","FlowFuse Expert Can Now Work With Your Tables",{"path":1634,"title":1635},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats","Team Scoped Personal Access Tokens",{"path":1637,"title":1638},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards","A Dedicated Home for Your Dashboards",[],1786105897234]