[{"data":1,"prerenderedAt":301},["ShallowReactive",2],{"application-guide-nav":3,"application-guide-flowfuse-data-plane":101},[4,11,15,21,24,30,35,41,46,52,57,63,68,74,79,85,91,97],{"guide":5,"slug":6,"title":7,"navOrder":8,"blurb":9,"path":10},"flowfuse","overview","Overview",1,"Turn an app idea into FlowFuse pieces you can name and say in one sentence.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":12,"slug":6,"title":7,"navOrder":8,"blurb":13,"path":14},"node-red","Turn an architecture sentence into a clean flow shape you can read at a glance.","\u002Fapplication-guide\u002Fnode-red\u002Foverview\u002F",{"guide":5,"slug":16,"title":17,"navOrder":18,"blurb":19,"path":20},"foundations","Foundations",2,"The foundation to build on: what FlowFuse is, its core pieces, and how code is shared across teams.","\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations\u002F",{"guide":12,"slug":16,"title":17,"navOrder":18,"blurb":22,"path":23},"The handful of concepts you need to build with Node-RED, and how they fit together.","\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F",{"guide":5,"slug":25,"title":26,"navOrder":27,"blurb":28,"path":29},"app-delivery-methods","App delivery methods",3,"Two different units of code, delivered two ways: ship the whole app, or publish one reusable piece.","\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F",{"guide":12,"slug":31,"title":32,"navOrder":27,"blurb":33,"path":34},"flow-shape","Flow shape","Turn an architecture sentence into a flow you can read at a glance.","\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F",{"guide":5,"slug":36,"title":37,"navOrder":38,"blurb":39,"path":40},"hardware-apps","Hardware apps",4,"The three shapes a FlowFuse app takes when it runs on a device.","\u002Fapplication-guide\u002Fflowfuse\u002Fhardware-apps\u002F",{"guide":12,"slug":42,"title":43,"navOrder":38,"blurb":44,"path":45},"design-patterns","Design patterns","The moves that turn a flow into something you can reuse, test and hand off.","\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F",{"guide":5,"slug":47,"title":48,"navOrder":49,"blurb":50,"path":51},"software-apps","Software apps",5,"The three shapes a FlowFuse app takes when it runs on the platform.","\u002Fapplication-guide\u002Fflowfuse\u002Fsoftware-apps\u002F",{"guide":12,"slug":53,"title":54,"navOrder":49,"blurb":55,"path":56},"handling-data","Handling data","Sort data by what it is for before you tune anything.","\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F",{"guide":5,"slug":58,"title":59,"navOrder":60,"blurb":61,"path":62},"data-plane","Data plane",6,"Before you pick where things run, decide how data is handled.","\u002Fapplication-guide\u002Fflowfuse\u002Fdata-plane\u002F",{"guide":12,"slug":64,"title":65,"navOrder":60,"blurb":66,"path":67},"operating-flows","Operating flows","Four operational habits that keep a flow running when the real world pushes back.","\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F",{"guide":5,"slug":69,"title":70,"navOrder":71,"blurb":72,"path":73},"architectures","Architectures",7,"The same building blocks, arranged for where they run.","\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":12,"slug":75,"title":76,"navOrder":71,"blurb":77,"path":78},"worked-example","Worked example","The shape rules and patterns applied end to end.","\u002Fapplication-guide\u002Fnode-red\u002Fworked-example\u002F",{"guide":5,"slug":80,"title":81,"navOrder":82,"blurb":83,"path":84},"it-architectures","IT architectures",8,"Hosting the platform and serving the wider organisation.","\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":5,"slug":86,"title":87,"navOrder":88,"blurb":89,"path":90},"ot-architectures","OT architectures",9,"How FlowFuse deploys in operational-technology environments, near the equipment.","\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":5,"slug":92,"title":93,"navOrder":94,"blurb":95,"path":96},"iiot-architectures","IIoT architectures",10,"Distributed edge nodes, each doing one small job, feeding one central system.","\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":5,"slug":75,"title":76,"navOrder":98,"blurb":99,"path":100},11,"OEE, end to end — two packages, two connections.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-example\u002F",{"id":102,"title":59,"blocks":103,"blurb":61,"extension":297,"guide":5,"meta":298,"navOrder":60,"slug":58,"stem":299,"__hash__":300},"applicationGuide\u002Fapplication-guide\u002Fflowfuse\u002F06-data-plane.yml",[104,108,284,289],{"type":105,"kicker":106,"body":107},"prose","Data plane — start here","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 community over Project Link, no inbound ports. This is the data plane the architectures on the next pages all sit on.",{"type":109,"panels":110},"tabs",[111,154,200,246],{"label":112,"kicker":113,"kickerNote":114,"diagram":115,"summary":140,"useWhen":141,"how":142,"lists":143,"callout":151},"Relational","Built in","Ships with every FlowFuse server install; exposed to every instance.",{"lanes":116,"legend":137},[117,128,130],{"label":118,"tone":119,"nodes":120},"Instances on the team","neutral",[121,124,126],{"title":122,"sub":123},"Instance","App A",{"title":122,"sub":125},"App B",{"title":122,"sub":127},"App C",{"link":129},"query & update",{"label":131,"tone":132,"nodes":133},"Built into every FlowFuse server install","it",[134],{"title":135,"sub":136,"tone":132},"FlowFuse Tables","relational",[138],{"label":139,"tone":132},"Authenticated · every instance reaches it","A place for records that relate to each other — assets, config, users, orders — that you look up, join and update in place. It's FlowFuse Tables, built into every FlowFuse server install and exposed to every instance on the team.","The data has structure and relationships, and apps across the team should read and write the same store.","FlowFuse Tables (managed PostgreSQL) via the Query node; because it ships with the server, any instance on the team reaches it natively over an authenticated connection. External systems can read it too.",[144],{"heading":145,"items":146},"In FlowFuse",[147,148,149,150],"FlowFuse Tables — managed PostgreSQL, built into every FlowFuse install","Query node — read, join and update from any instance","Exposed to the whole team automatically — nothing to stand up","Also any external Postgres — same node",{"tone":152,"text":153},"watch","Not for high-rate timestamped streams; use the time-series target for those.",{"label":155,"kicker":113,"kickerNote":156,"diagram":157,"summary":188,"useWhen":189,"how":190,"lists":191,"callout":198},"Broker \u002F UNS","Ships with every FlowFuse server install; publish once, many subscribe.",{"lanes":158,"legend":185},[159,164,166,173,175],{"label":160,"tone":119,"nodes":161},"Publisher",[162],{"title":122,"sub":163},"publishes",{"link":165},"publish",{"label":167,"tone":168,"nodes":169},"Built into every FlowFuse install","broker",[170],{"title":171,"sub":172,"tone":168},"Team Broker","built in · UNS",{"link":174},"subscribe",{"label":176,"tone":119,"nodes":177},"Subscribers",[178,181,183],{"title":179,"sub":180},"Dashboard","subscribes",{"title":182,"sub":180},"Historian",{"title":184,"sub":180},"Other app",[186],{"label":187,"tone":168},"MQTT · publish once, many subscribe","A real-time bus, not storage: one instance publishes to a topic, any number subscribe. It's the Team Broker, built into every FlowFuse server install — the backbone of a Unified Namespace.","Live data needs to reach many consumers at once, decoupled, as it happens.","The built-in Team Broker with publish \u002F subscribe nodes; because it ships with the server, every instance on the team can publish and subscribe over MQTT. Pair with Tables when you also need to keep history.",[192],{"heading":145,"items":193},[194,195,196,197],"Team Broker — built into every FlowFuse install, no separate product to stand up","publish \u002F subscribe nodes","Topic structure — your Unified Namespace","Exposed to the whole team; pair with Tables for history",{"tone":152,"text":199},"It carries data, it doesn't store it; write to Tables too if you need history.",{"label":201,"kicker":202,"kickerNote":203,"diagram":204,"summary":234,"useWhen":235,"how":236,"lists":237,"callout":244},"Time-series","Bring your own","External today; FlowFuse has no built-in time-series DB.",{"lanes":205,"legend":230},[206,213,215,221,223],{"label":207,"tone":119,"nodes":208},"External · where the readings live",[209],{"title":210,"sub":211,"tone":212},"Time-series DB","Timescale \u002F QuestDB","muted",{"link":214},"Postgres wire",{"label":216,"tone":132,"nodes":217},"Fronted by the platform",[218],{"title":219,"sub":220,"tone":132},"Hosted Instance","connects & fronts it",{"link":222},"Project Link",{"label":224,"tone":119,"nodes":225},"Instances that query it",[226,228,229],{"title":122,"sub":227},"query by time",{"title":122,"sub":227},{"title":122,"sub":227},[231,232],{"label":214,"tone":212},{"label":233,"tone":132},"Project Link · target is a Hosted Instance","A store built for a steady stream of timestamped readings — sensor data, telemetry, trends — written fast and queried by time. FlowFuse has no built-in time-series database, so you run one and expose it to the fleet.","The data is a continuous stream of timestamped values, written at high rate and queried by time window.","Run TimescaleDB, QuestDB or InfluxDB where you want. A Hosted Instance connects to it — Timescale and Quest speak the Postgres wire, so the Query node connects exactly like Tables — and fronts it; other instances reach it over Project Link, which always calls a Hosted Instance, with no inbound ports.",[238],{"heading":145,"items":239},[240,241,242,243],"External — FlowFuse has no built-in time-series DB today","TimescaleDB \u002F QuestDB — speak the Postgres wire; Query node connects like Tables","Hosted Instance — connects to it and fronts it for the fleet","Project Link — reaches it with no inbound ports (targets a Hosted Instance)",{"tone":152,"text":245},"Not part of FlowFuse; you run and expose it. Pair with the Team Broker for live + history.",{"label":202,"kicker":202,"kickerNote":247,"diagram":248,"summary":271,"useWhen":272,"how":273,"lists":274,"callout":281},"Expose any other store or service to the fleet over Project Link.",{"lanes":249,"legend":268},[250,256,258,261,262],{"label":251,"tone":119,"nodes":252},"Wherever it lives · you run it",[253],{"title":254,"sub":255,"tone":212},"Your store \u002F service","SQL · ML · gateway",{"link":257},"connects",{"label":216,"tone":132,"nodes":259},[260],{"title":219,"sub":220,"tone":132},{"link":222},{"label":224,"tone":119,"nodes":263},[264,266,267],{"title":122,"sub":265},"queries it",{"title":122,"sub":265},{"title":122,"sub":265},[269,270],{"label":257,"tone":212},{"label":233,"tone":132},"Any other store or service FlowFuse doesn't provide — an existing SQL database, an ML model, a site gateway. You run it where it already lives and expose it to the community of managed instances over Project Link, with no inbound ports.","You need to reach a store or service that isn't built in and isn't a time-series DB — an existing database, a model, a gateway.","A Hosted Instance connects to the store or service and fronts it; other instances reach it over Project Link — which always targets a Hosted Instance — as a secure API \u002F MCP endpoint, with no inbound ports and no copy into a warehouse.",[275],{"heading":145,"items":276},[277,278,279,280],"Hosted Instance — connects to the store \u002F service and fronts it","Project Link — calls a Hosted Instance (only Hosted Instances are callable targets)","Any SQL database, ML model or gateway","Exposed as a secure API \u002F MCP endpoint, no inbound ports",{"tone":282,"text":283},"good","Keeping data and services where they already live and exposing them securely to the fleet. FlowFuse doesn't care what the target is.",{"type":285,"body":286,"link":287},"note","Calling one external endpoint from a flow — an HTTP request or webhook to one system — is a Node-RED decision, not a platform data target.",{"label":288,"to":14},"Node-RED guide →",{"type":290,"columns":8,"items":291},"linkCards",[292],{"title":293,"body":294,"link":295},"Now pick where it runs","The architectures all sit on this data plane — choose OT, IT or IIoT for where your instances live.",{"label":296,"to":73},"Architectures →","yml",{},"application-guide\u002Fflowfuse\u002F06-data-plane","NbXDJ575oIS3DHGoC5yTRhn-Y7HFjRisgzLIaN0c9ZU",1786132520467]