[{"data":1,"prerenderedAt":752},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fcontribute\u002Ffeature-flags\u002F":3,"docs-nav":294},{"id":4,"title":5,"body":6,"description":12,"extension":282,"layout":283,"meta":284,"navGroup":283,"navGroupOrder":283,"navOrder":283,"navTitle":285,"navigation":286,"originalPath":287,"path":288,"redirect":283,"seo":289,"stem":290,"updated":291,"version":292,"__hash__":293},"docs\u002Fdocs\u002Fcontribute\u002Ffeature-flags.md","Feature Flags",{"type":7,"value":8,"toc":273},"minimark",[9,13,21,28,34,39,42,52,62,66,76,100,104,107,113,126,132,137,144,148,159,165,172,178,181,184,196,200,222,238,257,263],[10,11,12],"p",{},"When adding features to the platform it is sometimes a requirement to be able to\nrestrict the feature to licensed platforms, and furthermore to certain types of team\non the platform.",[10,14,15,16,20],{},"Most typically this will be a feature that should only be available to the ",[17,18,19],"code",{},"Enterprise"," tier on FlowFuse Cloud.",[10,22,23,24,27],{},"This is a quick guide for how to add a feature flag - both at the platform-wide\nlevel and against individual ",[17,25,26],{},"TeamTypes",".",[10,29,30,31,27],{},"Feature flag names should use ",[17,32,33],{},"camelCase",[35,36,38],"h3",{"id":37},"add-a-platform-wide-feature-flag","Add a platform-wide feature flag",[10,40,41],{},"All licensable features should set a platform-wide feature flag to indicate\nthe feature is available.",[43,44,49],"pre",{"className":45,"code":47,"language":48},[46],"language-text","app.config.features.register('featureFlagName', true)\n","text",[17,50,47],{"__ignoreMap":51},"",[10,53,54,61],{},[55,56,60],"a",{"href":57,"rel":58},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Fforge\u002Fee\u002Flib\u002Fha\u002Findex.js#L6",[59],"nofollow","Here"," is\nan example of how the HA feature sets its platform-wide flag.",[35,63,65],{"id":64},"add-a-team-type-feature-flag","Add a team type feature flag",[10,67,68,69,27],{},"The feature flag is set by an admin user via ",[55,70,73],{"href":71,"rel":72},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Ffrontend\u002Fsrc\u002Fpages\u002Fadmin\u002FTeamTypes\u002Fdialogs\u002FTeamTypeEditDialog.vue",[59],[17,74,75],{},"TeamTypeEditDialog.vue",[77,78,79,88],"ol",{},[80,81,82,83,27],"li",{},"Add an entry to the existing list of feature flags ",[55,84,87],{"href":85,"rel":86},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Ffrontend\u002Fsrc\u002Fpages\u002Fadmin\u002FTeamTypes\u002Fdialogs\u002FTeamTypeEditDialog.vue#L73-L85",[59],"here",[80,89,90,91,95,96,99],{},"Add a check to ensure the right default value is applied ",[55,92,87],{"href":93,"rel":94},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Ffrontend\u002Fsrc\u002Fpages\u002Fadmin\u002FTeamTypes\u002Fdialogs\u002FTeamTypeEditDialog.vue#L172-L174",[59],". Any new feature should default to ",[17,97,98],{},"false"," so it can then be selectively enabled.",[35,101,103],{"id":102},"using-the-feature-flags-runtime-side","Using the feature flags - runtime side",[10,105,106],{},"Platform-wide feature flags can be checked using:",[43,108,111],{"className":109,"code":110,"language":48},[46],"const isFeatureEnabledOnPlatform = app.config.features.enabled('featureFlagName')\n\n",[17,112,110],{"__ignoreMap":51},[10,114,115,118,119,122,123,125],{},[17,116,117],{},"TeamType"," feature flags can be checked using the ",[17,120,121],{},"getFeatureProperty"," function\nof the ",[17,124,117],{}," model:",[43,127,130],{"className":128,"code":129,"language":48},[46],"\u002F\u002F myTeamType is an instance of `TeamType`\nconst isFeatureEnabledForTeamType = myTeamType.getFeatureProperty('featureFlagName', false)\n",[17,131,129],{"__ignoreMap":51},[10,133,134,135,27],{},"The first arg is the name of the feature flag, the second arg is the default value\nif the feature flag is otherwise unset. As mentioned above, any new feature should\ndefault to ",[17,136,98],{},[10,138,139,143],{},[55,140,60],{"href":141,"rel":142},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Fforge\u002Fee\u002Froutes\u002FsharedLibrary\u002Findex.js#L22",[59]," is an example of this in action.",[35,145,147],{"id":146},"using-the-feature-flag-frontend","Using the feature flag - frontend",[10,149,150,151,154,155,158],{},"In the frontend, platform-wide feature flags can be checked against\nthe ",[17,152,153],{},"features"," property of the ",[17,156,157],{},"account"," store.",[10,160,161,162,27],{},"TeamType feature flags can be checked against ",[17,163,164],{},"team.type.properties.features.featureFlagName",[10,166,167,171],{},[55,168,60],{"href":169,"rel":170},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Ffrontend\u002Fsrc\u002Fpages\u002Fapplication\u002FDeviceGroups.vue#L135-L146",[59]," is an example of how we combine these two things:",[43,173,176],{"className":174,"code":175,"language":48},[46],"    computed: {\n        ...mapState('account', ['features']),\n        featureEnabledForTeam () {\n            return !!this.team.type.properties.features?.deviceGroups\n        },\n        featureEnabledForPlatform () {\n            return this.features.deviceGroups\n        },\n        featureEnabled () {\n            return this.featureEnabledForTeam && this.featureEnabledForPlatform\n        }\n    },\n",[17,177,175],{"__ignoreMap":51},[10,179,180],{},"This allows the UI to distinguish between a feature being unavailable because the platform\nis not licensed for it, and a feature being unavailable for the current team type.",[10,182,183],{},"This allows different messages to be displayed with the most appropriate call to action.",[10,185,186,187,190,191,195],{},"The ",[17,188,189],{},"EmptyState"," component has support for this - see ",[55,192,87],{"href":193,"rel":194},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002F0335c9056019ff9987d97f3ad3f18675de1c2422\u002Ffrontend\u002Fsrc\u002Fpages\u002Fapplication\u002FDeviceGroups.vue#L29",[59],"\nfor how that is applied.",[35,197,199],{"id":198},"using-the-feature_configs-composable","Using the FEATURE_CONFIGS composable",[10,201,202,203,206,207,210,211,214,215,218,219,158],{},"The recommended approach for frontend feature checks is to use the ",[17,204,205],{},"FEATURE_CONFIGS"," array\nin ",[17,208,209],{},"frontend\u002Fsrc\u002Fcomposables\u002FFeatureChecks.ts",". Each entry defines a feature with platform\nand\u002For team level checks, and the ",[17,212,213],{},"buildFeatureChecks"," function produces computed properties\nthat are available via the ",[17,216,217],{},"featuresCheck"," getter on the ",[17,220,221],{},"account-settings",[10,223,224,225,229,230,233,234,237],{},"Features can be ",[226,227,228],"strong",{},"opt-in"," (disabled by default, must be explicitly enabled per team type) or\n",[226,231,232],{},"opt-out"," (enabled by default, must be explicitly disabled). Opt-out features use ",[17,235,236],{},"optOut: true","\nin their config entry.",[10,239,240,241,244,245,248,249,252,253,256],{},"Features can also declare dependencies on other features using ",[17,242,243],{},"dependsOn",", ",[17,246,247],{},"dependsOnPlatform",",\nand ",[17,250,251],{},"dependsOnTeam",". For example, all AI sub-features depend on the ",[17,254,255],{},"ai"," flag:",[43,258,261],{"className":259,"code":260,"language":48},[46],"{ output: 'isExpertAssistantFeatureEnabled', platformKey: 'expertAssistant', teamKey: 'expertAssistant', optOut: true, dependsOnPlatform: 'ai', dependsOnTeam: 'ai', dependsOnTeamOptOut: true }\n",[17,262,260],{"__ignoreMap":51},[10,264,265,266,268,269,272],{},"See the JSDoc on the ",[17,267,205],{}," array in ",[17,270,271],{},"FeatureChecks.ts"," for full documentation\nof all available options.",{"title":51,"searchDepth":274,"depth":274,"links":275},4,[276,278,279,280,281],{"id":37,"depth":277,"text":38},3,{"id":64,"depth":277,"text":65},{"id":102,"depth":277,"text":103},{"id":146,"depth":277,"text":147},{"id":198,"depth":277,"text":199},"md",null,{},"Working with Feature Flags",true,"contribute\u002Ffeature-flags.md","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",{"description":12},"docs\u002Fcontribute\u002Ffeature-flags","2026-07-24 11:22:34 -0700","2.33.2","E1ZK5zApH4BdRwt03PTObVe40CpBOmk0mo18ZbrFXUw",[295,304,323,335],{"name":296,"order":297,"children":298},"FlowFuse User Manuals",1,[299],{"title":300,"path":301,"group":296,"groupOrder":297,"order":302,"children":303},"FlowFuse API","\u002Fdocs\u002Fapi",2,[],{"name":305,"order":274,"children":306},"FlowFuse Self-Hosted",[307,311],{"title":308,"path":309,"group":305,"groupOrder":274,"order":297,"children":310},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":312,"path":313,"group":305,"groupOrder":274,"order":277,"children":314},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[315,319],{"title":316,"path":317,"order":283,"children":318},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":320,"path":321,"order":283,"children":322},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":324,"order":325,"children":326},"Support",5,[327,331],{"title":328,"path":329,"group":324,"groupOrder":325,"order":277,"children":330},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":332,"path":333,"group":324,"groupOrder":325,"order":283,"children":334},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":336,"order":283,"children":337},"Other",[338,386,398,475,524,543,617,628],{"title":339,"path":340,"order":283,"children":341},"admin","\u002Fdocs\u002Fadmin",[342,346,358,366,370,374,378,382],{"title":343,"path":344,"order":297,"children":345},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":347,"path":348,"order":283,"children":349},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[350,354],{"title":351,"path":352,"order":283,"children":353},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":355,"path":356,"order":283,"children":357},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":359,"path":360,"order":283,"children":361},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[362],{"title":363,"path":364,"order":283,"children":365},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":367,"path":368,"order":283,"children":369},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":371,"path":372,"order":283,"children":373},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":375,"path":376,"order":283,"children":377},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":379,"path":380,"order":283,"children":381},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":383,"path":384,"order":283,"children":385},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":387,"path":388,"order":283,"children":389},"cloud","\u002Fdocs\u002Fcloud",[390,394],{"title":391,"path":392,"order":297,"children":393},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":395,"path":396,"order":283,"children":397},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":399,"path":400,"order":283,"children":401},"contribute","\u002Fdocs\u002Fcontribute",[402,405,409,413,417,421,425,433,469,473],{"title":391,"path":403,"order":297,"children":404},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":406,"path":407,"order":283,"children":408},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":410,"path":411,"order":283,"children":412},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":414,"path":415,"order":283,"children":416},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":418,"path":419,"order":283,"children":420},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":422,"path":423,"order":283,"children":424},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":426,"path":427,"order":283,"children":428},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[429],{"title":430,"path":431,"order":283,"children":432},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":434,"path":435,"order":283,"children":436},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[437,441,445,449,453,457,461,465],{"title":438,"path":439,"order":283,"children":440},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":442,"path":443,"order":283,"children":444},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":446,"path":447,"order":283,"children":448},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":450,"path":451,"order":283,"children":452},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":454,"path":455,"order":283,"children":456},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":458,"path":459,"order":283,"children":460},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":462,"path":463,"order":283,"children":464},"User Login Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",[],{"title":466,"path":467,"order":283,"children":468},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":470,"path":471,"order":283,"children":472},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":285,"path":288,"order":283,"children":474},[],{"title":476,"path":477,"order":283,"children":478},"device-agent","\u002Fdocs\u002Fdevice-agent",[479,483,486,490,494,499],{"title":480,"path":481,"order":297,"children":482},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":308,"path":484,"order":302,"children":485},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":487,"path":488,"order":274,"children":489},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":491,"path":492,"order":325,"children":493},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":495,"path":496,"order":497,"children":498},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",6,[],{"title":500,"path":501,"order":283,"children":502},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[503,508,512,516,520],{"title":504,"path":505,"group":506,"order":297,"children":507},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":509,"path":510,"group":506,"order":302,"children":511},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":513,"path":514,"group":506,"order":277,"children":515},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":517,"path":518,"group":506,"order":274,"children":519},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":521,"path":522,"group":506,"order":325,"children":523},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":525,"path":526,"order":283,"children":527},"hardware","\u002Fdocs\u002Fhardware",[528,531,535,539],{"title":504,"path":529,"order":297,"children":530},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":532,"path":533,"order":302,"children":534},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":536,"path":537,"order":277,"children":538},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":540,"path":541,"order":277,"children":542},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":500,"path":544,"order":283,"children":545},"\u002Fdocs\u002Finstall",[546,549,553,557,577,581,585,589],{"title":504,"path":547,"order":297,"children":548},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":550,"path":551,"order":283,"children":552},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":554,"path":555,"order":283,"children":556},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":558,"path":559,"order":283,"children":560},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[561,565,569,573],{"title":562,"path":563,"order":283,"children":564},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":566,"path":567,"order":283,"children":568},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":570,"path":571,"order":283,"children":572},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":574,"path":575,"order":283,"children":576},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":578,"path":579,"order":283,"children":580},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":582,"path":583,"order":283,"children":584},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":586,"path":587,"order":283,"children":588},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":590,"path":591,"order":283,"children":592},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[593,597,601,605,609,613],{"title":594,"path":595,"order":283,"children":596},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":598,"path":599,"order":283,"children":600},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":602,"path":603,"order":283,"children":604},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":606,"path":607,"order":283,"children":608},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":610,"path":611,"order":283,"children":612},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":614,"path":615,"order":283,"children":616},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":618,"path":619,"order":283,"children":620},"migration","\u002Fdocs\u002Fmigration",[621,624],{"title":391,"path":622,"order":297,"children":623},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":625,"path":626,"order":283,"children":627},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":629,"path":630,"order":283,"children":631},"user","\u002Fdocs\u002Fuser",[632,636,640,644,648,653,657,661,665,669,673,677,689,693,697,701,705,709,713,717,721,725,729,733,737,741,744,748],{"title":633,"path":634,"order":297,"children":635},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":637,"path":638,"order":297,"children":639},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":641,"path":642,"order":302,"children":643},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":645,"path":646,"order":302,"children":647},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":649,"path":650,"order":651,"children":652},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",10,[],{"title":654,"path":655,"order":283,"children":656},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":658,"path":659,"order":283,"children":660},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":662,"path":663,"order":283,"children":664},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":666,"path":667,"order":283,"children":668},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":670,"path":671,"order":283,"children":672},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":674,"path":675,"order":283,"children":676},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":678,"path":679,"order":283,"children":680},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[681,685],{"title":682,"path":683,"order":283,"children":684},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":686,"path":687,"order":283,"children":688},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":690,"path":691,"order":283,"children":692},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":694,"path":695,"order":283,"children":696},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":698,"path":699,"order":283,"children":700},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":702,"path":703,"order":283,"children":704},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":706,"path":707,"order":283,"children":708},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":710,"path":711,"order":283,"children":712},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":714,"path":715,"order":283,"children":716},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":718,"path":719,"order":283,"children":720},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":722,"path":723,"order":283,"children":724},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":726,"path":727,"order":283,"children":728},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":730,"path":731,"order":283,"children":732},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":734,"path":735,"order":283,"children":736},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":738,"path":739,"order":283,"children":740},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":470,"path":742,"order":283,"children":743},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":745,"path":746,"order":283,"children":747},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":749,"path":750,"order":283,"children":751},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546037759]