[{"data":1,"prerenderedAt":215},["ShallowReactive",2],{"agmd-flowfuse-architectures":3,"application-guide-nav":113},{"id":4,"title":5,"blurb":6,"body":7,"description":17,"extension":103,"guide":104,"meta":105,"navOrder":106,"navTitle":5,"navigation":107,"parent":108,"path":109,"seo":110,"slug":13,"stem":111,"__hash__":112},"applicationGuideDoc\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures.md","Architectures","Every FlowFuse deployment is the same building blocks arranged for where it runs — pick the world you're designing for.",{"type":8,"value":9,"toc":94},"minimark",[10,14,18,33,44,55,60,63,68,73,76,83],[11,12,5],"h1",{"id":13},"architectures",[15,16,17],"p",{},"Every FlowFuse deployment is the same building blocks — instances, broker, data, edge — arranged for where it runs. Read any diagram as a vertical stack, then pick the world you're designing for.",[19,20,22],"callout",{"icon":21},"i-lucide-arrow-right",[15,23,24,32],{},[25,26,27],"strong",{},[28,29,31],"a",{"href":30},"\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F","OT architectures →"," — Near the equipment — edge deployments with the server in IT or in an OT\u002FDMZ, hardware-saving consolidation, and air-gapped sites.",[19,34,35],{"icon":21},[15,36,37,43],{},[25,38,39],{},[28,40,42],{"href":41},"\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F","IT architectures →"," — Hosting and governing — on-prem, your cloud per-site, hosting choice at scale, enterprise governance, and secure data exposure.",[19,45,46],{"icon":21},[15,47,48,54],{},[25,49,50],{},[28,51,53],{"href":52},"\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F","IIoT architectures →"," — The live data backbone — a Unified Namespace where edge publishes once and many subscribe, across every site.",[56,57,59],"h2",{"id":58},"separating-dev-from-prod","Separating dev from prod",[15,61,62],{},"A modifier for any of the three worlds above. When your development server is a different server from production — dev in IT or the cloud, prod down in OT or behind a tighter network boundary — a GitHub bridge carries the same versioned code across the boundary. (A truly air-gapped site can't pull from GitHub; there, code crosses by offline snapshot import instead.)",[64,65,67],"h3",{"id":66},"github-bridge","GitHub bridge",[15,69,70],{},[25,71,72],{},"Modifier · works across OT, IT & IIoT.",[15,74,75],{},"A pipeline pushes your dev work up to a repo; each site's instance pulls it back down. One versioned source of truth — with review, history and rollback in Git — and dev kept safely off the production deployment servers.",[77,78],"arch-diagram",{":edges":79,":groups":80,":legend":81,":nodes":82},"[{\"from\":\"dev\",\"to\":\"github\",\"label\":\"pipeline push\",\"dashed\":true,\"accent\":\"red\"},{\"from\":\"github\",\"to\":\"siteA\",\"label\":\"pull\",\"dashed\":true,\"accent\":\"red\"},{\"from\":\"github\",\"to\":\"siteB\",\"dashed\":true,\"accent\":\"red\"},{\"from\":\"github\",\"to\":\"siteC\",\"dashed\":true,\"accent\":\"red\"}]","[{\"label\":\"Dev · one build\",\"nodes\":[\"dev\"]},{\"label\":\"Sites · prod instances (OT & IT)\",\"nodes\":[\"siteA\",\"siteB\",\"siteC\"]}]","[{\"line\":\"red\",\"dashed\":true,\"label\":\"push \u002F pull\"}]","[{\"id\":\"dev\",\"label\":\"Dev instance\",\"sub\":\"develop once\",\"accent\":\"indigo\",\"col\":2,\"row\":1},{\"id\":\"github\",\"label\":\"GitHub\",\"sub\":\"versioned source of truth\",\"accent\":\"slate\",\"col\":2,\"row\":2},{\"id\":\"siteA\",\"label\":\"Instance\",\"sub\":\"Site A · OT\",\"accent\":\"indigo\",\"col\":1,\"row\":3},{\"id\":\"siteB\",\"label\":\"Instance\",\"sub\":\"Site B · IT\",\"accent\":\"indigo\",\"col\":2,\"row\":3},{\"id\":\"siteC\",\"label\":\"Instance\",\"sub\":\"Site C · OT\",\"accent\":\"indigo\",\"col\":3,\"row\":3}]",[19,84,85],{"icon":21},[15,86,87,93],{},[25,88,89],{},[28,90,92],{"href":91},"\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F","App delivery methods →"," — Once code is on a server, it ships via snapshots or subflows.",{"title":95,"searchDepth":96,"depth":96,"links":97},"",4,[98],{"id":58,"depth":99,"text":59,"children":100},2,[101],{"id":66,"depth":102,"text":67},3,"md","flowfuse",{},5,true,null,"\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures",{"title":5,"description":17},"application-guide\u002Fflowfuse\u002Farchitectures","YyHre383bjqS2XFkX3g1oJSzpUZlwxdrv5HW2wMIawg",[114,120,124,129,132,136,141,147,152,158,163,169,174,179,185,191,193,197,201,205,209],{"guide":104,"slug":115,"title":116,"navOrder":117,"parent":108,"blurb":118,"path":119},"overview","Overview",1,"The map of the FlowFuse guide — apps, architectures, and a worked example.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":121,"slug":115,"title":116,"navOrder":117,"parent":108,"blurb":122,"path":123},"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":104,"slug":125,"title":126,"navOrder":99,"parent":108,"blurb":127,"path":128},"foundations","Foundations","The foundation to build on: what FlowFuse is, its core pieces, and how code is shared across teams.","\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations\u002F",{"guide":121,"slug":125,"title":126,"navOrder":99,"parent":108,"blurb":130,"path":131},"The handful of concepts you need to build with Node-RED, and how they fit together.","\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F",{"guide":104,"slug":133,"title":134,"navOrder":102,"parent":108,"blurb":135,"path":91},"app-delivery-methods","App delivery methods","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":121,"slug":137,"title":138,"navOrder":102,"parent":108,"blurb":139,"path":140},"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":104,"slug":142,"title":143,"navOrder":144,"parent":133,"blurb":145,"path":146},"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":121,"slug":148,"title":149,"navOrder":144,"parent":137,"blurb":150,"path":151},"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":104,"slug":153,"title":154,"navOrder":155,"parent":133,"blurb":156,"path":157},"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":121,"slug":159,"title":160,"navOrder":155,"parent":137,"blurb":161,"path":162},"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":121,"slug":164,"title":165,"navOrder":166,"parent":137,"blurb":167,"path":168},"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":104,"slug":170,"title":171,"navOrder":96,"parent":108,"blurb":172,"path":173},"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":121,"slug":175,"title":176,"navOrder":96,"parent":108,"blurb":177,"path":178},"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":121,"slug":180,"title":181,"navOrder":182,"parent":175,"blurb":183,"path":184},"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":121,"slug":186,"title":187,"navOrder":188,"parent":175,"blurb":189,"path":190},"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":104,"slug":13,"title":5,"navOrder":106,"parent":108,"blurb":6,"path":192},"\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":104,"slug":194,"title":195,"navOrder":196,"parent":13,"blurb":108,"path":41},"it-architectures","IT architectures",5.1,{"guide":104,"slug":198,"title":199,"navOrder":200,"parent":13,"blurb":108,"path":30},"ot-architectures","OT architectures",5.2,{"guide":104,"slug":202,"title":203,"navOrder":204,"parent":13,"blurb":108,"path":52},"iiot-architectures","IIoT architectures",5.3,{"guide":104,"slug":175,"title":176,"navOrder":206,"parent":108,"blurb":207,"path":208},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":104,"slug":210,"title":211,"navOrder":212,"parent":175,"blurb":213,"path":214},"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",1787843651689]