[{"data":1,"prerenderedAt":1093},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fdevice-agent\u002Frunning\u002F":3,"docs-nav":640},{"id":4,"title":5,"body":6,"description":36,"extension":629,"layout":630,"meta":631,"navGroup":630,"navGroupOrder":630,"navOrder":254,"navTitle":632,"navigation":244,"originalPath":633,"path":634,"redirect":630,"seo":635,"stem":636,"updated":637,"version":638,"__hash__":639},"docs\u002Fdocs\u002Fdevice-agent\u002Frunning.md","Running the Device Agent",{"type":7,"value":8,"toc":608},"minimark",[9,13,18,27,30,47,60,63,68,71,75,83,87,90,98,102,108,125,130,166,170,177,192,196,199,203,210,323,330,340,378,382,397,404,410,414,466,471,475,512,517,521,524,527,558,562,565,604],[10,11,5],"h1",{"id":12},"running-the-device-agent",[14,15,17],"h2",{"id":16},"running","Running",[19,20,21,22,26],"p",{},"If the agent was installed as a global npm module, the command ",[23,24,25],"code",{},"flowfuse-device-agent"," will be on the path.",[19,28,29],{},"If the default working directory and config file are being used, then the agent can be started with:",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowfuse-device-agent\n","bash","",[23,38,39],{"__ignoreMap":36},[40,41,44],"span",{"class":42,"line":43},"line",1,[40,45,34],{"class":46},"sBMFI",[19,48,49,50,53,54,59],{},"By default, Node-RED will listen to port ",[23,51,52],{},"1880",", you can change it using the options\ndetailed ",[55,56,58],"a",{"href":57},"\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual#listen-port","here",".",[19,61,62],{},"This will start the agent, set the Remote Instance in the default of fleet mode, and connect to\nFlowFuse, waiting until a Target Snapshot has been assigned to it, or it is assigned\nto an Application.",[64,65,67],"h3",{"id":66},"when-assigned-to-an-instance","When assigned to an instance:",[19,69,70],{},"Once the agent has been assigned a Target Snapshot, it will download the Snapshot and\ndeploy it to the Remote Instance.",[64,72,74],{"id":73},"when-assigned-to-an-application","When assigned to an application:",[19,76,77,78,82],{},"Once the agent has been assigned to an application it starts up. If the device is new,\nit will get a default set of flows which can be edited directly.\nSee ",[55,79,81],{"href":80},"\u002Fdocs\u002Fdevice-agent\u002Fdeploy#editing-the-node-red-flows-on-a-remote-instance-that-is-assigned-to-an-application","Editing the Node-RED flows on a Remote Instance that is assigned to an application"," for details.",[64,84,86],{"id":85},"device-agent-command-line-options","Device Agent Command Line Options",[19,88,89],{},"The following command line options are available:",[31,91,96],{"className":92,"code":94,"language":95},[93],"language-text","Options\n\n  -c, --config file           Device configuration file. Default: device.yml\n  -d, --dir dir               Where the agent should store its state. Default: \u002Fopt\u002Fflowfuse-device\n  -i, --interval secs\n  -p, --port number\n  -m, --moduleCache           Use local npm module cache rather than install\n  --node-options string       Node.js command-line options to pass to the Node-RED process. Can be specified multiple times. You must use `=` between the option and its value.\n\nWeb UI Options\n\n  -w, --ui            Start the Web UI Server (optional, does not run by default)\n  --ui-host string    Web UI server host. Default: (0.0.0.0) (listen on all interfaces)\n  --ui-port number    Web UI server port. Default: 1879\n  --ui-user string    Web UI username. Required if --ui is specified\n  --ui-pass string    Web UI password. Required if --ui is specified\n  --ui-runtime mins   Time the Web UI server is permitted to run. Default: 10\n\nSetup command\n\n  -o, --otc string    Setup device using a one time code\n  --otc-no-start      Do not start the agent after setup\n  --otc-no-import     Do not ask to import Node-RED flows during setup\n  -u, --ff-url url    URL of FlowFuse. Required for setup\n\nGlobal Options\n\n  -h, --help          print out helpful usage information\n  --version           print out version information\n  -v, --verbose       turn on debugging output\n  --log-format json   output logs in JSON format\n","text",[23,97,94],{"__ignoreMap":36},[64,99,101],{"id":100},"command-line-examples","Command Line Examples",[19,103,104],{},[105,106,107],"em",{},"Start the agent with a different port number",[31,109,111],{"className":33,"code":110,"language":35,"meta":36,"style":36},"flowfuse-device-agent -p 8080\n",[23,112,113],{"__ignoreMap":36},[40,114,115,117,121],{"class":42,"line":43},[40,116,25],{"class":46},[40,118,120],{"class":119},"sfazB"," -p",[40,122,124],{"class":123},"sbssI"," 8080\n",[19,126,127],{},[105,128,129],{},"Start the agent with a different working directory and the Web UI enabled",[31,131,133],{"className":33,"code":132,"language":35,"meta":36,"style":36},"flowfuse-device-agent -d \u002Fpath\u002Fto\u002Fworking\u002Fdirectory -w --ui-user admin --ui-pass password --ui-port 8081\n",[23,134,135],{"__ignoreMap":36},[40,136,137,139,142,145,148,151,154,157,160,163],{"class":42,"line":43},[40,138,25],{"class":46},[40,140,141],{"class":119}," -d",[40,143,144],{"class":119}," \u002Fpath\u002Fto\u002Fworking\u002Fdirectory",[40,146,147],{"class":119}," -w",[40,149,150],{"class":119}," --ui-user",[40,152,153],{"class":119}," admin",[40,155,156],{"class":119}," --ui-pass",[40,158,159],{"class":119}," password",[40,161,162],{"class":119}," --ui-port",[40,164,165],{"class":123}," 8081\n",[14,167,169],{"id":168},"structured-json-logging","Structured JSON logging",[19,171,172,173,176],{},"By default the Device Agent prints plain-text logs, which can be hard to parse with log aggregation tools. From Device Agent v4, you can output machine-readable, structured logs in JSON format using the ",[23,174,175],{},"--log-format json"," flag:",[31,178,180],{"className":33,"code":179,"language":35,"meta":36,"style":36},"flowfuse-device-agent --log-format json\n",[23,181,182],{"__ignoreMap":36},[40,183,184,186,189],{"class":42,"line":43},[40,185,25],{"class":46},[40,187,188],{"class":119}," --log-format",[40,190,191],{"class":119}," json\n",[14,193,195],{"id":194},"configuring-nodejs-options","Configuring Node.js Options",[19,197,198],{},"Node.js command-line arguments can be passed to the Node-RED process started by the Device Agent. This is useful for memory-intensive workflows or certificate management.",[64,200,202],{"id":201},"via-command-line","Via command line",[19,204,205,206,209],{},"Use ",[23,207,208],{},"--node-options"," — it can be specified multiple times:",[31,211,213],{"className":33,"code":212,"language":35,"meta":36,"style":36},"# Set a custom heap size limit\nflowfuse-device-agent --node-options='--max-old-space-size=256'\n\n# Enable system certificate authorities (Linux)\nflowfuse-device-agent --node-options='--use-openssl-ca'\n\n# Enable system certificate authorities (Windows\u002FmacOS)\nflowfuse-device-agent --node-options='--use-system-ca'\n\n# Combine multiple options\nflowfuse-device-agent --node-options='--max-old-space-size=256' --node-options='--use-openssl-ca'\n",[23,214,215,221,239,246,252,266,271,277,291,296,302],{"__ignoreMap":36},[40,216,217],{"class":42,"line":43},[40,218,220],{"class":219},"sHwdD","# Set a custom heap size limit\n",[40,222,224,226,229,233,236],{"class":42,"line":223},2,[40,225,25],{"class":46},[40,227,228],{"class":119}," --node-options=",[40,230,232],{"class":231},"sMK4o","'",[40,234,235],{"class":119},"--max-old-space-size=256",[40,237,238],{"class":231},"'\n",[40,240,242],{"class":42,"line":241},3,[40,243,245],{"emptyLinePlaceholder":244},true,"\n",[40,247,249],{"class":42,"line":248},4,[40,250,251],{"class":219},"# Enable system certificate authorities (Linux)\n",[40,253,255,257,259,261,264],{"class":42,"line":254},5,[40,256,25],{"class":46},[40,258,228],{"class":119},[40,260,232],{"class":231},[40,262,263],{"class":119},"--use-openssl-ca",[40,265,238],{"class":231},[40,267,269],{"class":42,"line":268},6,[40,270,245],{"emptyLinePlaceholder":244},[40,272,274],{"class":42,"line":273},7,[40,275,276],{"class":219},"# Enable system certificate authorities (Windows\u002FmacOS)\n",[40,278,280,282,284,286,289],{"class":42,"line":279},8,[40,281,25],{"class":46},[40,283,228],{"class":119},[40,285,232],{"class":231},[40,287,288],{"class":119},"--use-system-ca",[40,290,238],{"class":231},[40,292,294],{"class":42,"line":293},9,[40,295,245],{"emptyLinePlaceholder":244},[40,297,299],{"class":42,"line":298},10,[40,300,301],{"class":219},"# Combine multiple options\n",[40,303,305,307,309,311,313,315,317,319,321],{"class":42,"line":304},11,[40,306,25],{"class":46},[40,308,228],{"class":119},[40,310,232],{"class":231},[40,312,235],{"class":119},[40,314,232],{"class":231},[40,316,228],{"class":119},[40,318,232],{"class":231},[40,320,263],{"class":119},[40,322,238],{"class":231},[64,324,326,327],{"id":325},"via-deviceyml","Via ",[23,328,329],{},"device.yml",[19,331,332,333,336,337,339],{},"Add a ",[23,334,335],{},"nodeOptions"," array to the ",[23,338,329],{}," configuration file:",[31,341,345],{"className":342,"code":343,"language":344,"meta":36,"style":36},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","nodeOptions:\n  - \"--max-old-space-size=256\"\n  - \"--use-openssl-ca\"\n","yaml",[23,346,347,355,368],{"__ignoreMap":36},[40,348,349,352],{"class":42,"line":43},[40,350,335],{"class":351},"swJcz",[40,353,354],{"class":231},":\n",[40,356,357,360,363,365],{"class":42,"line":223},[40,358,359],{"class":231},"  -",[40,361,362],{"class":231}," \"",[40,364,235],{"class":119},[40,366,367],{"class":231},"\"\n",[40,369,370,372,374,376],{"class":42,"line":241},[40,371,359],{"class":231},[40,373,362],{"class":231},[40,375,263],{"class":119},[40,377,367],{"class":231},[14,379,381],{"id":380},"running-behind-a-http-proxy","Running behind a HTTP Proxy",[19,383,384,385,388,389,392,393,396],{},"If the Remote Instance is behind a HTTP proxy, the agent can be configured to use the proxy by setting the ",[23,386,387],{},"http_proxy",", ",[23,390,391],{},"https_proxy"," or ",[23,394,395],{},"all_proxy"," environment variables.",[19,398,399,400,403],{},"If necessary, the ",[23,401,402],{},"no_proxy"," environment variable can be used to specify a list of hosts that should not be accessed via the proxy.",[19,405,406,407,409],{},"For connecting to FlowFuse Cloud, the ",[23,408,391],{}," variable should be set to your proxy URL. This environment variable will be used by the agent for both the HTTP\nand MQTT connections.",[64,411,413],{"id":412},"example-setting-the-proxy-environment-variables-on-linux","Example setting the proxy environment variables on Linux",[31,415,417],{"className":33,"code":416,"language":35,"meta":36,"style":36},"# Set the https_proxy environment variable\nexport https_proxy=http:\u002F\u002Fmy-proxy:3128\n# Set the no_proxy environment variable to exclude local addresses and all hosts in the .mydomain.com domain\nexport no_proxy=localhost,127.0.0.1,.mydomain.com\n# Start the agent\nflowfuse-device-agent\n",[23,418,419,424,440,445,457,462],{"__ignoreMap":36},[40,420,421],{"class":42,"line":43},[40,422,423],{"class":219},"# Set the https_proxy environment variable\n",[40,425,426,430,434,437],{"class":42,"line":223},[40,427,429],{"class":428},"spNyl","export",[40,431,433],{"class":432},"sTEyZ"," https_proxy",[40,435,436],{"class":231},"=",[40,438,439],{"class":432},"http:\u002F\u002Fmy-proxy:3128\n",[40,441,442],{"class":42,"line":241},[40,443,444],{"class":219},"# Set the no_proxy environment variable to exclude local addresses and all hosts in the .mydomain.com domain\n",[40,446,447,449,452,454],{"class":42,"line":248},[40,448,429],{"class":428},[40,450,451],{"class":432}," no_proxy",[40,453,436],{"class":231},[40,455,456],{"class":432},"localhost,127.0.0.1,.mydomain.com\n",[40,458,459],{"class":42,"line":254},[40,460,461],{"class":219},"# Start the agent\n",[40,463,464],{"class":42,"line":268},[40,465,34],{"class":46},[19,467,468],{},[105,469,470],{},"To make these settings permanent, see the documentation for your Linux distribution.",[64,472,474],{"id":473},"example-setting-the-proxy-environment-variables-on-windows","Example setting the proxy environment variables on Windows",[31,476,478],{"className":33,"code":477,"language":35,"meta":36,"style":36},"# Set the https_proxy environment variable\nset https_proxy=http:\u002F\u002Fmy-proxy:3128\n# Set the no_proxy environment variable to exclude local addresses and all hosts in the .mydomain.com domain\nset no_proxy=localhost,127.0.0.1,.mydomain.com\n# Start the agent\nflowfuse-device-agent\n",[23,479,480,484,493,497,504,508],{"__ignoreMap":36},[40,481,482],{"class":42,"line":43},[40,483,423],{"class":219},[40,485,486,490],{"class":42,"line":223},[40,487,489],{"class":488},"s2Zo4","set",[40,491,492],{"class":119}," https_proxy=http:\u002F\u002Fmy-proxy:3128\n",[40,494,495],{"class":42,"line":241},[40,496,444],{"class":219},[40,498,499,501],{"class":42,"line":248},[40,500,489],{"class":488},[40,502,503],{"class":119}," no_proxy=localhost,127.0.0.1,.mydomain.com\n",[40,505,506],{"class":42,"line":254},[40,507,461],{"class":219},[40,509,510],{"class":42,"line":268},[40,511,34],{"class":46},[19,513,514],{},[105,515,516],{},"To make these settings permanent, see the documentation for your version of Windows.",[14,518,520],{"id":519},"running-with-no-access-to-npmjsorg","Running with no access to npmjs.org",[19,522,523],{},"By default, the Device Agent will try and download the correct version of Node-RED and\nany nodes required to run the Snapshot that is assigned to run on the Remote Instance.",[19,525,526],{},"If the Remote Instance is being run on an offline network or security policies prevent the\nDevice Agent from connecting to npmjs.org then it can be configured to use a pre-cached\nset of modules.",[19,528,529,530,533,534,537,538,540,541,544,545,549,550,553,554,557],{},"You can enable this mode by adding ",[23,531,532],{},"-m"," to the command line or adding ",[23,535,536],{},"moduleCache: true","\nto the ",[23,539,329],{}," file. This will cause the Device Agent to load the modules from the\n",[23,542,543],{},"module_cache"," directory in the Device Agent's ",[55,546,548],{"href":547},"\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual#working-directory","Working Directory"," (or whatever is set\nwith the ",[23,551,552],{},"-d"," option) (e.g. ",[23,555,556],{},"\u002Fopt\u002Fflowfuse-device\u002Fmodule_cache",".).",[64,559,561],{"id":560},"creating-a-module-cache","Creating a module cache",[19,563,564],{},"To create a suitable module cache, the device must be assigned to a Remote Instance.  You will need to\ninstall the modules on a local device with access to npmjs.org, ensuring you use the same\nOS and Architecture as your target device, and then copy the modules on to your Remote Instance.",[566,567,568,576,579,590,596],"ol",{},[569,570,571,572,575],"li",{},"From the Snapshot page, select the snapshot you want to deploy and select the option to download its ",[23,573,574],{},"package.json"," file.",[569,577,578],{},"Place this file in an empty directory on your local device.",[569,580,581,582,585,586,589],{},"Run ",[23,583,584],{},"npm install"," to install the modules. This will create a ",[23,587,588],{},"node_modules"," directory.",[569,591,592,593,595],{},"On your target Remote Instance, create a directory called ",[23,594,543],{}," inside the Device Agent Configuration directory.",[569,597,598,599,601,602,589],{},"Copy the ",[23,600,588],{}," directory from your local instance to the target instance so that it is under the ",[23,603,543],{},[605,606,607],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":36,"searchDepth":248,"depth":248,"links":609},[610,616,617,622,626],{"id":16,"depth":223,"text":17,"children":611},[612,613,614,615],{"id":66,"depth":241,"text":67},{"id":73,"depth":241,"text":74},{"id":85,"depth":241,"text":86},{"id":100,"depth":241,"text":101},{"id":168,"depth":223,"text":169},{"id":194,"depth":223,"text":195,"children":618},[619,620],{"id":201,"depth":241,"text":202},{"id":325,"depth":241,"text":621},"Via device.yml",{"id":380,"depth":223,"text":381,"children":623},[624,625],{"id":412,"depth":241,"text":413},{"id":473,"depth":241,"text":474},{"id":519,"depth":223,"text":520,"children":627},[628],{"id":560,"depth":241,"text":561},"md",null,{},"Running the Agent","device-agent\u002Frunning.md","\u002Fdocs\u002Fdevice-agent\u002Frunning",{"title":5,"description":36},"docs\u002Fdevice-agent\u002Frunning","2026-08-02 06:14:43 -0700","2.33.2","oL4K9ziGBhYxUwE2ra3ypatHJcEntsiBy3HW2ce1jDA",[641,648,667,678],{"name":642,"order":43,"children":643},"FlowFuse User Manuals",[644],{"title":645,"path":646,"group":642,"groupOrder":43,"order":223,"children":647},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":649,"order":248,"children":650},"FlowFuse Self-Hosted",[651,655],{"title":652,"path":653,"group":649,"groupOrder":248,"order":43,"children":654},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":656,"path":657,"group":649,"groupOrder":248,"order":241,"children":658},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[659,663],{"title":660,"path":661,"order":630,"children":662},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":664,"path":665,"order":630,"children":666},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":668,"order":254,"children":669},"Support",[670,674],{"title":671,"path":672,"group":668,"groupOrder":254,"order":241,"children":673},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":675,"path":676,"group":668,"groupOrder":254,"order":630,"children":677},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":679,"order":630,"children":680},"Other",[681,729,741,820,866,885,959,970],{"title":682,"path":683,"order":630,"children":684},"admin","\u002Fdocs\u002Fadmin",[685,689,701,709,713,717,721,725],{"title":686,"path":687,"order":43,"children":688},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":690,"path":691,"order":630,"children":692},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[693,697],{"title":694,"path":695,"order":630,"children":696},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":698,"path":699,"order":630,"children":700},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":702,"path":703,"order":630,"children":704},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[705],{"title":706,"path":707,"order":630,"children":708},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":710,"path":711,"order":630,"children":712},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":714,"path":715,"order":630,"children":716},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":718,"path":719,"order":630,"children":720},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":722,"path":723,"order":630,"children":724},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":726,"path":727,"order":630,"children":728},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":730,"path":731,"order":630,"children":732},"cloud","\u002Fdocs\u002Fcloud",[733,737],{"title":734,"path":735,"order":43,"children":736},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":738,"path":739,"order":630,"children":740},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":742,"path":743,"order":630,"children":744},"contribute","\u002Fdocs\u002Fcontribute",[745,748,752,756,760,764,768,776,812,816],{"title":734,"path":746,"order":43,"children":747},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":749,"path":750,"order":630,"children":751},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":753,"path":754,"order":630,"children":755},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":757,"path":758,"order":630,"children":759},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":761,"path":762,"order":630,"children":763},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":765,"path":766,"order":630,"children":767},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":769,"path":770,"order":630,"children":771},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[772],{"title":773,"path":774,"order":630,"children":775},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":777,"path":778,"order":630,"children":779},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[780,784,788,792,796,800,804,808],{"title":781,"path":782,"order":630,"children":783},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":785,"path":786,"order":630,"children":787},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":789,"path":790,"order":630,"children":791},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":793,"path":794,"order":630,"children":795},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":797,"path":798,"order":630,"children":799},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":801,"path":802,"order":630,"children":803},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":805,"path":806,"order":630,"children":807},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":809,"path":810,"order":630,"children":811},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":813,"path":814,"order":630,"children":815},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":817,"path":818,"order":630,"children":819},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":821,"path":822,"order":630,"children":823},"device-agent","\u002Fdocs\u002Fdevice-agent",[824,828,831,835,837,841],{"title":825,"path":826,"order":43,"children":827},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":652,"path":829,"order":223,"children":830},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":832,"path":833,"order":248,"children":834},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":632,"path":634,"order":254,"children":836},[],{"title":838,"path":839,"order":268,"children":840},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",[],{"title":842,"path":843,"order":630,"children":844},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[845,850,854,858,862],{"title":846,"path":847,"group":848,"order":43,"children":849},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":851,"path":852,"group":848,"order":223,"children":853},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":855,"path":856,"group":848,"order":241,"children":857},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":859,"path":860,"group":848,"order":248,"children":861},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":863,"path":864,"group":848,"order":254,"children":865},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":867,"path":868,"order":630,"children":869},"hardware","\u002Fdocs\u002Fhardware",[870,873,877,881],{"title":846,"path":871,"order":43,"children":872},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":874,"path":875,"order":223,"children":876},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":878,"path":879,"order":241,"children":880},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":882,"path":883,"order":241,"children":884},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":842,"path":886,"order":630,"children":887},"\u002Fdocs\u002Finstall",[888,891,895,899,919,923,927,931],{"title":846,"path":889,"order":43,"children":890},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":892,"path":893,"order":630,"children":894},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":896,"path":897,"order":630,"children":898},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":900,"path":901,"order":630,"children":902},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[903,907,911,915],{"title":904,"path":905,"order":630,"children":906},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":908,"path":909,"order":630,"children":910},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":912,"path":913,"order":630,"children":914},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":916,"path":917,"order":630,"children":918},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":920,"path":921,"order":630,"children":922},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":924,"path":925,"order":630,"children":926},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":928,"path":929,"order":630,"children":930},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":932,"path":933,"order":630,"children":934},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[935,939,943,947,951,955],{"title":936,"path":937,"order":630,"children":938},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":940,"path":941,"order":630,"children":942},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":944,"path":945,"order":630,"children":946},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":948,"path":949,"order":630,"children":950},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":952,"path":953,"order":630,"children":954},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":956,"path":957,"order":630,"children":958},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":960,"path":961,"order":630,"children":962},"migration","\u002Fdocs\u002Fmigration",[963,966],{"title":734,"path":964,"order":43,"children":965},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":967,"path":968,"order":630,"children":969},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":971,"path":972,"order":630,"children":973},"user","\u002Fdocs\u002Fuser",[974,978,982,986,990,994,998,1002,1006,1010,1014,1018,1030,1034,1038,1042,1046,1050,1054,1058,1062,1066,1070,1074,1078,1082,1085,1089],{"title":975,"path":976,"order":43,"children":977},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":979,"path":980,"order":43,"children":981},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":983,"path":984,"order":223,"children":985},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":987,"path":988,"order":223,"children":989},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":991,"path":992,"order":298,"children":993},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",[],{"title":995,"path":996,"order":630,"children":997},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":999,"path":1000,"order":630,"children":1001},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":1003,"path":1004,"order":630,"children":1005},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":1007,"path":1008,"order":630,"children":1009},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":1011,"path":1012,"order":630,"children":1013},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":1015,"path":1016,"order":630,"children":1017},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":1019,"path":1020,"order":630,"children":1021},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[1022,1026],{"title":1023,"path":1024,"order":630,"children":1025},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":1027,"path":1028,"order":630,"children":1029},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":1031,"path":1032,"order":630,"children":1033},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":1035,"path":1036,"order":630,"children":1037},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":1039,"path":1040,"order":630,"children":1041},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":1043,"path":1044,"order":630,"children":1045},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":1047,"path":1048,"order":630,"children":1049},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":1051,"path":1052,"order":630,"children":1053},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":1055,"path":1056,"order":630,"children":1057},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":1059,"path":1060,"order":630,"children":1061},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":1063,"path":1064,"order":630,"children":1065},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":1067,"path":1068,"order":630,"children":1069},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":1071,"path":1072,"order":630,"children":1073},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":1075,"path":1076,"order":630,"children":1077},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":1079,"path":1080,"order":630,"children":1081},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":813,"path":1083,"order":630,"children":1084},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":1086,"path":1087,"order":630,"children":1088},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":1090,"path":1091,"order":630,"children":1092},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546040372]