ArchitecturePart 1 of 6Jul 14, 2026

The Unified Namespace, Honestly

What it is, what it actually solves, and the software patterns underneath it

Strip the manufacturing vocabulary away and a UNS is a pub/sub event bus for the plant floor. A technologist's read on what it solves, where it stops, and why a message broker is transport — not a system of record.

By Ishan Bhanuka, CTO7 min read

Walk into most factories that have “gone digital” and ask to see the integration diagram. You’ll get a photograph of a whiteboard with thirty arrows on it. The PLC talks to the SCADA. The SCADA talks to the historian. The historian feeds a reporting database. The MES pulls from the historian and pushes to the ERP. Someone wired a Python script from the ERP to a Power BI dashboard two years ago, and the person who wrote it has left.

Every one of those arrows is a bespoke, point-to-point integration. Custom protocol on one end, custom mapping on the other, a brittle handoff in the middle. It’s the same failure mode any backend engineer has watched a microservices estate fall into without a message bus: N systems, N² connections, and every new consumer means touching every producer. Eight systems is twenty-eight integrations. Add a ninth and you owe eight more.

If that made you wince, you already understand the unified namespace. Because a UNS is the OT world rediscovering the message broker.

Point-to-point integrations versus a single message broker Point-to-point Through a broker ERPMESDashboardHistorianSCADAPLC UNS ERPMESDashboardHistorianSCADAPLC 15 brittle links 6 links
Six systems wired directly need fifteen brittle links, and every new consumer means touching every producer. Publish to a broker instead and it collapses to six — add a system and you just subscribe.

What a UNS actually is

Strip the manufacturing vocabulary away and a unified namespace is a pub/sub event bus for the plant floor.

There’s a broker in the middle — almost always MQTT — and everything on the plant publishes its current state to it instead of wiring directly to consumers. A pump publishes its pressure. A line publishes its running state. The MES publishes the active work order. Anyone who wants that data subscribes to the broker. Nobody talks to anybody directly.

Two design choices make it more than “MQTT with some topics”:

  • A single hierarchical namespace. Topics follow the physical structure of the business — enterprise/site/area/line/cell/asset/signal. It’s ISA-95 as a naming convention, and it’s the same idea as a filesystem path, a REST resource tree, or a DNS name: a hierarchy that means something, so any client can navigate it without a decoder ring.
  • Report by exception, current state on the broker. Publishers emit only when a value changes — usually via Sparkplug B, which adds a schema envelope on top of raw MQTT: birth/death certificates, declared data types, sequence numbers. The broker retains the latest value of everything. Subscribe to a topic and you get the current state of the plant immediately, then every change after it.
A unified namespace topic as a hierarchical path enterprise dublin-site packaging line2 filler PT_004 4.2 bar
enterprise/site/area/line/asset/signal — ISA-95 as a naming convention, readable like a filesystem path. But a path is a hierarchy, not a graph: it knows the transmitter sits under the filler, not what the filler feeds.

That’s the whole idea. A single, real-time, hierarchically-named broadcast of what is true on the plant floor right now.


What it solves

The win is exactly the win a message bus gives you in software: decoupling.

Producers stop knowing about consumers. The pump publishes its pressure once and doesn’t care whether that’s read by the historian, a dashboard, a maintenance model, or nothing at all. Add a new consumer — a fresh analytics tool, an AI agent, a second dashboard — and you subscribe. You touch zero producers. The N² spaghetti collapses to N connections into a hub.

You also get a single source of truth for current state. No more “the SCADA says the line is up but the MES says it’s down” — one topic, one value, one broadcast everyone reads. Edge-driven, real-time, sub-second.

For the problem of moving data around a factory, this is a genuine, hard-won architectural improvement. The industry is right to be excited about it.


Where it fits

A UNS is a data-movement layer. It sits above the OT floor — PLCs, SCADA, sensors — and feeds everything above it: historians, MES, analytics, cloud, dashboards, models. It’s the transport. The nervous system carrying the signals.

Where a unified namespace sits: a transport layer between the OT floor and its consumers Consumers historian · MES · analytics · cloud · dashboards · AI agents Unified Namespace MQTT broker — transport & current state, not a system of record OT floor PLCs · SCADA · sensors
A UNS is a data-movement layer: it carries signals up from the plant floor to everything that consumes them, but nothing is remembered or understood inside it. A message broker is transport, not a system of record.

What it is not is a place where anything is remembered or understood. And this is where a technologist’s instincts should start twitching, because a message broker is transport, not a system of record. Kafka is not your database. The event bus is not your domain model. We learned this the hard way in software. Manufacturing is, understandably, still learning it — because the UNS is so useful for movement that it’s tempting to treat it as the destination.

It isn’t. Here’s why.


The specific example: a quality excursion on Line 2

It’s a Tuesday. A quality check flags a defect on Line 2’s filler. Someone has to answer why, and fast.

The UNS is brilliant for the first thirty seconds. Subscribe to .../line2/filler/PT_004 and you have the live pressure on the filler’s pressure transmitter, instantly, alongside the current state of every asset on the line. No integration project, no ticket, no waiting. That’s the pub/sub payoff, exactly as advertised.

