[{"data":1,"prerenderedAt":278},["ShallowReactive",2],{"agmd-flowfuse-foundations":3,"application-guide-nav":172},{"id":4,"title":5,"blurb":6,"body":7,"description":6,"extension":163,"guide":164,"meta":165,"navOrder":160,"navTitle":5,"navigation":166,"parent":167,"path":168,"seo":169,"slug":13,"stem":170,"__hash__":171},"applicationGuideDoc\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations.md","Foundations","The foundation to build on: what FlowFuse is, its core pieces, and how code is shared across teams.",{"type":8,"value":9,"toc":155},"minimark",[10,14,17,24,29,35,39,113,122,136,140,143],[11,12,5],"h1",{"id":13},"foundations",[15,16,6],"p",{},[15,18,19,23],{},[20,21,22],"strong",{},"FlowFuse is an application platform for building, deploying and managing industrial applications on Node-RED"," — across IT, OT and IIoT, from the edge to the cloud, governed from one place.",[25,26,28],"h2",{"id":27},"the-big-picture","The big picture",[30,31],"arch-diagram",{":edges":32,":groups":33,":nodes":34},"[{\"from\":\"users\",\"to\":\"platform\",\"label\":\"access\"},{\"from\":\"agent\",\"to\":\"platform\",\"label\":\"managed by\"}]","[{\"id\":\"platform\",\"label\":\"FlowFuse Platform — runs and connects your instances\",\"accent\":\"indigo\",\"nodes\":[\"hosted\",\"dash\",\"broker\",\"tables\"]},{\"id\":\"agent\",\"label\":\"Device Agent — bridges platform to the edge\",\"accent\":\"red\",\"nodes\":[\"remote\"]}]","[{\"id\":\"users\",\"label\":\"Users\",\"sub\":\"operators & teams\",\"accent\":\"slate\",\"many\":true,\"span\":2,\"col\":2,\"row\":1},{\"id\":\"hosted\",\"label\":\"Hosted Instance\",\"sub\":\"one or many · cloud or your server\",\"accent\":\"indigo\",\"many\":true,\"col\":1,\"row\":2},{\"id\":\"dash\",\"label\":\"Dashboard\",\"sub\":\"live operator UI\",\"accent\":\"blue\",\"col\":2,\"row\":2},{\"id\":\"broker\",\"label\":\"Team Broker\",\"sub\":\"MQTT message bus\",\"accent\":\"teal\",\"col\":3,\"row\":2},{\"id\":\"tables\",\"label\":\"FlowFuse Tables\",\"sub\":\"shared SQL database\",\"accent\":\"green\",\"col\":4,\"row\":2},{\"id\":\"remote\",\"label\":\"Remote Instance\",\"sub\":\"one per device, across sites\",\"accent\":\"slate\",\"many\":true,\"span\":2,\"col\":2,\"row\":3}]",[25,36,38],{"id":37},"the-core-pieces","The core pieces",[40,41,42,49,76,85,94,105],"ul",{},[43,44,45,48],"li",{},[20,46,47],{},"Single platform"," — Manage, secure, and govern everything from one place.",[43,50,51,58,59,62,63,66,67,71,72],{},[20,52,53],{},[54,55,57],"a",{"href":56},"\u002Fdocs\u002Fuser\u002Fconcepts\u002F#instance","Instances"," — Node-RED runtimes. A ",[20,60,61],{},"Hosted Instance"," runs on FlowFuse-managed infrastructure (cloud or your own server); a ",[20,64,65],{},"Remote Instance"," runs on your own edge hardware via the ",[54,68,70],{"href":69},"\u002Fdocs\u002Fdevice-agent\u002Fintroduction\u002F","Device Agent",". Same runtime either way — it connects to whatever the job needs (hardware, data, cloud) and can serve its own Dashboard. ",[54,73,75],{"href":74},"\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F","What an instance connects to →",[43,77,78,84],{},[20,79,80],{},[54,81,83],{"href":82},"\u002Fdocs\u002Fuser\u002Fteambroker\u002F","Team Broker"," — A shared message bus that ties data together across sites.",[43,86,87,93],{},[20,88,89],{},[54,90,92],{"href":91},"\u002Fdocs\u002Fuser\u002Fff-tables\u002F","Database"," — One shared operational data store.",[43,95,96,104],{},[20,97,98],{},[54,99,103],{"href":100,"rel":101},"https:\u002F\u002Fdashboard.flowfuse.com\u002F",[102],"nofollow","Dashboards"," — Operator-facing UIs for the people who run it.",[43,106,107,112],{},[20,108,109],{},[54,110,111],{"href":69},"Edge & device management"," — Deploy and manage across many devices, lines, and plants.",[114,115,117],"callout",{"icon":116},"i-lucide-square-stack",[15,118,119,121],{},[20,120,65],{}," — A Remote Instance lives in both worlds: edge execution down in OT, or an on-prem worker under an IT\u002Fcloud platform.",[114,123,125],{"icon":124},"i-lucide-book-open",[15,126,127,130,131,135],{},[20,128,129],{},"In the FlowFuse docs"," — that's the mental model in plain language. For the full glossary — every FlowFuse piece and term (Applications, Instances, Snapshots, Pipelines, Team Broker, Tables, Devices and more) — see the ",[54,132,134],{"href":133},"\u002Fdocs\u002Fuser\u002Fconcepts\u002F","FlowFuse Concepts documentation",".",[25,137,139],{"id":138},"how-code-gets-shared","How code gets shared",[15,141,142],{},"Two ways code moves in FlowFuse: promote a whole app through environments, or compose an app from shared parts.",[114,144,146],{"icon":145},"i-lucide-arrow-right",[15,147,148,154],{},[20,149,150],{},[54,151,153],{"href":152},"\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F","App delivery methods →"," — whole app or reusable pieces: how a build reaches every place that should run it.",{"title":156,"searchDepth":157,"depth":157,"links":158},"",4,[159,161,162],{"id":27,"depth":160,"text":28},2,{"id":37,"depth":160,"text":38},{"id":138,"depth":160,"text":139},"md","flowfuse",{},true,null,"\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations",{"title":5,"description":6},"application-guide\u002Fflowfuse\u002Ffoundations","JfLTkYoXB_4CCet92q8JV8f7c40NwVaBFagrnNbmX0g",[173,179,183,185,187,192,197,203,208,214,219,225,230,235,241,247,253,258,263,268,272],{"guide":164,"slug":174,"title":175,"navOrder":176,"parent":167,"blurb":177,"path":178},"overview","Overview",1,"The map of the FlowFuse guide — apps, architectures, and a worked example.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":180,"slug":174,"title":175,"navOrder":176,"parent":167,"blurb":181,"path":182},"node-red","The map of the Node-RED guide — the pattern families that turn an app into a clean flow.","\u002Fapplication-guide\u002Fnode-red\u002Foverview\u002F",{"guide":164,"slug":13,"title":5,"navOrder":160,"parent":167,"blurb":6,"path":184},"\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations\u002F",{"guide":180,"slug":13,"title":5,"navOrder":160,"parent":167,"blurb":186,"path":74},"The handful of concepts you need to build with Node-RED, and how they fit together.",{"guide":164,"slug":188,"title":189,"navOrder":190,"parent":167,"blurb":191,"path":152},"app-delivery-methods","App delivery methods",3,"Two different units of code, delivered two ways. Ship the whole app — a complete, versioned project promoted through environments — or publish one reusable piece — a package the whole team installs and upgrades in one place. Pick by what you're shipping: the app, or a part of it.",{"guide":180,"slug":193,"title":194,"navOrder":190,"parent":167,"blurb":195,"path":196},"patterns","Patterns","The moves that turn an architecture into a clean, reusable flow — find the seams and reuse well, then handle data on the right paths.","\u002Fapplication-guide\u002Fnode-red\u002Fpatterns\u002F",{"guide":164,"slug":198,"title":199,"navOrder":200,"parent":188,"blurb":201,"path":202},"hardware-apps","Hardware apps",3.1,"The three shapes a FlowFuse app takes when it runs on a device. Pick by how much varies per site: nothing (Packaged App), a few settings (Configurable App), or you assemble it yourself (Edge Building Block).","\u002Fapplication-guide\u002Fflowfuse\u002Fhardware-apps\u002F",{"guide":180,"slug":204,"title":205,"navOrder":200,"parent":193,"blurb":206,"path":207},"design-patterns","Design patterns","The structural choices you select for a flow: find the seams it breaks into, then reuse each piece at the lightest level that solves it — link in\u002Fout, link call, subflow, or packaged node.","\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F",{"guide":164,"slug":209,"title":210,"navOrder":211,"parent":188,"blurb":212,"path":213},"software-apps","Software apps",3.2,"The three shapes a FlowFuse app takes when it runs on the platform. Pick by what it needs: a headless job (Packaged App), a user-facing app driven by data (Data-Driven App), or a reusable piece other apps embed (Shared Building Block).","\u002Fapplication-guide\u002Fflowfuse\u002Fsoftware-apps\u002F",{"guide":180,"slug":215,"title":216,"navOrder":211,"parent":193,"blurb":217,"path":218},"handling-data","Handling data","Classify each signal by shape, purpose and direction, then pick the methods it needs — separate the paths, pace the flow, hold state in context, and manage config. The methods you select to move a flow's data.","\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F",{"guide":180,"slug":220,"title":221,"navOrder":222,"parent":193,"blurb":223,"path":224},"good-form","Good form",3.3,"A clean flow isn't luck — it's a handful of habits. Wire for reading, lay it out on a grid, decouple UI from logic, catch errors where you can see them, and keep data on a stable contract. Follow these and a flow stays readable, reusable, and out of spaghetti.","\u002Fapplication-guide\u002Fnode-red\u002Fgood-form\u002F",{"guide":164,"slug":226,"title":227,"navOrder":157,"parent":167,"blurb":228,"path":229},"data-plane","Data plane","Before you pick where things run, decide how data is handled. Two stores come built into every FlowFuse server install — the Team Broker and relational Tables — exposed to every instance with nothing extra to stand up. Everything else you bring your own: run it (a time-series DB, an existing database, a model) and expose it to the fleet over Project Link, no inbound ports. This is the data plane the architectures on the next pages all sit on.","\u002Fapplication-guide\u002Fflowfuse\u002Fdata-plane\u002F",{"guide":180,"slug":231,"title":232,"navOrder":157,"parent":167,"blurb":233,"path":234},"worked-examples","Worked examples","Turn an app concept into a Node-RED flow — or a few — leaning on the design patterns and data handling. The method, then the OEE apps end to end.","\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples\u002F",{"guide":180,"slug":236,"title":237,"navOrder":238,"parent":231,"blurb":239,"path":240},"oee-edge-aggregator","OEE - Edge Aggregator",4.1,"The edge app from the OEE use case as a Node-RED flow — a straight-line flow packaged as a subflow and configured per line (its PLC tags, via a config UI and a get-config node), with the data treated as a stream and its counts held in context.","\u002Fapplication-guide\u002Fnode-red\u002Foee-edge-aggregator\u002F",{"guide":180,"slug":242,"title":243,"navOrder":244,"parent":231,"blurb":245,"path":246},"oee-central-dashboard","OEE - Central Dashboard",4.2,"The cloud app from the OEE use case as a Node-RED flow — one link out fanning to two link ins on separate tabs (dashboard and batched history), so the live and history paths stay separate and easy to read.","\u002Fapplication-guide\u002Fnode-red\u002Foee-central-dashboard\u002F",{"guide":164,"slug":248,"title":249,"navOrder":250,"parent":167,"blurb":251,"path":252},"architectures","Architectures",5,"Every FlowFuse deployment is the same building blocks arranged for where it runs — pick the world you're designing for.","\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":164,"slug":254,"title":255,"navOrder":256,"parent":248,"blurb":167,"path":257},"it-architectures","IT architectures",5.1,"\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":164,"slug":259,"title":260,"navOrder":261,"parent":248,"blurb":167,"path":262},"ot-architectures","OT architectures",5.2,"\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":164,"slug":264,"title":265,"navOrder":266,"parent":248,"blurb":167,"path":267},"iiot-architectures","IIoT architectures",5.3,"\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":164,"slug":231,"title":232,"navOrder":269,"parent":167,"blurb":270,"path":271},6,"Start from a use case, break it into apps, and draw the architecture that ties them together — the same method a FlowFuse Proof of Value runs.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-examples\u002F",{"guide":164,"slug":273,"title":274,"navOrder":275,"parent":231,"blurb":276,"path":277},"worked-example","OEE, end to end",6.1,"One use case — OEE across three lines — broken into two apps and two shared services, then drawn out end to end.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-example\u002F",1788279697540]