Unified Namespace
The Unified Namespace (UNS) is MACHHUB’s single, hierarchical view of everything happening in a domain. Instead of scattering signals across disconnected systems, the UNS arranges them into one tree — and every leaf in that tree is a live Tag delivered over MQTT.
The tree: Namespace → Folders → Tags
Section titled “The tree: Namespace → Folders → Tags”A UNS is a tree of levels. Each level has a name and may contain child levels. A level is either a Folder (a grouping node) or a Tag (a leaf that carries a value):
flowchart TB NS["Namespace (root)"] NS --> Plant["Plant1 (folder)"] Plant --> LineA["LineA (folder)"] Plant --> LineB["LineB (folder)"] LineA --> Temp["Temperature (tag)"] LineA --> Speed["Speed (tag)"] LineB --> State["State (tag)"] classDef tag fill:#1f6feb22,stroke:#1f6feb; class Temp,Speed,State tag
Folders and tags share the same shape — a level differs only by whether it is marked as a tag. Each level has a name and description, an optional Historize setting, and its child folders and tags. A Tag also exposes its current value.
Import / Export works on the tree structure, not values: Export saves a folder/tag subtree (the shape, without any tag data), and Import re-creates that structure under another namespace or folder.
Tags are MQTT topics
Section titled “Tags are MQTT topics”A Tag’s position in the tree is its MQTT topic. The path from the root down to
the leaf, joined with /, is the topic that devices, the SDK, flows, and the console
publish and subscribe to. The tree above yields topics such as:
Plant1/LineA/TemperaturePlant1/LineA/SpeedPlant1/LineB/StateBecause tags are plain MQTT topics, anything that speaks MQTT can read or write them. The realtime delivery of these topics is covered in Realtime & MQTT.
Mirroring a tag upstream
Section titled “Mirroring a tag upstream”A tag’s value can be relayed to another MACHHUB instance. Mirroring is configured per namespace through Upstreams: you bind a branch of the UNS to a remote MACHHUB and the tags under it mirror together — there is no per-tag rule.
flowchart LR
Tag["Tag\nPlant1/LineA/Temperature"]
Tag -- "historize" --> Hist[("Historian")]
Tag -- "subscribe" --> App["SDK app / Console"]
Tag -- "via namespace binding" --> Up["Upstream MACHHUB"]
Sharing a namespace across domains
Section titled “Sharing a namespace across domains”Namespace sharing lets you grant another domain access to part of your domain’s UNS. You share access to your namespace for another domain, so that domain can read and use your tags without owning them — useful when one Application needs live signals that live in a different domain.
flowchart LR A["Domain A\nPlant1/LineA/Temperature"] -- "share namespace for" --> B["Domain B"] B -- "reads shared tags" --> A
Historizing a tag
Section titled “Historizing a tag”Any tag can be recorded to the Historian by enabling its
Historize block (on-change event or sampled timeseries, with a sampling time
and retention period). The UNS is where you turn historization on; the Historian
concept page covers how the data is stored and queried.
Working with the UNS
Section titled “Working with the UNS”- In the console, the UNS is the namespace editor where you build the tree and toggle historization.
- From the SDK, you read and write tag values by topic. See SDK Tags and SDK Historian.
Continue with Realtime & MQTT to see how tag values flow, or Upstreams to bridge them to another MACHHUB instance.