Then the actual investigation starts, and the UNS runs out of road:

  • “What was the pressure doing twenty minutes ago?” The broker holds current state, not history. It’s a last-value cache, not an event store — there’s no log to replay. That’s what the historian is for, and now you’re querying a second system.
  • “What feeds this filler, and what does it feed?” The topic string enterprise/site/area/line2/filler encodes a hierarchy, not a graph. It knows the filler sits under Line 2. It does not know the filler feeds the capper downstream, or that they share a glycol loop. There are no relationships beyond the path.
  • “What’s the SOP for this seal?” Not in the UNS. Documents aren’t signals.
  • “Didn’t someone flag this seal last week?” Definitely not in the UNS. The shift-handover note where an operator wrote “seal sounded off again” is the kind of tribal knowledge that lives in a chat thread, and a message broker has nowhere to put it.
Of five root-cause questions, the unified namespace answers only one Live pressure on PT_004, right now UNS answers this What was it doing 20 minutes ago? needs the historian What feeds this filler, and what does it feed? needs a graph / model What’s the SOP for this seal? needs documents Didn’t someone flag this last week? needs tribal knowledge
The pub/sub payoff is real for the first question — live state, instantly. The other four need history, a typed model, documents, and human context: none of which a transport layer was built to hold.

Five questions. The UNS answered one. The rest need history, a real domain model with typed relationships, documents, and human context — none of which a transport layer was ever designed to hold. It’s a nervous system without a memory or a model.


The world isn’t a tree

Here’s the part that looks trivial on a slide and turns into months of meetings: the namespace is a strict hierarchy, and a real plant isn’t one. enterprise/site/area/line/cell/asset is a tree — every asset has exactly one parent. That holds right up until the first resource that’s shared, because a tree cannot say “belongs to many.”

A shared resource has no single parent in the hierarchy Plant Line 1 Line 2 Line 3 Shared utility one glycol loop · feeds every line hierarchy (one parent) shared (belongs to many)
The tree gives every asset one parent. A shared utility — a glycol loop, a compressor house, a CIP skid — feeds many lines at once, so its real dependencies (orange) cut clean across the hierarchy. Model the plant as a tree and those edges have nowhere to live.

Take the glycol loop from earlier. One refrigeration skid chills the jacket on Line 2’s filler and Line 4’s. Where does it live — under line2, under line4, or under a utilities branch where the fact that it’s load-bearing for two production lines quietly vanishes? Every option is wrong in a different way. And it’s everywhere once you look:

  • Shared utilities. One compressor house feeding every line; a boiler, a DI-water system, an electrical feeder that spans areas. Physically upstream of everything, structurally a child of nothing.
  • A CIP skid cleaning a dozen tanks across the plant on a rotating schedule — time-multiplexed ownership that no fixed path can express.
  • A batch that flows reactor → filter → dryer → packaging, crossing the very physical units the tree keeps in separate branches. The equipment hierarchy (ISA-95) and the batch genealogy (ISA-88) are two different graphs stapled to the same steel.
  • A mold or die whose history follows the tool as it moves between presses — not the press it happens to sit in this week.

The real topology is a graph: many-to-many, full of lateral dependencies and things that move. Force it into one tree and you’re choosing a single spanning path and dropping every edge that doesn’t fit — either duplicating a resource under several branches (congratulations, you now own a sync problem) or crowning one arbitrary parent and losing the rest. It’s the lesson software keeps relearning: filesystems, org charts, category trees — every strict hierarchy eventually meets the thing that belongs in two places at once.


What it costs to run one

None of this is free, and the marketing rarely mentions the bill. A UNS is production infrastructure, and standing one up runs into the same walls any distributed system does.

  • Modeling the namespace is the actual project. “Just publish to enterprise/site/area/…” hides the hard part: someone has to design that hierarchy, get every plant to agree on it, and live with it for a decade. It’s schema design with organizational politics attached — rename a level two years in and every subscriber breaks.
  • Getting data onto the broker is real integration work. The pump doesn’t speak MQTT. Between it and the namespace sit edge gateways and protocol drivers — OPC-UA, Modbus, proprietary PLC dialects — plus report-by-exception tuning so you publish changes, not a firehose. The N² spaghetti doesn’t vanish; it moves to the edge.
  • You now operate a broker. High availability, TLS, auth and ACLs, the OT/IT security boundary, and — on Sparkplug — primary-host and birth/death state edge cases. That’s Kafka-grade ops landing on a team that may never have run a message bus.
  • It still isn’t memory or a model. Even done perfectly, everything from the last section — history, relationships, documents, human context — is still somebody else’s problem.

None of these are reasons not to build a UNS. They’re the reasons it’s a project, not a switch you flip — and the reason the payoff only really lands once something on top of it turns those signals into answers.


The one line

A unified namespace is the right way to move data around a plant, and the wrong thing to mistake for the place data lives. The memory, the model, and the provenance it lacks are exactly what a context layer adds on top — treating the UNS as a first-class source, not a rival.

ContextWeaver builds the Manufacturing Context Layer: a governed, standards-based model of a plant — its assets, its history, its documents, and the tribal knowledge in between — that AI agents can actually reason over. If your UNS moves the data but nothing on the other end understands it, talk to us.

Your plant moves the data. What understands it?

ContextWeaver builds the Manufacturing Context Layer: a governed, standards-based model of your plant — its assets, its history, its documents, and the tribal knowledge in between — that AI agents can actually reason over. If your UNS moves the data but nothing on the other end understands it, talk to us.