[{"data":1,"prerenderedAt":1134},["ShallowReactive",2],{"docs-\u002Fdocs":3,"docs-nav":682},{"id":4,"title":5,"body":6,"description":16,"extension":670,"layout":671,"meta":672,"navGroup":671,"navGroupOrder":671,"navOrder":671,"navTitle":673,"navigation":674,"originalPath":675,"path":676,"redirect":671,"seo":677,"stem":678,"updated":679,"version":680,"__hash__":681},"docs\u002Fdocs\u002Findex.md","FlowFuse Documentation",{"type":7,"value":8,"toc":657},"minimark",[9,13,17,26,31,158,162,166,175,358,362,365,429,433,605,609,623,627,650,654],[10,11,5],"h1",{"id":12},"flowfuse-documentation",[14,15,16],"p",{},"Welcome to the documentation for FlowFuse, an open-source, industrial data platform that enables engineers to build, manage, scale, and secure their Node-RED solutions.",[14,18,19,20,25],{},"It covers everything from setup, to usage, and development. All ",[21,22,24],"a",{"href":23},"\u002Fdocs\u002Fcontribute\u002Fintroduction\u002F","contributions"," are welcome.",[27,28,30],"h2",{"id":29},"getting-started","Getting Started",[32,33,38,39,38,110],"div",{"className":34},[35,36,37],"ff-offering-tiles","grid-cols-1","sm:grid-cols-2","\n   ",[32,40,44,45,44,49,44,52,38],{"className":41},[42,43],"ff-tile","ff-offering-tile","\n      ",[46,47,48],"label",{},"FlowFuse Self-Hosted",[14,50,51],{},"Run FlowFuse yourself on your own infrastructure.",[53,54,56,57,56,73,56,83,56,92,56,101,44],"ul",{"style":55},"margin-top: 0; margin-bottom: 0;","\n         ",[58,59,62,63,56],"li",{"className":60},[61],"ff-offering-cta","\n            ",[21,64,66,67],{"href":65},"\u002Fdocs\u002Fquick-start\u002F","\n               Quick Start Instructions\n               ",[68,69,62],"icon-chevron-right",{"className":70},[71,72],"ff-icon","ff-icon-sm",[58,74,62,76,56],{"className":75},[61],[21,77,79,80],{"href":78},"\u002Fdocs\u002Finstall\u002Fintroduction\u002F","\n               Install FlowFuse Self-Hosted\n               ",[68,81,62],{"className":82},[71,72],[58,84,62,85,56],{},[21,86,88,89],{"href":87},"\u002Fdocs\u002Fupgrade","\n               Upgrade Your FlowFuse Instance\n               ",[68,90,62],{"className":91},[71,72],[58,93,62,94,56],{},[21,95,97,98],{"href":96},"\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium\u002F","\n               Unlock Enterprise Features\n               ",[68,99,62],{"className":100},[71,72],[58,102,62,103,56],{},[21,104,106,107],{"href":105},"\u002Fdocs\u002Fadmin\u002Fintroduction\u002F","\n               Administering FlowFuse\n               ",[68,108,62],{"className":109},[71,72],[32,111,44,113,44,116,44,119,38],{"className":112},[42,43],[46,114,115],{},"FlowFuse Cloud",[14,117,118],{},"Hosted solution, nothing to install anything, jump straight in.",[53,120,56,121,56,131,56,140,56,149,44],{"style":55},[58,122,124],{"className":123},[61],[21,125,127,128],{"href":126},"https:\u002F\u002Fapp.flowfuse.com\u002Faccount\u002Fcreate","Sign Up for Free",[68,129],{"className":130},[71,72],[58,132,133],{},[21,134,136,137],{"href":135},"","Upgrading Teams",[68,138],{"className":139},[71,72],[58,141,142],{},[21,143,145,146],{"href":144},"\u002Fdocs\u002Fcloud\u002Fbilling\u002F","Billing",[68,147],{"className":148},[71,72],[58,150,151],{},[21,152,154,155],{"href":153},"\u002Fdocs\u002Fcloud\u002Fintroduction\u002F#single-sign-on","Single Sign On",[68,156],{"className":157},[71,72],[27,159,161],{"id":160},"using-flowfuse","Using FlowFuse",[163,164,30],"h3",{"id":165},"getting-started-1",[14,167,168,169,174],{},"Here are some quick reference links to our most popular topics. You can also view the full documentation available for FlowFuse in our ",[21,170,30],{"href":171,"rel":172},"https:\u002F\u002Fflowfuse.com\u002Fdocs\u002Fuser\u002Fintroduction\u002F",[173],"nofollow"," guide.",[32,176,38,180,38,221,38,247,38,268,38,305,38,326],{"className":177},[178,36,179],"ff-product-feature-tiles","md:grid-cols-2",[21,181,44,185,44,212,38],{"className":182,"href":184},[42,183],"ff-product-feature-tile","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F",[32,186,56,189,44],{"className":187},[188],"ff-product-feature-tile-decorator",[190,191,194,200,204,208],"svg",{"xmlns":192,"viewBox":193},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","0 0 20 14.62",[195,196],"path",{"className":197,"d":199},[198],"st0","M0,7.31v-1.72c5.09,0,5.81-.94,6.44-1.77,.72-.94,1.46-1.67,3.88-1.67v1.72c-1.76,0-2.04,.37-2.51,.99-1.02,1.34-2.31,2.45-7.81,2.45Z",[195,201],{"className":202,"d":203},[198],"M8.6,12.47c-2.9,0-3.47-1.58-3.88-2.73-.47-1.31-.87-2.43-4.72-2.43v-1.72c4.67,0,5.67,1.69,6.34,3.57,.38,1.06,.57,1.59,2.26,1.59v1.72Z",[195,205],{"className":206,"d":207},[198],"M16.78,14.62h-6.88c-.95,0-1.72-.77-1.72-1.72v-2.58c0-.95,.77-1.72,1.72-1.72h6.88c.95,0,1.72,.77,1.72,1.72v2.58c0,.95-.77,1.72-1.72,1.72Zm0-1.72v0h0Zm0-2.58h-6.88v2.58h6.88v-2.58Z",[195,209],{"className":210,"d":211},[198],"M18.28,6.02h-6.88c-.95,0-1.72-.77-1.72-1.72V1.72c0-.95,.77-1.72,1.72-1.72h6.88c.95,0,1.72,.77,1.72,1.72v2.58c0,.95-.77,1.72-1.72,1.72Zm0-1.72v0h0Zm0-2.58h-6.88v2.58h6.88V1.72Z",[32,213,56,214,56,217,44],{},[46,215,216],{},"Configuring Instances",[218,219,220],"span",{},"Understand the options available for your Node-RED Instances",[21,222,44,225,44,239,38],{"className":223,"href":224},[42,183],"\u002Fdocs\u002Fuser\u002Fsnapshots\u002F",[32,226,56,228,44],{"className":227},[188],[190,229,235],{"className":230,"xmlns":192,"fill":231,"viewBox":232,"strokeWidth":233,"stroke":234},[71],"none","0 0 24 24","1","currentColor",[195,236],{"strokeLineCap":237,"strokeLineJoin":237,"d":238},"round","M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z",[32,240,56,241,56,244,44],{},[46,242,243],{},"Snapshots",[218,245,246],{},"Version Control for your Node-RED Instances.",[21,248,44,251,44,260,38],{"className":249,"href":250},[42,183],"\u002Fdocs\u002Fuser\u002Fshared-library\u002F",[32,252,56,254,44],{"className":253},[188],[190,255,257],{"xmlns":192,"fill":231,"viewBox":232,"strokeWidth":256,"stroke":234},"1.5",[195,258],{"strokeLineCap":237,"strokeLineJoin":237,"d":259},"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z",[32,261,56,262,56,265,44],{},[46,263,264],{},"Team Library",[218,266,267],{},"Centralized management of re-usable flows and functions.",[21,269,44,271,44,297,38],{"className":270,"href":224},[42,183],[32,272,56,274,44],{"className":273},[188],[190,275,281],{"className":276,"xmlns":192,"xmlnsXLink":277,"x":278,"y":278,"viewBox":232,"style":279,"xmlSpace":280},[71],"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink","0px","enable-background:new 0 0 24 24;","preserve",[282,283,285,288,291,294],"g",{"className":284},[198],[195,286],{"d":287},"M7,15.8 M7,3.1 M7,15.8V4.2C7,3.5,6.5,3,5.8,3H3.9C3.2,3,2.6,3.5,2.6,4.2v11.6",[195,289],{"d":290},"M14,15.8 M14,3.1 M14,15.8V4.2C14,3.5,13.5,3,12.8,3h-1.9c-0.7,0-1.2,0.5-1.2,1.2v11.6",[195,292],{"d":293},"M21,3.1 M21,15c0-2.7,0-10.8,0-10.8C21,3.5,20.5,3,19.8,3h-1.9c-0.7,0-1.2,0.5-1.2,1.2V11",[195,295],{"d":296},"M17.2,22.5c-0.2,0-0.4-0.1-0.5-0.2c-0.3-0.3-0.3-0.8,0-1.1l2.5-2.5H3c-0.4,0-0.8-0.3-0.8-0.8s0.3-0.8,0.8-0.8h16.2l-2.5-2.5c-0.3-0.3-0.3-0.8,0-1.1s0.8-0.3,1.1,0l3.8,3.8c0.1,0.1,0.1,0.2,0.2,0.2c0,0.1,0.1,0.2,0.1,0.3s0,0.2-0.1,0.3c0,0.1-0.1,0.2-0.2,0.2l-3.8,3.8C17.6,22.4,17.4,22.5,17.2,22.5z",[32,298,56,299,56,302,44],{},[46,300,301],{},"Pipelines",[218,303,304],{},"Deploy flows between Test, Staging & Production Environments.",[21,306,44,309,44,318,38],{"className":307,"href":308},[42,183],"\u002Fdocs\u002Fuser\u002Fdevice-groups\u002F",[32,310,56,312,44],{"className":311},[188],[190,313,315],{"className":314,"xmlns":192,"fill":231,"viewBox":232,"strokeWidth":233,"stroke":234},[71],[195,316],{"strokeLineCap":237,"strokeLineJoin":237,"d":317},"M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z",[32,319,56,320,56,323,44],{},[46,321,322],{},"Remote Instances",[218,324,325],{},"Deploy flows remotely with FlowFuse \"Devices\".",[21,327,44,329,44,350,38],{"className":328,"href":308},[42,183],[32,330,56,332,44],{"className":331},[188],[190,333,335,347],{"className":334,"viewBox":232,"fill":231,"xmlns":192},[71],[282,336,337,340,344],{},[195,338],{"d":339,"fill":234},"M16.2 11.63H11.63V16.2H16.2V11.63Z",[195,341],{"fillRule":342,"clipRule":342,"d":343,"fill":234},"evenodd","M8.27997 16.18V18.13C8.27997 18.5 8.42997 18.87 8.69997 19.14C8.96997 19.41 9.32997 19.56 9.70997 19.56H11.66V20.67C11.66 20.82 11.72 20.97 11.83 21.08C12.05 21.3 12.43 21.3 12.65 21.08C12.76 20.97 12.82 20.83 12.82 20.67V19.56H15.03V20.67C15.03 20.82 15.09 20.97 15.2 21.08C15.42 21.3 15.8 21.3 16.02 21.08C16.13 20.97 16.19 20.83 16.19 20.67V19.56H18.14C18.51 19.56 18.88 19.41 19.15 19.14C19.42 18.87 19.57 18.51 19.57 18.13V16.18H20.68C20.83 16.18 20.98 16.12 21.09 16.01C21.2 15.9 21.26 15.75 21.26 15.6C21.26 15.45 21.2 15.3 21.09 15.19C20.98 15.08 20.84 15.02 20.68 15.02H19.57V12.81H20.68C20.83 12.81 20.98 12.75 21.09 12.64C21.2 12.53 21.26 12.38 21.26 12.23C21.26 12.08 21.2 11.93 21.09 11.82C20.98 11.71 20.83 11.65 20.68 11.65H19.57V9.69996C19.57 9.32996 19.42 8.95996 19.15 8.68996C18.88 8.41996 18.52 8.26996 18.14 8.26996H12.82V7.15996C12.82 7.00996 12.76 6.85996 12.65 6.74996C12.43 6.52996 12.05 6.52996 11.83 6.74996C11.72 6.85996 11.66 6.99996 11.66 7.15996V8.26996H9.70997C9.32997 8.26996 8.96997 8.41996 8.69997 8.68996C8.43997 8.94996 8.27997 9.31996 8.27997 9.69996V11.65H7.16997C7.01997 11.65 6.86997 11.71 6.75997 11.82C6.64997 11.93 6.58997 12.08 6.58997 12.23C6.58997 12.38 6.64997 12.53 6.75997 12.64C6.86997 12.75 7.01997 12.81 7.16997 12.81H8.27997V16.18ZM18.4 18.39H9.43997V9.42996H18.4V18.39Z",[195,345],{"fillRule":342,"clipRule":342,"d":346,"fill":234},"M8.28997 15.02H6.07997V6.05996H15.04V8.26996H16.2V6.31996C16.2 5.94996 16.05 5.57996 15.78 5.30996C15.52 5.04996 15.15 4.88996 14.77 4.88996H12.82V3.77996C12.82 3.62996 12.76 3.47996 12.65 3.36996C12.43 3.14996 12.05 3.14996 11.83 3.36996C11.72 3.47996 11.66 3.61996 11.66 3.77996V4.88996H9.44997V3.77996C9.44997 3.62996 9.38997 3.47996 9.27997 3.36996C9.05997 3.14996 8.67997 3.14996 8.45997 3.36996C8.34997 3.47996 8.28997 3.61996 8.28997 3.77996V4.88996H6.33997C5.95997 4.88996 5.59997 5.03996 5.32997 5.30996C5.06997 5.56996 4.90997 5.93996 4.90997 6.31996V8.26996H3.79997C3.64997 8.26996 3.49997 8.32996 3.38997 8.43996C3.27997 8.54996 3.21997 8.69996 3.21997 8.84996C3.21997 8.99996 3.27997 9.14996 3.38997 9.25996C3.49997 9.36996 3.64997 9.42996 3.79997 9.42996H4.90997V11.64H3.79997C3.64997 11.64 3.49997 11.7 3.38997 11.81C3.27997 11.92 3.21997 12.06 3.21997 12.22C3.21997 12.38 3.27997 12.52 3.38997 12.63C3.49997 12.74 3.64997 12.8 3.79997 12.8H4.90997V14.75C4.90997 15.12 5.05997 15.49 5.32997 15.76C5.59997 16.03 5.95997 16.18 6.33997 16.18H8.27997V15.02H8.28997Z",[348,349],"defs",{},[32,351,56,352,56,355,44],{},[46,353,354],{},"Device Groups",[218,356,357],{},"Manage large numbers of devices together.",[163,359,361],{"id":360},"advanced-features","Advanced Features",[14,363,364],{},"Once you're more comfortable with FlowFuse, you may want to explore some of our more advanced features that will help elevate your Node-RED experience even further.",[32,366,38,368,38,389,38,409],{"className":367},[178,36,179],[21,369,44,372,44,381,38],{"className":370,"href":371},[42,183],"\u002Fdocs\u002Fuser\u002Fteam\u002F",[32,373,56,375,44],{"className":374},[188],[190,376,378],{"className":377,"xmlns":192,"fill":231,"viewBox":232,"strokeWidth":233,"stroke":234},[71],[195,379],{"strokeLineCap":237,"strokeLineJoin":237,"d":380},"M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z",[32,382,56,383,56,386,44],{},[46,384,385],{},"Managing Teams",[218,387,388],{},"Host your Instances at a custom subdomain",[21,390,44,393,44,402,38],{"className":391,"href":392},[42,183],"\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",[32,394,56,396,44],{"className":395},[188],[190,397,399],{"className":398,"xmlns":192,"fill":231,"viewBox":232,"strokeWidth":233,"stroke":234},[71],[195,400],{"strokeLineCap":237,"strokeLineJoin":237,"d":401},"M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418",[32,403,56,404,56,407,44],{},[46,405,406],{},"Custom Domains",[218,408,388],{},[21,410,44,412,44,421,38],{"className":411,"href":308},[42,183],[32,413,56,415,44],{"className":414},[188],[190,416,418],{"className":417,"xmlns":192,"fill":231,"viewBox":232,"stroke":234},[71],[195,419],{"strokeLineCap":237,"strokeLineJoin":237,"d":420},"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125",[32,422,56,423,56,426,44],{},[46,424,425],{},"High Availability",[218,427,428],{},"Automatically distribute workload across multiple copies of your Node-RED Instance.",[27,430,432],{"id":431},"flowfuse-extras","FlowFuse Extras",[32,434,38,437,38,502,38,539,38,585],{"className":435},[35,36,37,436],"lg:grid-cols-2",[32,438,44,440,44,443,446,38],{"className":439},[42,43],[46,441,442],{},"FlowFuse Node-RED Nodes",[14,444,445],{},"A complete set of FlowFuse-maintained nodes for data sharing between instances, MQTT messaging, AI\u002FONNX models, MCP agent integrations, and enterprise data features.",[53,447,56,448,56,457,56,466,56,475,56,484,56,493,44],{},[58,449,450],{},[21,451,453,454],{"href":452},"\u002Fdocs\u002Fuser\u002Fprojectnodes\u002F","FlowFuse Project Nodes",[68,455],{"className":456},[71,72],[58,458,459],{},[21,460,462,463],{"href":461},"https:\u002F\u002Fflowfuse.com\u002Fnode-red\u002Fflowfuse\u002Fmcp\u002F","FlowFuse MCP Nodes",[68,464],{"className":465},[71,72],[58,467,468],{},[21,469,471,472],{"href":470},"https:\u002F\u002Fflowfuse.com\u002Fnode-red\u002Fflowfuse\u002Fflowfuse-tables\u002F","FlowFuse Tables Nodes",[68,473],{"className":474},[71,72],[58,476,477],{},[21,478,480,481],{"href":479},"https:\u002F\u002Fflowfuse.com\u002Fnode-red\u002Fflowfuse\u002Fai\u002F","FlowFuse AI Nodes",[68,482],{"className":483},[71,72],[58,485,486],{},[21,487,489,490],{"href":488},"\u002Fdocs\u002Fuser\u002Fmqtt-nodes\u002F","FlowFuse MQTT Nodes",[68,491],{"className":492},[71,72],[58,494,495],{},[21,496,498,499],{"href":497},"https:\u002F\u002Fflowfuse.com\u002Fnode-red\u002Fflowfuse\u002F","See all the Nodes",[68,500],{"className":501},[71,72],[32,503,44,505,44,508,511,38],{"className":504},[42,43],[46,506,507],{},"FlowFuse Dashboard",[14,509,510],{},"Create interactive, responsive and secure Dashboards in Node-RED.",[53,512,56,513,56,522,56,530,44],{},[58,514,515],{},[21,516,518,519],{"href":517},"https:\u002F\u002Fdashboard.flowfuse.com","Install FlowFuse Dashboard",[68,520],{"className":521},[71,72],[58,523,524],{},[21,525,526,527],{"href":517},"Build Your First Dashboard",[68,528],{"className":529},[71,72],[58,531,532],{},[21,533,535,536],{"href":534},"https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fmulti-tenancy.html","Multi Tenant Dashboards",[68,537],{"className":538},[71,72],[32,540,44,542,44,545,548,38],{"className":541},[42,43],[46,543,544],{},"FlowFuse Device Agent",[14,546,547],{},"Manage thousands of Node-RED Instances remotely with the FlowFuse Device Agent.",[53,549,56,550,56,559,56,568,56,577,44],{},[58,551,552],{},[21,553,555,556],{"href":554},"\u002Fdocs\u002Fdevice-agent\u002Finstall\u002F","Install the Device Agent",[68,557],{"className":558},[71,72],[58,560,561],{},[21,562,564,565],{"href":563},"\u002Fdocs\u002Fdevice-agent\u002Fregister\u002F","Registering Devices in FlowFuse",[68,566],{"className":567},[71,72],[58,569,570],{},[21,571,573,574],{"href":572},"\u002Fdocs\u002Fdevice-agent\u002Fdeploy\u002F","Deploying Flows to your Device",[68,575],{"className":576},[71,72],[58,578,579],{},[21,580,581,582],{"href":572},"Editing Flows on your Device",[68,583],{"className":584},[71,72],[32,586,44,588,44,591,594,38],{"className":587},[42,43],[46,589,590],{},"FlowFuse Assistant",[14,592,593],{},"AI in the Node-RED Editor to help build your flows.",[53,595,56,596,44],{},[58,597,598],{},[21,599,601,602],{"href":600},"\u002Fdocs\u002Fuser\u002Fexpert\u002F","Getting Started Guide",[68,603],{"className":604},[71,72],[27,606,608],{"id":607},"support","Support",[53,610,611,617],{},[58,612,613],{},[21,614,616],{"href":615},"\u002Fdocs\u002Fdebugging\u002F","Troubleshooting",[58,618,619],{},[21,620,622],{"href":621},"\u002Fdocs\u002Fpremium-support\u002F","FlowFuse Cloud Support",[27,624,626],{"id":625},"contributing-to-flowfuse","Contributing to FlowFuse",[53,628,629,636,643],{},[58,630,631,635],{},[21,632,634],{"href":633},"\u002Fdocs\u002Fcontribute\u002Fintroduction#contributing-to-flowfuse","Useful Information"," - Learn the foundational concepts of how FlowFuse is built & structured.",[58,637,638,642],{},[21,639,641],{"href":640},"\u002Fdocs\u002Fcontribute\u002Fintroduction#development-setup","Development Setup"," - Configure your local development environment to contribute to FlowFuse.",[58,644,645,649],{},[21,646,648],{"href":647},"\u002Fdocs\u002Fcontribute\u002Fintroduction#testing","Testing"," - Understand our testing philosophy at FlowFuse.",[651,652,653],"style",{},"\n.st0 {\n   fill: currentColor;\n   stroke-width: 1.5;\n   stroke-linecap: round;\n   stroke-linejoin: round;\n}\n",[651,655,656],{},"\n   a label {\n      cursor: pointer;\n   }\n   .ff-tile,\n   .ff-offering-tile ul li a {\n      gap: 6px;\n      border: 1px solid #e2e8f0;\n      border-radius: 0.5rem;\n   }\n   .ff-tile span {\n      display: block;\n      color: #374151;\n      font-size: 0.875rem;\n      font-weight: 300;\n      line-height: 1.25rem;\n   }\n   .ff-offering-tiles {\n      display: grid;\n      gap: 1rem;\n   }\n   .ff-offering-tile {\n      padding: 1rem;\n   }\n   .ff-offering-tile .ff-offering-cta {\n      \u002F* margin-bottom: 1.5rem; *\u002F\n   }\n   .ff-offering-tile label {\n      font-size: 1.25rem;\n      font-weight: 500;\n      color: #4b5563;\n      display: flex;\n      align-items: center;\n      gap: 6px;\n   }\n   .ff-offering-tile label img {\n      width: 32px;\n   }\n   .ff-offering-tile ul {\n      list-style: none;\n      padding: 0;\n      margin-bottom: 0;\n   }\n   .ff-offering-tile ul li {\n      padding-left: 0;\n   }\n   .ff-offering-tile ul li:last-child {\n      margin-bottom: 0;\n   }\n   .ff-offering-tile ul li a {\n      display: flex;\n      padding: 6px 9px;\n      text-decoration: none;\n      align-items: center;\n      justify-content: space-between;\n   }\n   .ff-offering-tile ul li a:hover,\n   .ff-product-feature-tile:hover {\n      cursor: pointer;\n      border: 1px solid #4F46E5;\n      text-decoration: none;\n   }\n   .ff-offering-tile ul li .ff-icon {\n      padding-right: 0;      \n   }\n   .ff-product-feature-tiles {\n      display: grid;\n      gap: 1rem;\n   }\n   .ff-product-feature-tile {\n      display: flex;\n      padding: 6px;\n      text-decoration: none;\n   }\n   .ff-product-feature-tile label,\n   .ff-product-feature-tile .ff-product-feature-tile-decorator {\n      color: #2463eb;\n   }\n   .ff-product-feature-tile .ff-icon {\n      width: 32px;\n      height: 32px;\n      stroke-width: 1.5px;\n   }\n   .ff-product-feature-tile-decorator {\n      background-color: #EEF2FF;\n      padding: 3px;\n      width: 42px;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      flex-shrink: 0;\n   }\n",{"title":135,"searchDepth":658,"depth":658,"links":659},4,[660,662,667,668,669],{"id":29,"depth":661,"text":30},2,{"id":160,"depth":661,"text":161,"children":663},[664,666],{"id":165,"depth":665,"text":30},3,{"id":360,"depth":665,"text":361},{"id":431,"depth":661,"text":432},{"id":607,"depth":661,"text":608},{"id":625,"depth":661,"text":626},"md",null,{},"Documentation",true,"README.md","\u002Fdocs",{"title":5,"description":16},"docs\u002Findex","2026-03-18 15:07:47 +0000","2.33.2","bP609lS17S016JkO67szZv_mfmPwJ0EZNidT9ASOUg4",[683,691,708,719],{"name":684,"order":685,"children":686},"FlowFuse User Manuals",1,[687],{"title":688,"path":689,"group":684,"groupOrder":685,"order":661,"children":690},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":48,"order":658,"children":692},[693,697],{"title":694,"path":695,"group":48,"groupOrder":658,"order":685,"children":696},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":698,"path":87,"group":48,"groupOrder":658,"order":665,"children":699},"Upgrading FlowFuse",[700,704],{"title":701,"path":702,"order":671,"children":703},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":705,"path":706,"order":671,"children":707},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":608,"order":709,"children":710},5,[711,715],{"title":712,"path":713,"group":608,"groupOrder":709,"order":665,"children":714},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":716,"path":717,"group":608,"groupOrder":709,"order":671,"children":718},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":720,"order":671,"children":721},"Other",[722,770,782,861,910,929,1003,1014],{"title":723,"path":724,"order":671,"children":725},"admin","\u002Fdocs\u002Fadmin",[726,730,742,750,754,758,762,766],{"title":727,"path":728,"order":685,"children":729},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":731,"path":732,"order":671,"children":733},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[734,738],{"title":735,"path":736,"order":671,"children":737},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":739,"path":740,"order":671,"children":741},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":743,"path":744,"order":671,"children":745},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[746],{"title":747,"path":748,"order":671,"children":749},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":751,"path":752,"order":671,"children":753},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":755,"path":756,"order":671,"children":757},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":759,"path":760,"order":671,"children":761},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":763,"path":764,"order":671,"children":765},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":767,"path":768,"order":671,"children":769},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":771,"path":772,"order":671,"children":773},"cloud","\u002Fdocs\u002Fcloud",[774,778],{"title":775,"path":776,"order":685,"children":777},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":779,"path":780,"order":671,"children":781},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":783,"path":784,"order":671,"children":785},"contribute","\u002Fdocs\u002Fcontribute",[786,789,793,797,801,805,809,817,853,857],{"title":775,"path":787,"order":685,"children":788},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":790,"path":791,"order":671,"children":792},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":794,"path":795,"order":671,"children":796},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":798,"path":799,"order":671,"children":800},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":802,"path":803,"order":671,"children":804},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":806,"path":807,"order":671,"children":808},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":810,"path":811,"order":671,"children":812},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[813],{"title":814,"path":815,"order":671,"children":816},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":818,"path":819,"order":671,"children":820},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[821,825,829,833,837,841,845,849],{"title":822,"path":823,"order":671,"children":824},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":826,"path":827,"order":671,"children":828},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":830,"path":831,"order":671,"children":832},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":834,"path":835,"order":671,"children":836},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":838,"path":839,"order":671,"children":840},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":842,"path":843,"order":671,"children":844},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":846,"path":847,"order":671,"children":848},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":850,"path":851,"order":671,"children":852},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":854,"path":855,"order":671,"children":856},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":858,"path":859,"order":671,"children":860},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":862,"path":863,"order":671,"children":864},"device-agent","\u002Fdocs\u002Fdevice-agent",[865,869,872,876,880,885],{"title":866,"path":867,"order":685,"children":868},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":694,"path":870,"order":661,"children":871},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":873,"path":874,"order":658,"children":875},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":877,"path":878,"order":709,"children":879},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":881,"path":882,"order":883,"children":884},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":886,"path":887,"order":671,"children":888},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[889,894,898,902,906],{"title":890,"path":891,"group":892,"order":685,"children":893},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":895,"path":896,"group":892,"order":661,"children":897},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":899,"path":900,"group":892,"order":665,"children":901},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":903,"path":904,"group":892,"order":658,"children":905},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":907,"path":908,"group":892,"order":709,"children":909},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":911,"path":912,"order":671,"children":913},"hardware","\u002Fdocs\u002Fhardware",[914,917,921,925],{"title":890,"path":915,"order":685,"children":916},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":918,"path":919,"order":661,"children":920},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":922,"path":923,"order":665,"children":924},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":926,"path":927,"order":665,"children":928},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":886,"path":930,"order":671,"children":931},"\u002Fdocs\u002Finstall",[932,935,939,943,963,967,971,975],{"title":890,"path":933,"order":685,"children":934},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":936,"path":937,"order":671,"children":938},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":940,"path":941,"order":671,"children":942},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":944,"path":945,"order":671,"children":946},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[947,951,955,959],{"title":948,"path":949,"order":671,"children":950},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":952,"path":953,"order":671,"children":954},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":956,"path":957,"order":671,"children":958},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":960,"path":961,"order":671,"children":962},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":964,"path":965,"order":671,"children":966},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":968,"path":969,"order":671,"children":970},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":972,"path":973,"order":671,"children":974},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":976,"path":977,"order":671,"children":978},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[979,983,987,991,995,999],{"title":980,"path":981,"order":671,"children":982},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":984,"path":985,"order":671,"children":986},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":988,"path":989,"order":671,"children":990},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":992,"path":993,"order":671,"children":994},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":996,"path":997,"order":671,"children":998},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":1000,"path":1001,"order":671,"children":1002},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":1004,"path":1005,"order":671,"children":1006},"migration","\u002Fdocs\u002Fmigration",[1007,1010],{"title":775,"path":1008,"order":685,"children":1009},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":1011,"path":1012,"order":671,"children":1013},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":1015,"path":1016,"order":671,"children":1017},"user","\u002Fdocs\u002Fuser",[1018,1021,1025,1029,1033,1038,1042,1046,1050,1054,1058,1062,1074,1078,1081,1085,1088,1092,1096,1100,1104,1108,1112,1116,1120,1123,1126,1130],{"title":30,"path":1019,"order":685,"children":1020},"\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":1022,"path":1023,"order":685,"children":1024},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":1026,"path":1027,"order":661,"children":1028},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":1030,"path":1031,"order":661,"children":1032},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":1034,"path":1035,"order":1036,"children":1037},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":1039,"path":1040,"order":671,"children":1041},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":1043,"path":1044,"order":671,"children":1045},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":1047,"path":1048,"order":671,"children":1049},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":1051,"path":1052,"order":671,"children":1053},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":1055,"path":1056,"order":671,"children":1057},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":1059,"path":1060,"order":671,"children":1061},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":1063,"path":1064,"order":671,"children":1065},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[1066,1070],{"title":1067,"path":1068,"order":671,"children":1069},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":1071,"path":1072,"order":671,"children":1073},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":1075,"path":1076,"order":671,"children":1077},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":489,"path":1079,"order":671,"children":1080},"\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":1082,"path":1083,"order":671,"children":1084},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":453,"path":1086,"order":671,"children":1087},"\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":1089,"path":1090,"order":671,"children":1091},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":1093,"path":1094,"order":671,"children":1095},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":1097,"path":1098,"order":671,"children":1099},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":1101,"path":1102,"order":671,"children":1103},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":1105,"path":1106,"order":671,"children":1107},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":1109,"path":1110,"order":671,"children":1111},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":1113,"path":1114,"order":671,"children":1115},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":1117,"path":1118,"order":671,"children":1119},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":243,"path":1121,"order":671,"children":1122},"\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":854,"path":1124,"order":671,"children":1125},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":1127,"path":1128,"order":671,"children":1129},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":1131,"path":1132,"order":671,"children":1133},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546040745]