[{"data":1,"prerenderedAt":1896},["ShallowReactive",2],{"blog-\u002Fblog\u002F2025\u002F12\u002Fnode-red-buffer-parser-industrial-data":3,"featureCatalog":967,"changelog-titles":1361,"blog-all-for-related":1895},{"id":4,"title":5,"authors":6,"body":8,"cta":937,"date":941,"description":942,"extension":943,"features":944,"image":945,"lastUpdated":946,"meta":947,"navigation":250,"path":957,"release":944,"seo":958,"sitemap":959,"stem":960,"subtitle":961,"tags":962,"tldr":965,"video":944,"__hash__":966},"blog\u002Fblog\u002F2025\u002F12\u002Fnode-red-buffer-parser-industrial-data.md","Node-RED Buffer Parser Guide: Decode Modbus and Industrial Device Data (2026)",[7],"sumit-shinde",{"type":9,"value":10,"toc":924},"minimark",[11,24,27,30,35,38,48,51,54,65,72,75,78,81,85,88,93,96,118,121,124,132,135,291,294,297,311,315,322,355,359,362,386,396,421,425,428,436,442,445,454,460,469,475,478,482,485,498,501,574,579,587,591,594,653,661,669,679,683,686,700,703,752,755,777,792,815,818,821,831,835,838,848,862,871,875,878,881,887,897,900,904,907,910,920],[12,13,14,15,19,20,23],"p",{},"Legacy industrial devices communicate in bytes. Your temperature sensor doesn't send you ",[16,17,18],"code",{},"{\"temp\": 23.5}"," - it sends you ",[16,21,22],{},"[1, 3, 4, 1, 44, 0, 200, 190, 125]",". Those numbers are meaningless unless you know how to decode them.",[12,25,26],{},"This is what makes working with legacy PLCs and Modbus sensors challenging. You're not dealing with modern APIs that return JSON. You're dealing with raw binary data where byte 3 might be temperature and byte 4 might be humidity, and if you read them in the wrong order, everything breaks.",[12,28,29],{},"Node-RED's Buffer Parser node solves this problem. Instead of writing JavaScript to manually decode every buffer, you configure it once visually and it handles the conversion automatically. In this article, we'll learn how to use this node effectively.",[31,32,34],"h2",{"id":33},"understanding-buffer-data","Understanding Buffer Data",[12,36,37],{},"When your Modbus sensor responds to a query, Node-RED shows you something like this in the debug panel:",[39,40,45],"pre",{"className":41,"code":43,"language":44},[42],"language-text","[1, 3, 4, 1, 44, 0, 200, 190, 125]\n","text",[16,46,43],{"__ignoreMap":47},"",[12,49,50],{},"Nine bytes. Each one is a number between 0 and 255. This data is completely meaningless without context.",[12,52,53],{},"Byte 0 might be a device address. Bytes 3 and 4 together might encode temperature. But the buffer itself doesn't tell you any of this - you need the device manual to figure out what goes where.",[12,55,56,57,60,61,64],{},"Take bytes 3 and 4: ",[16,58,59],{},"1"," and ",[16,62,63],{},"44",". If you're supposed to read them as a 16-bit integer, that's either 300 or 11265 depending on byte order. If the device uses a scale factor of 10, the actual temperature could be 30.0°C or 1126.5°C. Get any part of this wrong and your dashboard shows nonsense.",[12,66,67,68,71],{},"So why do devices work this way? Why not just send ",[16,69,70],{},"{\"temperature\": 30.0}","?",[12,73,74],{},"That JSON message takes 21 bytes. The same information in binary takes 2 bytes. When you're on a serial connection running at 9600 baud, sending thousands of sensor readings per day, those extra bytes add up fast.",[12,76,77],{},"More importantly, this is how industrial hardware has worked since 1979. Modbus was designed when PLCs had kilobytes of memory. Modern factories still run equipment from the 90s. The protocol isn't going to change because it would be more convenient for us.",[12,79,80],{},"You work with what's on the factory floor, this means you need to parse buffers.",[31,82,84],{"id":83},"example-temperature-and-humidity-sensor","Example: Temperature and Humidity Sensor",[12,86,87],{},"Suppose you have a temperature and humidity sensor connected via Modbus RTU. When you query it for data, you get this buffer:",[39,89,91],{"className":90,"code":43,"language":44},[42],[16,92,43],{"__ignoreMap":47},[12,94,95],{},"The device manual says this buffer breaks down as:",[97,98,99,103,106,109,112,115],"ul",{},[100,101,102],"li",{},"Byte 0: Device address (1)",[100,104,105],{},"Byte 1: Modbus function code (3 = read holding registers)",[100,107,108],{},"Byte 2: Data length in bytes (4)",[100,110,111],{},"Bytes 3-4: Temperature reading",[100,113,114],{},"Bytes 5-6: Humidity reading",[100,116,117],{},"Bytes 7-8: CRC checksum",[12,119,120],{},"You need to extract temperature and humidity. Everything else is Modbus protocol overhead.",[12,122,123],{},"The manual also specifies:",[97,125,126,129],{},[100,127,128],{},"Temperature: 16-bit unsigned integer, big-endian, divide by 10 for actual value in °C",[100,130,131],{},"Humidity: 16-bit unsigned integer, big-endian, divide by 10 for actual value in %RH",[12,133,134],{},"Without Buffer Parser, you'd write a function node like this:",[39,136,140],{"className":137,"code":138,"language":139,"meta":47,"style":47},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const buffer = Buffer.from(msg.payload);\nconst temperature = buffer.readUInt16BE(3) \u002F 10;\nconst humidity = buffer.readUInt16BE(5) \u002F 10;\n\nmsg.payload = { temperature, humidity };\nreturn msg;\n","javascript",[16,141,142,180,216,245,252,279],{"__ignoreMap":47},[143,144,147,151,155,159,162,165,169,172,174,177],"span",{"class":145,"line":146},"line",1,[143,148,150],{"class":149},"spNyl","const",[143,152,154],{"class":153},"sTEyZ"," buffer ",[143,156,158],{"class":157},"sMK4o","=",[143,160,161],{"class":153}," Buffer",[143,163,164],{"class":157},".",[143,166,168],{"class":167},"s2Zo4","from",[143,170,171],{"class":153},"(msg",[143,173,164],{"class":157},[143,175,176],{"class":153},"payload)",[143,178,179],{"class":157},";\n",[143,181,183,185,188,190,193,195,198,201,205,208,211,214],{"class":145,"line":182},2,[143,184,150],{"class":149},[143,186,187],{"class":153}," temperature ",[143,189,158],{"class":157},[143,191,192],{"class":153}," buffer",[143,194,164],{"class":157},[143,196,197],{"class":167},"readUInt16BE",[143,199,200],{"class":153},"(",[143,202,204],{"class":203},"sbssI","3",[143,206,207],{"class":153},") ",[143,209,210],{"class":157},"\u002F",[143,212,213],{"class":203}," 10",[143,215,179],{"class":157},[143,217,219,221,224,226,228,230,232,234,237,239,241,243],{"class":145,"line":218},3,[143,220,150],{"class":149},[143,222,223],{"class":153}," humidity ",[143,225,158],{"class":157},[143,227,192],{"class":153},[143,229,164],{"class":157},[143,231,197],{"class":167},[143,233,200],{"class":153},[143,235,236],{"class":203},"5",[143,238,207],{"class":153},[143,240,210],{"class":157},[143,242,213],{"class":203},[143,244,179],{"class":157},[143,246,248],{"class":145,"line":247},4,[143,249,251],{"emptyLinePlaceholder":250},true,"\n",[143,253,255,258,260,263,265,268,271,274,276],{"class":145,"line":254},5,[143,256,257],{"class":153},"msg",[143,259,164],{"class":157},[143,261,262],{"class":153},"payload ",[143,264,158],{"class":157},[143,266,267],{"class":157}," {",[143,269,270],{"class":153}," temperature",[143,272,273],{"class":157},",",[143,275,223],{"class":153},[143,277,278],{"class":157},"};\n",[143,280,282,286,289],{"class":145,"line":281},6,[143,283,285],{"class":284},"s7zQu","return",[143,287,288],{"class":153}," msg",[143,290,179],{"class":157},[12,292,293],{},"This works, but it's also fragile. When you need to add a pressure reading next month, you're editing code and hoping you don't break the offset calculations. When someone else looks at this flow, they have no idea what's happening without reading the function and if they don't understand JavaScript, they're stuck.",[12,295,296],{},"Buffer Parser turns this into configuration you can see and modify without touching code. Let's walk through a practical example.",[298,299,300],"blockquote",{},[12,301,302,303,310],{},"But before you start, make sure you have a Node-RED instance running on your edge device. The fastest, easiest, and most production-ready way is using FlowFuse. If you don't have an account yet, create one with our ",[304,305,309],"a",{"href":306,"rel":307},"https:\u002F\u002Fapp.flowfuse.com\u002F",[308],"nofollow","free trial",". FlowFuse simplifies managing remote instances and provides the ability to create hosted instances, no matter how many you need to manage, it makes it easy. There are no deployment headaches either; everything is managed by FlowFuse with built-in security. You'll also get access to tools such as DevOps pipelines, snapshots for recovery, audit logs, real-time collaboration with granular role-based access control (RBAC), and much more.",[31,312,314],{"id":313},"setting-up-the-buffer-parser","Setting Up the Buffer Parser",[12,316,317,318,321],{},"The Buffer Parser node is part of the ",[16,319,320],{},"node-red-contrib-buffer-parser"," package. To install it:",[323,324,325,328,331,338,345,350],"ol",{},[100,326,327],{},"Open your Node-RED editor",[100,329,330],{},"Click the menu icon (three horizontal lines) in the top-right corner",[100,332,333,334],{},"Select ",[335,336,337],"strong",{},"Manage palette",[100,339,340,341,344],{},"Go to the ",[335,342,343],{},"Install"," tab",[100,346,347,348],{},"Search for ",[16,349,320],{},[100,351,352,353],{},"Click ",[335,354,343],{},[31,356,358],{"id":357},"building-the-flow","Building the Flow",[12,360,361],{},"Now let's create a flow to parse the buffer data. For this example, we'll use an Inject node to simulate Modbus data, so while reading you can follow along and learn.",[323,363,364,371,374,381],{},[100,365,366,367,370],{},"Drag an ",[335,368,369],{},"Inject"," node from the palette onto the canvas",[100,372,373],{},"Double-click the Inject node to open its configuration",[100,375,376,377,380],{},"Set ",[335,378,379],{},"msg.payload"," to \"Buffer\" from the dropdown",[100,382,383,384],{},"In the field, enter: ",[16,385,22],{},[12,387,388,393],{},[389,390],"img",{"alt":391,"dataZoomable":47,"src":392},"Node-RED Inject node configuration showing payload set to a Buffer array for simulating data.","\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fsimulate-data-inject.png",[394,395,391],"em",{},[323,397,398,403,409,415,418],{"start":254},[100,399,352,400],{},[335,401,402],{},"Done",[100,404,405,406,370],{},"Drag a ",[335,407,408],{},"Buffer Parser",[100,410,405,411,414],{},[335,412,413],{},"Debug"," node onto the canvas",[100,416,417],{},"Connect the Inject node output to the Buffer Parser node input",[100,419,420],{},"Connect the Buffer Parser node output to the Debug node input",[31,422,424],{"id":423},"configuring-the-buffer-parser","Configuring the Buffer Parser",[12,426,427],{},"Now let's configure the Buffer Parser node to extract temperature and humidity.",[323,429,430],{},[100,431,432,433,435],{},"Double-click the ",[335,434,408],{}," node to open its configuration panel",[12,437,438],{},[389,439],{"alt":440,"dataZoomable":47,"src":441},"Buffer Parser Configuration","\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fbuffer-parser.png",[12,443,444],{},"You'll see several fields. Most of them you can ignore for basic parsing. Here's what matters:",[12,446,447,450,451,453],{},[335,448,449],{},"Property",": Leave this set to ",[16,452,379],{},". This tells the node where to find your buffer data.",[12,455,456,459],{},[335,457,458],{},"Specification:"," Keep this set to UI Specification. This is the visual method, allowing you to configure everything directly within the node.",[12,461,462,465,466,164],{},[335,463,464],{},"Result Type",": Set this to \"Key\u002Fvalue\". This gives you clean JSON output like ",[16,467,468],{},"{\"temperature\": 30.0, \"humidity\": 20.0}",[12,470,471,474],{},[335,472,473],{},"Byte Swap",": Leave this set to \"No swap\" for now. Byte swapping reorders bytes within multi-byte values and is only needed when your device stores data in an unusual format that doesn't match standard big-endian or little-endian conventions. If you've selected the correct endianness (like uint16be or uint16le) and values still look wrong, you might need swap16 (for 16-bit values), swap32 (for 32-bit values), or swap64 (for 64-bit values). Most devices won't require this.",[12,476,477],{},"Now let's configure the actual data extraction.",[31,479,481],{"id":480},"extracting-temperature","Extracting Temperature",[12,483,484],{},"Let's add the first field to extract temperature from bytes 3-4.",[323,486,487],{},[100,488,489,490,493,494,497],{},"Click the ",[335,491,492],{},"add"," button at the bottom of the configuration panel to create a new row in ",[335,495,496],{},"buffer parser"," node",[12,499,500],{},"You'll see several fields appear in the row. Let's fill them in:",[323,502,503,514,545,553,561],{"start":182},[100,504,505,506,509,510,513],{},"In the ",[335,507,508],{},"Name"," field, enter ",[16,511,512],{},"temperature",". This is what you'll see in your output JSON.",[100,515,505,516,519,520,523],{},[335,517,518],{},"Type"," dropdown, select ",[16,521,522],{},"uint16be",[97,524,525,542],{},[100,526,527,528],{},"This breaks down as:\n",[97,529,530,536],{},[100,531,532,535],{},[16,533,534],{},"uint16"," = 16-bit unsigned integer (positive values only)",[100,537,538,541],{},[16,539,540],{},"be"," = big-endian (reads bytes in order: first byte is high, second is low)",[100,543,544],{},"The manual specified \"16-bit unsigned integer, big-endian\" so this is a direct match",[100,546,505,547,509,550,552],{},[335,548,549],{},"Offset",[16,551,204],{},". Temperature data starts at byte 3. Offset counts from zero, so byte 0 is first, byte 3 is fourth.",[100,554,505,555,509,558,560],{},[335,556,557],{},"Length",[16,559,59],{},". We're reading one value, not an array of values. Length stays at 1 for single values.",[100,562,505,563,509,566,569,570,573],{},[335,564,565],{},"Scale",[16,567,568],{},"0.1",". Here's the important part: the Buffer Parser ",[335,571,572],{},"multiplies"," by the scale value, so to divide by 10, you need to multiply by 0.1. Raw value 300 × 0.1 = 30.0.",[298,575,576],{},[12,577,578],{},"Note: Beyond simple multiplication, the Buffer Parser also supports scale equations for more complex transformations. You can use operators like >> for bit shifting (e.g., >>4 to shift right 4 bits), + or - for offsets (e.g., +42 to add 42), \u002F or * for division\u002Fmultiplication, ** for exponents, and comparison operators like ==, !=, >, \u003C for boolean results. These equations are applied after any mask, giving you powerful options for handling bit-packed data or applying formulas without writing JavaScript.",[12,580,581,582,60,584,586],{},"Let's verify this works with a simple calculation. Bytes 3 and 4 in our buffer are ",[16,583,59],{},[16,585,63],{},". Big-endian means we read them in order: (1 × 256) + 44 = 300 in decimal. Multiplied by 0.1 gives 30.0°C. Perfect.",[31,588,590],{"id":589},"extracting-humidity","Extracting Humidity",[12,592,593],{},"Now let's add the second field to extract humidity from bytes 5-6.",[323,595,596,601,609,632,639,646],{},[100,597,489,598,600],{},[335,599,492],{}," button again to create a second row",[100,602,505,603,509,605,608],{},[335,604,508],{},[16,606,607],{},"humidity",". This will appear as the key in your output JSON.",[100,610,505,611,519,613,615],{},[335,612,518],{},[16,614,522],{},[97,616,617],{},[100,618,619,620],{},"Same as temperature:\n",[97,621,622,627],{},[100,623,624,626],{},[16,625,534],{}," = 16-bit unsigned integer (no negative values)",[100,628,629,631],{},[16,630,540],{}," = big-endian (reads bytes in order)",[100,633,505,634,509,636,638],{},[335,635,549],{},[16,637,236],{},". Humidity data starts at byte 5.",[100,640,505,641,509,643,645],{},[335,642,557],{},[16,644,59],{},". We're reading a single humidity value.",[100,647,505,648,509,650,652],{},[335,649,565],{},[16,651,568],{},". Again, multiply by 0.1 to effectively divide by 10.",[12,654,655,659],{},[389,656],{"alt":657,"dataZoomable":47,"src":658},"Buffer Parser configuration rows defining temperature and humidity extraction using uint16be with offsets and scale values.","\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fbuffer-parser-temp-and-hum.png",[394,660,657],{},[323,662,664],{"start":663},7,[100,665,352,666,668],{},[335,667,402],{}," to save the configuration",[12,670,671,672,60,675,678],{},"Let's verify this. Bytes 5 and 6 are ",[16,673,674],{},"0",[16,676,677],{},"200",". Big-endian reads them in order: (0 × 256) + 200 = 200. Multiplied by 0.1 = 20.0% RH. Perfect.",[31,680,682],{"id":681},"testing-the-configuration","Testing the Configuration",[12,684,685],{},"Now let's test if everything works correctly.",[323,687,688,694,697],{},[100,689,352,690,693],{},[335,691,692],{},"Deploy"," in the top-right corner of the Node-RED editor",[100,695,696],{},"Click the button on the left side of the Inject node to trigger it",[100,698,699],{},"Open the Debug panel on the right side of the editor",[12,701,702],{},"Your Buffer Parser output should look like:",[39,704,708],{"className":705,"code":706,"language":707,"meta":47,"style":47},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"temperature\": 30.0,\n  \"humidity\": 20.0\n}\n","json",[16,709,710,715,734,747],{"__ignoreMap":47},[143,711,712],{"class":145,"line":146},[143,713,714],{"class":157},"{\n",[143,716,717,720,722,725,728,731],{"class":145,"line":182},[143,718,719],{"class":157},"  \"",[143,721,512],{"class":149},[143,723,724],{"class":157},"\"",[143,726,727],{"class":157},":",[143,729,730],{"class":203}," 30.0",[143,732,733],{"class":157},",\n",[143,735,736,738,740,742,744],{"class":145,"line":218},[143,737,719],{"class":157},[143,739,607],{"class":149},[143,741,724],{"class":157},[143,743,727],{"class":157},[143,745,746],{"class":203}," 20.0\n",[143,748,749],{"class":145,"line":247},[143,750,751],{"class":157},"}\n",[12,753,754],{},"This example should work as shown, but with your actual device data, the output may differ. If the values in your JSON don't match what you expect, you're likely running into one of a few common issues. Here's how to recognize and fix them.",[12,756,757,758,761,762,765,766,769,770,210,773,776],{},"If your values are way off, for example, you expect 300 but see 11265, or expect 100 but see 25600, you've got the endianness backwards. Change ",[16,759,760],{},"int16le"," to ",[16,763,764],{},"int16be"," (or vice versa) in the Type field. Alternatively, try setting Byte Swap to ",[16,767,768],{},"swap16"," (or ",[16,771,772],{},"swap32",[16,774,775],{},"swap64"," for larger data types).",[12,778,779,780,761,783,769,785,761,788,791],{},"If you're seeing negative numbers when you know the value should be positive, you're using signed integers when you need unsigned. Change ",[16,781,782],{},"int16",[16,784,534],{},[16,786,787],{},"int32",[16,789,790],{},"uint32",") in the Type field.",[12,793,794,795,798,799,801,802,804,805,807,808,801,811,814],{},"If your values are exactly 256 times too large or too small, you're using the wrong data type size. If you're using ",[16,796,797],{},"int8"," but the device sends 16-bit values, change it to ",[16,800,764],{}," or ",[16,803,760],{},". If you're using ",[16,806,782],{}," but the device sends 32-bit values, change it to ",[16,809,810],{},"int32be",[16,812,813],{},"int32le",". Check your device manual for the correct bit size.",[12,816,817],{},"If you're getting raw values instead of scaled values (for example, 300 instead of 30.0), it means you either forgot to set the Scale field or set it incorrectly. If the device manual says ‘divide by 10,’ enter 0.1 in the Scale field (not 10). Remember: the Buffer Parser multiplies by the scale, so to divide by 10, you must multiply by 0.1",[12,819,820],{},"If every number looks completely wrong, recount your offsets carefully. Check each Offset value and verify against your device manual. Remember that byte 0 is first, byte 1 is second, byte 3 is fourth, and so on. The most common mistake is being off by one byte.",[12,822,823,824,827,828,830],{},"If you're getting only one value when the device sends multiple, check the Length field. If your device sends an array of 5 temperature readings starting at byte 10, set Offset to ",[16,825,826],{},"10"," and Length to ",[16,829,236],{},". The node will return an array of values instead of a single value.",[31,832,834],{"id":833},"what-about-those-other-fields","What About Those Other Fields?",[12,836,837],{},"The configuration screen has more fields we didn't touch:",[12,839,840,843,844,847],{},[335,841,842],{},"Bit Offset"," only matters when you're using the ",[16,845,846],{},"bool"," type to extract a single bit from a byte. This field is only visible when the bool type is selected. If you need to check whether bit 3 of byte 7 is set (like a \"pump running\" status flag), you'd set Offset to 7, Type to bool, and Bit Offset to 3. For reading whole numbers, ignore this field.",[12,849,850,853,854,857,858,861],{},[335,851,852],{},"Mask"," is for when multiple values are packed into the same byte. Industrial protocols do this to save space - why waste 8 bits on a simple on\u002Foff flag when you can pack eight flags into one byte? If bits 0-3 hold one sensor reading and bits 4-7 hold another, you use masks like ",[16,855,856],{},"0x0F"," (binary: 00001111, lower 4 bits) and ",[16,859,860],{},"0xF0"," (binary: 11110000, upper 4 bits) to extract each value separately. You'll know when you need this because the manual will say something like \"status bits 0-3 contain pump speed, bits 4-7 contain valve position.\"",[12,863,864,865,870],{},"For more details on the Buffer Parser node, you can also explore the official ",[304,866,869],{"href":867,"rel":868},"https:\u002F\u002Fflows.nodered.org\u002Fnode\u002Fnode-red-contrib-buffer-parser",[308],"Buffer Parser node documentation",", it's comprehensive, well-maintained, and a great reference when working with more advanced parsing options.",[31,872,874],{"id":873},"when-you-need-more-complex-parsing","When You Need More Complex Parsing",[12,876,877],{},"Buffer Parser handles most industrial protocols, but not everything.",[12,879,880],{},"If you need conditional parsing where the structure changes based on values in the buffer itself, you'll need JavaScript. For example, if byte 2 tells you how many temperature readings follow and that number varies, Buffer Parser can't handle variable-length structures dynamically.",[12,882,883,884,886],{},"If you're dealing with bit-packed data where individual bits within bytes have meaning (common in PLC memory maps), you can use the ",[16,885,846],{}," type with Bit Offset, but extracting many bits gets tedious. Sometimes a function node doing bitwise operations is cleaner.",[298,888,889],{},[12,890,891,892,896],{},"If you're using FlowFuse, you don’t even need to write JavaScript yourself. You can simply ask the ",[304,893,895],{"href":894},"\u002Fblog\u002F2025\u002F07\u002Fflowfuse-ai-assistant-better-node-red-manufacturing\u002F","FlowFuse Expert"," in plain English, paste what your device manual says, and it will generate the Function node directly on your Node-RED canvas.",[12,898,899],{},"For standard Modbus registers, serial sensor protocols, and fixed-structure PLC memory layouts - which covers most industrial data, Buffer Parser does exactly what you need.",[31,901,903],{"id":902},"final-thoughts","Final Thoughts",[12,905,906],{},"Binary data from industrial devices isn’t going anywhere. Modbus isn’t disappearing. Neither are PLCs from the 90s or sensors that still speak in raw bytes. This is the reality of factory floors, and it will be for a long time.",[12,908,909],{},"The Buffer Parser makes that reality manageable. You don't need to be a buffer expert or master bitwise operations. You just need your device manual, a few minutes to configure the node, and, occasionally, the patience to flip the endianness when a value looks strange. The buffers are still just arrays of bytes, but now you have a tool that turns them into meaningful data without rewriting JavaScript every time you add a new sensor. That's worth something.",[12,911,912,913,919],{},"And if you’re managing industrial devices at scale, handling remote Node-RED instances, deploying updates across fleets of edge hardware, or keeping everything secure and consistent, FlowFuse can remove much of the daily friction. With features like remote deployment, snapshots, secure device connectivity, and the FlowFuse AI Expert built right into the editor, you can ",[335,914,915],{},[304,916,918],{"href":917},"\u002Fbook-demo\u002F","book a free demo",". Our team will understand your requirements, show you exactly how FlowFuse fits into your workflow, and guide you on getting the most out of your industrial data pipelines.",[921,922,923],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}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);}",{"title":47,"searchDepth":247,"depth":247,"links":925},[926,927,928,929,930,931,932,933,934,935,936],{"id":33,"depth":182,"text":34},{"id":83,"depth":182,"text":84},{"id":313,"depth":182,"text":314},{"id":357,"depth":182,"text":358},{"id":423,"depth":182,"text":424},{"id":480,"depth":182,"text":481},{"id":589,"depth":182,"text":590},{"id":681,"depth":182,"text":682},{"id":833,"depth":182,"text":834},{"id":873,"depth":182,"text":874},{"id":902,"depth":182,"text":903},{"type":938,"title":939,"description":940},"sign-up","Parse Industrial Data at Scale with FlowFuse","FlowFuse gives you a managed Node-RED platform with remote deployment, snapshots, and the FlowFuse AI Expert built into the editor, so you can decode industrial buffers and manage edge devices without the operational overhead.","2025-12-10","Learn how to parse Modbus and industrial device buffers in Node-RED using the Buffer Parser node. Visual configuration, no coding required. Handle endianness and scaling easily.","md",null,"\u002Fblog\u002F2025\u002F12\u002Fimages\u002Fnode-red-buffer-parser-industrial-data.png","2026-06-03",{"keywords":948,"excerpt":949},"node-red, buffer parser, modbus, modbus rtu, modbus tcp, industrial automation, plc, raw data parsing, binary data, payload decoding, node-red tutorial, node-red buffer parser, node-red modbus parsing, industrial endianness, byte order, bitmask, byte offset, data decoding, data acquisition, serial communication, legacy devices, industrial sensors, modbus registers, buffer parsing guide",{"type":9,"value":950},[951],[12,952,14,953,19,955,23],{},[16,954,18],{},[16,956,22],{},"\u002Fblog\u002F2025\u002F12\u002Fnode-red-buffer-parser-industrial-data",{"title":5,"description":942},{"loc":957},"blog\u002F2025\u002F12\u002Fnode-red-buffer-parser-industrial-data","A practical guide to visual buffer parsing in Node-RED",[963,964],"flowfuse","how-to","Legacy industrial devices like Modbus sensors and PLCs communicate in raw binary buffers, compact byte sequences where each position encodes a specific value rather than human-readable JSON, because binary is far more efficient on low-bandwidth serial links. Node-RED's Buffer Parser node lets you decode these buffers visually through configuration rather than writing custom JavaScript, handling byte offsets, endianness, data types, and scaling factors automatically.","e1N1duff1gOzLuMQmmpFfbRfxlYyD70u8j-ocbLrLCk",{"id":968,"extension":969,"meta":970,"sections":971,"stem":1359,"__hash__":1360},"featureCatalog\u002Ffeature-catalog.yml","yml",{},[972,1023,1124,1185,1262,1341],{"id":973,"title":974,"features":975},"ai-automation","AI & Automation",[976,986,996,1006,1012,1018],{"id":977,"title":978,"description":979,"docsLink":980,"changelog":981,"tiers":985},"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",[982],{"url":983,"release":984},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner\u002F","2.28",{"edge":250,"hub":250,"fleet":250},{"id":987,"title":988,"description":989,"docsLink":990,"changelog":991,"subfeature":250,"showOnPricing":994,"tiers":995},"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",[992],{"url":993,"release":984},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context\u002F",false,{"edge":250,"hub":250,"fleet":250},{"id":997,"title":998,"description":999,"docsLink":1000,"changelog":1001,"subfeature":250,"showOnPricing":994,"tiers":1005},"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",[1002],{"url":1003,"release":1004},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building\u002F","2.30",{"edge":250,"hub":250,"fleet":250},{"id":1007,"title":1008,"description":1009,"docsLink":1010,"subfeature":250,"beta":250,"showOnPricing":994,"tiers":1011},"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":250,"hub":250,"fleet":250},{"id":1013,"title":1014,"description":1015,"docsLink":1016,"tiers":1017},"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":250,"hub":250,"fleet":250},{"id":1019,"title":1020,"description":1021,"tiers":1022},"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":250,"hub":250,"fleet":250},{"id":1024,"title":1025,"features":1026},"build","Build",[1027,1033,1039,1049,1055,1061,1065,1071,1077,1085,1091,1095,1099,1108,1116],{"id":1028,"title":1029,"description":1030,"docsLink":1031,"tiers":1032},"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":250,"hub":994,"fleet":250},{"id":1034,"title":1035,"description":1036,"docsLink":1037,"tiers":1038},"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":250,"hub":250,"fleet":250},{"id":1040,"title":1041,"description":1042,"docsLink":1043,"changelog":1044,"tiers":1048},"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",[1045],{"url":1046,"release":1047},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation\u002F","2.33",{"edge":250,"hub":250,"fleet":250},{"id":1050,"title":1051,"description":1052,"docsLink":1053,"tiers":1054},"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":250,"hub":250,"fleet":250},{"id":1056,"title":1057,"description":1058,"docsLink":1059,"showOnPricing":994,"tiers":1060},"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":250,"hub":250,"fleet":250},{"id":1062,"title":1063,"showOnPricing":994,"tiers":1064},"static-assets","Static Assets",{"edge":250,"hub":250,"fleet":250},{"id":1066,"title":1067,"description":1068,"docsLink":1069,"tiers":1070},"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":250,"hub":250,"fleet":250},{"id":1072,"title":1073,"description":1074,"docsLink":1075,"tiers":1076},"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":250,"hub":250,"fleet":250},{"id":1078,"title":1079,"description":1080,"changelog":1081,"subfeature":250,"showOnPricing":994,"tiers":1084},"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.",[1082],{"url":1083,"release":1047},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards\u002F",{"edge":250,"hub":250,"fleet":250},{"id":1086,"title":1087,"description":1088,"docsLink":1089,"tiers":1090},"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":250,"hub":250,"fleet":250},{"id":1092,"title":1093,"subfeature":250,"showOnPricing":994,"tiers":1094},"blueprints-ot-apps","Blueprints - OT APPS",{"edge":250,"hub":994,"fleet":250},{"id":1096,"title":1097,"subfeature":250,"showOnPricing":994,"tiers":1098},"blueprints-it-apps","Blueprints - IT APPS",{"edge":994,"hub":250,"fleet":994},{"id":1100,"title":1101,"description":1102,"changelog":1103,"showOnPricing":994,"tiers":1107},"immersive-editor-snapshots","Snapshot Details in Immersive Editor","View and manage snapshot details directly inside the immersive editor without leaving your editing session.",[1104],{"url":1105,"release":1106},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor\u002F","2.29",{"edge":250,"hub":250,"fleet":250},{"id":1109,"title":1110,"description":1111,"changelog":1112,"showOnPricing":994,"tiers":1115},"immersive-editor-drawer","Customisable Immersive Editor Drawer","Pin, move, resize, or full-screen the immersive editor drawer. Your preferences are remembered between sessions.",[1113],{"url":1114,"release":1004},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer\u002F",{"edge":250,"hub":250,"fleet":250},{"id":1117,"title":1118,"description":1119,"changelog":1120,"showOnPricing":994,"tiers":1123},"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.",[1121],{"url":1122,"release":1106},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title\u002F",{"edge":250,"hub":250,"fleet":250},{"id":1125,"title":692,"features":1126},"deploy",[1127,1133,1142,1148,1154,1160,1166,1172,1177],{"id":1128,"title":1129,"description":1130,"docsLink":1131,"tiers":1132},"hosted-instances","Cloud Instances","Run Node-RED instances managed and hosted by FlowFuse.","\u002Fdocs\u002Fuser\u002Fintroduction\u002F#creating-a-node-red-instance",{"edge":250,"hub":250,"fleet":250},{"id":1134,"title":1135,"description":1136,"docsLink":1137,"changelog":1138,"tiers":1141},"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",[1139],{"url":1140,"release":984},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options\u002F",{"edge":250,"hub":994,"fleet":250},{"id":1143,"title":1144,"description":1145,"docsLink":1146,"tiers":1147},"custom-hostnames","Custom Hostnames","Access your Node-RED application via your own domain name.","\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",{"edge":994,"hub":250,"fleet":994},{"id":1149,"title":1150,"description":1151,"docsLink":1152,"tiers":1153},"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":250,"hub":994,"fleet":250},{"id":1155,"title":1156,"description":1157,"docsLink":1158,"showOnPricing":994,"tiers":1159},"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":250,"hub":250,"fleet":250},{"id":1161,"title":1162,"description":1163,"docsLink":1164,"tiers":1165},"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":250,"hub":250,"fleet":250},{"id":1167,"title":1168,"description":1169,"docsLink":1170,"tiers":1171},"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":994,"hub":250,"fleet":994},{"id":1173,"title":1174,"description":1175,"docsLink":1170,"subfeature":250,"showOnPricing":994,"tiers":1176},"git-integration-github","GitHub","Push and pull snapshots to GitHub repositories through DevOps Pipeline Git Stages.",{"edge":994,"hub":250,"fleet":994},{"id":1178,"title":1179,"description":1180,"docsLink":1170,"changelog":1181,"subfeature":250,"showOnPricing":994,"tiers":1184},"git-integration-azure","Azure DevOps","Push and pull snapshots to Azure DevOps repositories through DevOps Pipeline Git Stages.",[1182],{"url":1183,"release":1106},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops\u002F",{"edge":994,"hub":250,"fleet":994},{"id":1186,"title":1187,"features":1188},"operate-maintain","Operate & Maintain",[1189,1195,1201,1206,1214,1218,1222,1227,1233,1239,1244,1250,1254,1258],{"id":1190,"title":1191,"description":1192,"docsLink":1193,"tiers":1194},"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":250,"hub":250,"fleet":250},{"id":1196,"title":1197,"description":1198,"docsLink":1199,"subfeature":250,"showOnPricing":994,"tiers":1200},"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":250,"hub":250,"fleet":250},{"id":1202,"title":1203,"description":1204,"docsLink":1199,"subfeature":250,"showOnPricing":994,"tiers":1205},"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":250,"hub":250,"fleet":250},{"id":1207,"title":1208,"description":1209,"changelog":1210,"subfeature":250,"showOnPricing":994,"tiers":1213},"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.",[1211],{"url":1212,"release":1106},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer\u002F",{"edge":250,"hub":250,"fleet":250},{"id":1215,"title":1216,"subfeature":250,"showOnPricing":994,"tiers":1217},"version-history-timeline","Version History Timeline",{"edge":250,"hub":250,"fleet":250},{"id":1219,"title":1220,"tiers":1221},"unlimited-workflow-executions","Unlimited Workflow Executions",{"edge":250,"hub":250,"fleet":250},{"id":1223,"title":1224,"description":1225,"tiers":1226},"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":250,"hub":994,"fleet":250},{"id":1228,"title":1229,"description":1230,"docsLink":1231,"tiers":1232},"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":250,"hub":994,"fleet":250},{"id":1234,"title":1235,"description":1236,"docsLink":1237,"tiers":1238},"high-availability","High Availability","Leverage horizontal scaling for reliable and scalable processing of your data through Node-RED.","\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F",{"edge":994,"hub":250,"fleet":994},{"id":1240,"title":1241,"description":1242,"tiers":1243},"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":250,"hub":250,"fleet":250},{"id":1245,"title":1246,"description":1247,"docsLink":1248,"subfeature":250,"showOnPricing":994,"tiers":1249},"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":250,"hub":250,"fleet":250},{"id":1251,"title":1252,"subfeature":250,"showOnPricing":994,"tiers":1253},"email-alerts","Email Alerts",{"edge":250,"hub":250,"fleet":250},{"id":1255,"title":1256,"showOnPricing":994,"tiers":1257},"api-debug-length-limit","API\u002FDebug Length Limit",{"edge":250,"hub":250,"fleet":250},{"id":1259,"title":1260,"tiers":1261},"protected-instances","Protected Instances",{"edge":994,"hub":250,"fleet":994},{"id":1263,"title":1264,"features":1265},"govern-secure","Govern and Secure",[1266,1275,1281,1287,1292,1298,1304,1310,1318,1324,1330,1336],{"id":1267,"title":1268,"description":1269,"docsLink":1270,"changelog":1271,"tiers":1274},"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",[1272],{"url":1273,"release":1047},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups\u002F",{"edge":250,"hub":250,"fleet":250},{"id":1276,"title":1277,"description":1278,"docsLink":1279,"tiers":1280},"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":250,"hub":250,"fleet":250},{"id":1282,"title":1283,"description":1284,"docsLink":1285,"tiers":1286},"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":994,"hub":250,"fleet":250},{"id":1288,"title":1289,"description":1290,"tiers":1291},"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":250,"hub":994,"fleet":994},{"id":1293,"title":1294,"description":1295,"docsLink":1296,"tiers":1297},"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":250,"hub":250,"fleet":250},{"id":1299,"title":1300,"description":1301,"docsLink":1302,"tiers":1303},"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":250,"hub":250,"fleet":250},{"id":1305,"title":1306,"description":1307,"docsLink":1308,"subfeature":250,"showOnPricing":994,"tiers":1309},"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":250,"hub":250,"fleet":250},{"id":1311,"title":1312,"description":1313,"changelog":1314,"subfeature":250,"showOnPricing":994,"tiers":1317},"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.",[1315],{"url":1316,"release":1047},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats\u002F",{"edge":250,"hub":250,"fleet":250},{"id":1319,"title":1320,"description":1321,"docsLink":1322,"showOnPricing":994,"tiers":1323},"team-members","Team Members","Invite multiple team members to collaborate on the same Node-RED flows.","\u002Fdocs\u002Fuser\u002Fteam\u002F#teams",{"edge":250,"hub":250,"fleet":250},{"id":1325,"title":1326,"description":1327,"docsLink":1328,"showOnPricing":994,"tiers":1329},"endpoint-security","Endpoint Security","Secure HTTP endpoints for hosted Node-RED instances using FlowFuse credentials.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#security",{"edge":250,"hub":250,"fleet":250},{"id":1331,"title":1332,"description":1333,"docsLink":1334,"tiers":1335},"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":994,"hub":250,"fleet":994},{"id":1337,"title":1338,"description":1339,"tiers":1340},"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":994,"hub":250,"fleet":994},{"id":1342,"title":1343,"features":1344},"support","Support",[1345,1350,1354],{"id":1346,"title":1347,"docsLink":1348,"tiers":1349},"installation-support","Installation Support","\u002Fdocs\u002Finstall\u002Fintroduction\u002F#do-you-need-help-installation-service",{"edge":250,"hub":250,"fleet":250},{"id":1351,"title":1352,"showOnPricing":994,"tiers":1353},"live-chat-support","Live Chat Support",{"edge":250,"hub":250,"fleet":250},{"id":1355,"title":1356,"docsLink":1357,"tiers":1358},"enterprise-support","Enterprise Support","\u002Fdocs\u002Fpremium-support\u002F",{"edge":250,"hub":250,"fleet":250},"feature-catalog","0AnkhTIPCECCwP9NmbTWP5HvRYx4FTSao4lG93-HaWM",[1362,1365,1368,1371,1374,1377,1379,1382,1385,1388,1391,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459,1462,1465,1468,1471,1474,1477,1480,1483,1486,1489,1492,1495,1498,1501,1504,1506,1509,1512,1515,1518,1521,1524,1527,1529,1532,1535,1538,1541,1544,1546,1549,1552,1555,1558,1561,1564,1567,1570,1573,1576,1578,1581,1584,1587,1590,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1622,1625,1628,1631,1634,1637,1640,1643,1646,1649,1652,1655,1658,1661,1664,1667,1670,1673,1676,1678,1681,1684,1687,1690,1693,1696,1699,1701,1704,1707,1710,1713,1716,1719,1722,1725,1728,1731,1734,1737,1740,1743,1746,1749,1752,1755,1758,1761,1764,1767,1770,1773,1776,1779,1782,1785,1788,1791,1794,1797,1800,1803,1806,1809,1812,1815,1818,1821,1824,1827,1830,1833,1836,1839,1842,1845,1848,1851,1853,1856,1859,1862,1865,1868,1871,1874,1877,1880,1883,1886,1889,1892],{"path":1363,"title":1364},"\u002Fchangelog\u002F2023\u002F09\u002Fcustom-node-support","Custom Node Support",{"path":1366,"title":1367},"\u002Fchangelog\u002F2023\u002F09\u002Fdevops-actions","DevOps Pipeline with action selection",{"path":1369,"title":1370},"\u002Fchangelog\u002F2023\u002F09\u002Fintroduction-enterprise-tier","Introducing the Enterprise Tier",{"path":1372,"title":1373},"\u002Fchangelog\u002F2023\u002F09\u002Fpipeline-api","API Endpoint for DevOps Pipeline",{"path":1375,"title":1376},"\u002Fchangelog\u002F2023\u002F09\u002Fsnapshots-devices","Usability improvements to Device Management",{"path":1378,"title":1087},"\u002Fchangelog\u002F2023\u002F10\u002Fblueprints",{"path":1380,"title":1381},"\u002Fchangelog\u002F2023\u002F10\u002Fcertified-nodes","Certified Nodes",{"path":1383,"title":1384},"\u002Fchangelog\u002F2023\u002F10\u002Fdevice-snapshot-selection","Enhanced Snapshot Selection",{"path":1386,"title":1387},"\u002Fchangelog\u002F2023\u002F10\u002Fpath-bug-fix","Device Agent path bug fix",{"path":1389,"title":1390},"\u002Fchangelog\u002F2023\u002F10\u002Fresource-alerts","Resource Monitoring in Audit Log",{"path":1392,"title":1277},"\u002Fchangelog\u002F2023\u002F11\u002F2fa",{"path":1394,"title":1395},"\u002Fchangelog\u002F2023\u002F11\u002Fdefault-editor","Device Editor enabled by default",{"path":1397,"title":1398},"\u002Fchangelog\u002F2023\u002F11\u002Fdevices-in-pipelines","Devices in DevOps Pipelines",{"path":1400,"title":1401},"\u002Fchangelog\u002F2023\u002F11\u002Fproject-nodes-devices","Project Nodes for Devices",{"path":1403,"title":1404},"\u002Fchangelog\u002F2023\u002F12\u002Fbilling","No Credit Card required for billing",{"path":1406,"title":1407},"\u002Fchangelog\u002F2023\u002F12\u002Fblueprint-selection","Blueprint Selection Update",{"path":1409,"title":1410},"\u002Fchangelog\u002F2023\u002F12\u002Fdevice-groups","Device Groups",{"path":1412,"title":1413},"\u002Fchangelog\u002F2023\u002F12\u002Femail-alerting-node-red-crash","Email Alerts for Audit Log Events",{"path":1415,"title":1416},"\u002Fchangelog\u002F2023\u002F12\u002Fnode-red-updated","Node-RED 3.1.3 now available",{"path":1418,"title":1419},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-audit-log","Introducing the Device Auditlog Feature",{"path":1421,"title":1422},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-groups-snapshot","Device Groups - Automatic snapshot assignment",{"path":1424,"title":1425},"\u002Fchangelog\u002F2024\u002F01\u002Ffleet-mode","Renaming \"Default Device Mode\" to \"Fleet Mode\"",{"path":1427,"title":1428},"\u002Fchangelog\u002F2024\u002F01\u002Fhelm-v2","Helm Chart v2.0",{"path":1430,"title":1431},"\u002Fchangelog\u002F2024\u002F01\u002Fnew-blueprints","New Blueprints added",{"path":1433,"title":1434},"\u002Fchangelog\u002F2024\u002F01\u002Fsecurity-updates","Security Updates",{"path":1436,"title":1437},"\u002Fchangelog\u002F2024\u002F01\u002Fsso-team-membership","Managing Team Membership via SSO",{"path":1439,"title":1440},"\u002Fchangelog\u002F2024\u002F01\u002Fstreamlined-device-assignment","Streamlined Device assignment",{"path":1442,"title":1443},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-auto-snapshot","Device Auto Snapshots",{"path":1445,"title":1446},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-instance-audit-logs","Device Instance Audit Logging",{"path":1448,"title":1449},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-onboarding-improvements","Device Onboarding Improvements",{"path":1451,"title":1452},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-pricing-change","Pricing change for Devices",{"path":1454,"title":1455},"\u002Fchangelog\u002F2024\u002F02\u002Finstance-auto-snapshots","Instance Auto Snapshots",{"path":1457,"title":1458},"\u002Fchangelog\u002F2024\u002F02\u002Fpostgresql-upgrade","PostgreSQL Version update",{"path":1460,"title":1461},"\u002Fchangelog\u002F2024\u002F03\u002Fbearer-token-authentication","Bearer Token Authentication for Node-RED Instances",{"path":1463,"title":1464},"\u002Fchangelog\u002F2024\u002F03\u002Finstance-protection-mode","Instance Protection Mode",{"path":1466,"title":1467},"\u002Fchangelog\u002F2024\u002F03\u002Flimits-debug-payload","Configure HTTP Payload and Debug Message size",{"path":1469,"title":1470},"\u002Fchangelog\u002F2024\u002F03\u002Frestart-devices-remotly","Remote Device Restart",{"path":1472,"title":1473},"\u002Fchangelog\u002F2024\u002F04\u002Fcustom-nodes-on-devices","Custom Nodes Support on Devices",{"path":1475,"title":1476},"\u002Fchangelog\u002F2024\u002F04\u002Fdevice-auto-snapshot","Direct Dashboard Access",{"path":1478,"title":1479},"\u002Fchangelog\u002F2024\u002F04\u002Fimproving-device-groups","Improving Device Groups",{"path":1481,"title":1482},"\u002Fchangelog\u002F2024\u002F04\u002Fpricing-change","Pricing change Enterprise & Teams Tier",{"path":1484,"title":1485},"\u002Fchangelog\u002F2024\u002F04\u002Ftougher-rate-limiting","Tougher Rate Limiting on Public Routes",{"path":1487,"title":1488},"\u002Fchangelog\u002F2024\u002F05\u002Finstance-healthcheck","Customizing instance health-check settings",{"path":1490,"title":1491},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-blueprints","Blueprints added to Library",{"path":1493,"title":1494},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-flowviewer","Team Library - Flow Viewer",{"path":1496,"title":1497},"\u002Fchangelog\u002F2024\u002F05\u002Fmanaging-node-red-version-on-devices","Managing Node-RED versions on Devices",{"path":1499,"title":1500},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements","Snapshot Improvements",{"path":1502,"title":1503},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements-pt3","Snapshot Upload",{"path":1505,"title":1503},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-upload",{"path":1507,"title":1508},"\u002Fchangelog\u002F2024\u002F06\u002Fdevice-agent-proxy-support","Running the Device Agent behind an HTTP proxy",{"path":1510,"title":1511},"\u002Fchangelog\u002F2024\u002F06\u002Flibrary-blueprints","Custom hostnames for your instances",{"path":1513,"title":1514},"\u002Fchangelog\u002F2024\u002F06\u002Fmultiline-env-vars","Multi-line Environment Variables",{"path":1516,"title":1517},"\u002Fchangelog\u002F2024\u002F06\u002Fsnapshot-flow-compare","Compare Snapshots flows",{"path":1519,"title":1520},"\u002Fchangelog\u002F2024\u002F07\u002Fapplications-search","Applications Search",{"path":1522,"title":1523},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-group-clear-snapshot","Device Groups Snapshots",{"path":1525,"title":1526},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-delete","Managing devices",{"path":1528,"title":1526},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-move",{"path":1530,"title":1531},"\u002Fchangelog\u002F2024\u002F07\u002Fedit-snapshots","Edit Snapshots",{"path":1533,"title":1534},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant","The FlowFuse Expert",{"path":1536,"title":1537},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant-json","FlowFuse Expert Writes JSON",{"path":1539,"title":1540},"\u002Fchangelog\u002F2024\u002F07\u002Fimmersive-editor","Immersive Editor Experience",{"path":1542,"title":1543},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-inbox","Notifications Inbox",{"path":1545,"title":1543},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-update",{"path":1547,"title":1548},"\u002Fchangelog\u002F2024\u002F07\u002Fpersistent-storage","Persistent Storage on FlowFuse Cloud",{"path":1550,"title":1551},"\u002Fchangelog\u002F2024\u002F07\u002Fsso","Single Sign On Updates",{"path":1553,"title":1554},"\u002Fchangelog\u002F2024\u002F08\u002Fbill-of-materials","Bill of Materials",{"path":1556,"title":1557},"\u002Fchangelog\u002F2024\u002F08\u002Fenterprise-license-update","Enforcing Enterprise Restrictions",{"path":1559,"title":1560},"\u002Fchangelog\u002F2024\u002F08\u002Fldap-sso-groups","LDAP Single Sign On Updates",{"path":1562,"title":1563},"\u002Fchangelog\u002F2024\u002F08\u002Fstatic-file-service-navigation-visibility","Static File Service Navigation and Visibility",{"path":1565,"title":1566},"\u002Fchangelog\u002F2024\u002F10\u002Fdevice-group-env-vars","Environment Variables for your Device Groups",{"path":1568,"title":1569},"\u002Fchangelog\u002F2024\u002F10\u002Fmqtt-service","MQTT Broker Service",{"path":1571,"title":1572},"\u002Fchangelog\u002F2024\u002F10\u002Fnotifications-bulk-actions","Managing Notifications",{"path":1574,"title":1575},"\u002Fchangelog\u002F2024\u002F10\u002Fsnapshot-download-upload-options","Snapshot Upload and Download Improvements",{"path":1577,"title":1216},"\u002Fchangelog\u002F2024\u002F10\u002Fversion-history-timeline",{"path":1579,"title":1580},"\u002Fchangelog\u002F2024\u002F11\u002Faudit-log-hierarchy","Audit logs show hierarchical events",{"path":1582,"title":1583},"\u002Fchangelog\u002F2024\u002F11\u002Fdevice-agent-release","Device Agent 3.0 released",{"path":1585,"title":1586},"\u002Fchangelog\u002F2024\u002F11\u002Fmqtt-topic-hierarchy","MQTT Topic Hierarchy view",{"path":1588,"title":1589},"\u002Fchangelog\u002F2024\u002F11\u002Fteam-search","Team-wide search",{"path":1591,"title":1592},"\u002Fchangelog\u002F2024\u002F12\u002Fdashboad-iframe","Allow Dashboards to be embedded in iFrames",{"path":1594,"title":1595},"\u002Fchangelog\u002F2024\u002F12\u002Fdevice-editor-cache","Device Editor Access Speed Up",{"path":1597,"title":1598},"\u002Fchangelog\u002F2024\u002F12\u002Fteam-bom-timeline","Team BOM and Pipeline Views",{"path":1600,"title":1601},"\u002Fchangelog\u002F2025\u002F01\u002Ffree-tier-onboarding","New Onboarding Tour for Free Tier Users",{"path":1603,"title":1604},"\u002Fchangelog\u002F2025\u002F01\u002Fhidden-env-vars","Hidden Environment Variables",{"path":1606,"title":1607},"\u002Fchangelog\u002F2025\u002F01\u002Fimproved-diagnostics","Improved Diagnostics",{"path":1609,"title":1610},"\u002Fchangelog\u002F2025\u002F01\u002Fteam-level-groups","Team level view of Groups",{"path":1612,"title":1613},"\u002Fchangelog\u002F2025\u002F02\u002Fadditional-device-version-history-events","New Remote Instances Version History Events",{"path":1615,"title":1616},"\u002Fchangelog\u002F2025\u002F02\u002Fbroker-error-feedback","Improved Broker Connection Feedback",{"path":1618,"title":1619},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-agent-updates","FlowFuse User Authentication on Remote Instances",{"path":1621,"title":1216},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-version-history-timeline",{"path":1623,"title":1624},"\u002Fchangelog\u002F2025\u002F02\u002Fexternal-brokers","External MQTT Brokers",{"path":1626,"title":1627},"\u002Fchangelog\u002F2025\u002F02\u002Fmqtt-schema-suggestions","MQTT Smart Schema Suggestions",{"path":1629,"title":1630},"\u002Fchangelog\u002F2025\u002F02\u002Fresend-and-extend-team-invitation-expiration","Re-send Team Invitations",{"path":1632,"title":1633},"\u002Fchangelog\u002F2025\u002F02\u002Fschema-docs","Personalized Schema Documentation",{"path":1635,"title":1636},"\u002Fchangelog\u002F2025\u002F02\u002Ftopic-hierarchy-search","Search & Filter for Topic Hierarchy List",{"path":1638,"title":1639},"\u002Fchangelog\u002F2025\u002F03\u002Fcontainer-tags","Changes to tags for flowfuse\u002Fnode-red",{"path":1641,"title":1642},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-groups","Multiple Device Groups in a pipeline",{"path":1644,"title":1645},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-local-login","Local Login for Remote Instances",{"path":1647,"title":1648},"\u002Fchangelog\u002F2025\u002F03\u002Ffree-tier","Free Tier now more accessible to all",{"path":1650,"title":1651},"\u002Fchangelog\u002F2025\u002F03\u002Fresource-notifications","Resource Alerts",{"path":1653,"title":1654},"\u002Fchangelog\u002F2025\u002F03\u002Fsnapshot-filter","Filtering Snapshots",{"path":1656,"title":1657},"\u002Fchangelog\u002F2025\u002F03\u002Fteam-npm-registry","NPM Package Hosting",{"path":1659,"title":1660},"\u002Fchangelog\u002F2025\u002F03\u002Ftopic-deletion","MQTT Topic Management",{"path":1662,"title":1663},"\u002Fchangelog\u002F2025\u002F04\u002Fdevice-provisioning","Remote Instance Provisioning",{"path":1665,"title":1666},"\u002Fchangelog\u002F2025\u002F04\u002Fgit-integration","Git Integration with Pipelines",{"path":1668,"title":1669},"\u002Fchangelog\u002F2025\u002F04\u002Finstance-log-browsing","Better Node-RED log handling",{"path":1671,"title":1672},"\u002Fchangelog\u002F2025\u002F05\u002Fimport-node-red-flows","Import Node-RED Flows During Remote Instance Setup",{"path":1674,"title":1675},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant","FlowFuse Expert just got smarter",{"path":1677,"title":1675},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant-2",{"path":1679,"title":1680},"\u002Fchangelog\u002F2025\u002F06\u002Fgit-integration","Pulling snapshots from Git with Pipelines",{"path":1682,"title":1683},"\u002Fchangelog\u002F2025\u002F06\u002Finstance-performance-memory","Memory Metrics in Instance Performance View",{"path":1685,"title":1686},"\u002Fchangelog\u002F2025\u002F06\u002Fnew-home-page","Introducing the New Home Page Experience",{"path":1688,"title":1689},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance","Team Performance Feature",{"path":1691,"title":1692},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance-view","Instance Performance View",{"path":1694,"title":1695},"\u002Fchangelog\u002F2025\u002F06\u002Fui-refresh","Navigation UI Refresh",{"path":1697,"title":1698},"\u002Fchangelog\u002F2025\u002F07\u002Fbrowse-node-red-flows","Browse for Node-RED Flows During Remote Instance Setup",{"path":1700,"title":1041},"\u002Fchangelog\u002F2025\u002F07\u002Fflowfuse-tables",{"path":1702,"title":1703},"\u002Fchangelog\u002F2025\u002F07\u002Fimport-blueprints","Import blueprints directly into your existing instances",{"path":1705,"title":1706},"\u002Fchangelog\u002F2025\u002F07\u002Fsimplified-applications-overview","Simplified Applications Page with Summary Tiles",{"path":1708,"title":1709},"\u002Fchangelog\u002F2025\u002F07\u002Fsmart-suggestions","Smart Suggestions",{"path":1711,"title":1712},"\u002Fchangelog\u002F2025\u002F07\u002Fteam-to-pro-plan-rename","Team Plan Renamed to Pro Plan",{"path":1714,"title":1715},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-hosted","Generate snapshot descriptions with AI",{"path":1717,"title":1718},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-remote","AI Snapshot Descriptions Now Work with Remote Instances",{"path":1720,"title":1721},"\u002Fchangelog\u002F2025\u002F08\u002Fdevice-performance","FlowFuse Remote Instance Performance Data",{"path":1723,"title":1724},"\u002Fchangelog\u002F2025\u002F08\u002Fdirect-sso","Direct SSO Login",{"path":1726,"title":1727},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-assistant","FlowFuse Expert documents your flows",{"path":1729,"title":1730},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-mqtt","FlowFuse MQTT",{"path":1732,"title":1733},"\u002Fchangelog\u002F2025\u002F08\u002Fhttp-cors","Configure HTTP CORS",{"path":1735,"title":1736},"\u002Fchangelog\u002F2025\u002F08\u002Fsubflow-export","Export SubFlow as Node-RED module",{"path":1738,"title":1739},"\u002Fchangelog\u002F2025\u002F08\u002Ftables-assistant","FlowFuse Tables with a little help from the Assistant",{"path":1741,"title":1742},"\u002Fchangelog\u002F2025\u002F09\u002Fexpose-saml-groups-to-dashboard","Allow SSO groups to be shared with the Node-RED Dashboard",{"path":1744,"title":1745},"\u002Fchangelog\u002F2025\u002F09\u002Finline-assist","FlowFuse Expert can help you write code",{"path":1747,"title":1748},"\u002Fchangelog\u002F2025\u002F09\u002Fretiring-flowforge-device-agent","No more @flowforge\u002Fflowforge-device-agent releases",{"path":1750,"title":1751},"\u002Fchangelog\u002F2025\u002F09\u002Frevised-instance-snapshot-ui","Streamlined Snapshot Management",{"path":1753,"title":1754},"\u002Fchangelog\u002F2025\u002F09\u002Fteam-broker-async-api","Capture Async API data from FlowFuse Team Broker",{"path":1756,"title":1757},"\u002Fchangelog\u002F2025\u002F10\u002Fapplication-level-rbac","Application-level access control for Enterprise teams",{"path":1759,"title":1760},"\u002Fchangelog\u002F2025\u002F10\u002Fbulk-device-group-assignment","Easier Access to Bulk Device Group Management",{"path":1762,"title":1763},"\u002Fchangelog\u002F2025\u002F10\u002Fduplicate-instances-across-applications","Duplicate Instances Across Different Applications",{"path":1765,"title":1766},"\u002Fchangelog\u002F2025\u002F10\u002Fimport-flows-on-instance-creation","Import flows during instance creation",{"path":1768,"title":1769},"\u002Fchangelog\u002F2025\u002F10\u002Fmcp-nodes","FlowFuse MCP Server Nodes",{"path":1771,"title":1772},"\u002Fchangelog\u002F2025\u002F10\u002Fonnx-nodes","FlowFuse AI Nodes",{"path":1774,"title":1775},"\u002Fchangelog\u002F2025\u002F10\u002Fsettings-page-device-group-management","Device Group Management from Settings Page",{"path":1777,"title":1778},"\u002Fchangelog\u002F2025\u002F11\u002Fff-expert-update","FlowFuse Expert Update",{"path":1780,"title":1781},"\u002Fchangelog\u002F2025\u002F11\u002Fminimum-nodejs-version","Node.js v20 Minimum Version Requirement",{"path":1783,"title":1784},"\u002Fchangelog\u002F2025\u002F11\u002Fsso-session","SSO control over Session life",{"path":1786,"title":1787},"\u002Fchangelog\u002F2025\u002F12\u002Fff-expert-mcp-insights","FlowFuse Expert: Now with MCP-Powered Insights",{"path":1789,"title":1790},"\u002Fchangelog\u002F2025\u002F12\u002Fscheduled-maintenance","Scheduled Maintenance Mode",{"path":1792,"title":1793},"\u002Fchangelog\u002F2026\u002F01\u002Fdevice-agent-containers","Device Agent Docker Containers updated",{"path":1795,"title":1796},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-manage-palette","FlowFuse Expert: Enhanced Palette Integration",{"path":1798,"title":1799},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-nr-actions","FlowFuse Expert: Integration with Node-RED",{"path":1801,"title":1802},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-palette-queries","FlowFuse Expert: Palette Queries",{"path":1804,"title":1805},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-select-flows","FlowFuse Expert: Ask about your flows",{"path":1807,"title":1808},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-rbacs","FlowFuse Expert: MCP-Powered Insights with RBACs",{"path":1810,"title":1811},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-security","FlowFuse Expert: MCP-Powered Insights",{"path":1813,"title":1814},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options","Set Node.js Options for Remote Instances",{"path":1816,"title":1817},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context","FlowFuse Expert: Helping you make sense of your debug log",{"path":1819,"title":1820},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner","FlowFuse Expert: Never Miss an Update",{"path":1822,"title":1823},"\u002Fchangelog\u002F2026\u002F02\u002Fha-instance-rolling-restart","HA Hosted Instance Rolling Restart",{"path":1825,"title":1826},"\u002Fchangelog\u002F2026\u002F02\u002Fremote-instances-immersive-editor","Immersive Mode for Remote Instances",{"path":1828,"title":1829},"\u002Fchangelog\u002F2026\u002F02\u002Frestoring-snapshots-to-remote-instances","Restoring snapshots to developer-mode Remote Instances",{"path":1831,"title":1832},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops","Azure DevOps Pipeline support",{"path":1834,"title":1835},"\u002Fchangelog\u002F2026\u002F03\u002Fdeveloper-mode-in-immersive-editor","Developer Mode Now Accessible from the Immersive Editor",{"path":1837,"title":1838},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title","Embedded Editor Now Shows Active Tab",{"path":1840,"title":1841},"\u002Fchangelog\u002F2026\u002F03\u002Fmarch-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on March 28th, 2026",{"path":1843,"title":1844},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor","View Snapshot Details in the Immersive Editor",{"path":1846,"title":1847},"\u002Fchangelog\u002F2026\u002F04\u002Fexpert-action-links","FlowFuse expert action links",{"path":1849,"title":1850},"\u002Fchangelog\u002F2026\u002F04\u002Fhosted-instance-url-env-var","Hosted Instances know their own URL",{"path":1852,"title":1110},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer",{"path":1854,"title":1855},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer","Richer snapshot comparison view",{"path":1857,"title":1858},"\u002Fchangelog\u002F2026\u002F05\u002Fai-opt-out","AI Feature Opt-Out for Teams",{"path":1860,"title":1861},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building","FlowFuse Expert Builds Your Application",{"path":1863,"title":1864},"\u002Fchangelog\u002F2026\u002F05\u002Fsingle-sso-provider","Single SSO provider for all users",{"path":1866,"title":1867},"\u002Fchangelog\u002F2026\u002F06\u002Fdark-mode","Dark Mode",{"path":1869,"title":1870},"\u002Fchangelog\u002F2026\u002F06\u002Fdevice-agent-v4-released","Device Agent v4 released",{"path":1872,"title":1873},"\u002Fchangelog\u002F2026\u002F06\u002Fgeneric-git-server-support","Connect Pipelines to Any Git Server",{"path":1875,"title":1876},"\u002Fchangelog\u002F2026\u002F06\u002Fjuly-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on July 11th, 2026",{"path":1878,"title":1879},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups","Application Roles from SSO Groups",{"path":1881,"title":1882},"\u002Fchangelog\u002F2026\u002F07\u002Fdevice-agent-onboarding","Getting started with FlowFuse straight from the terminal",{"path":1884,"title":1885},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-enhancements","FlowFuse Expert Enhancements",{"path":1887,"title":1888},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation","FlowFuse Expert Can Now Work With Your Tables",{"path":1890,"title":1891},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats","Team Scoped Personal Access Tokens",{"path":1893,"title":1894},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards","A Dedicated Home for Your Dashboards",[],1786105897622]