Getting Started
Last updated
Last updated
60 seconds — that's all it takes to launch UMH-Core.
No kubectl, no Kubernetes setup, just a single Docker container. Anything that runs Docker works — from your MacBook terminal to enterprise edge boxes.
Minimum:
2 vCPU
4 GB RAM
40 GB SSD
See also Sizing Guide for more information
Sign up at and create an Instance.
Copy the autogenerated one-liner docker run command (it already embeds your API token).
Run that script on the target machine.
From the Console you can :
Control - start, stop, edit and version control
Monitor - get access to state (active, idle, degraded, degraded_connection, etc.), logs and metrics
Browse - watch real-time tags in the Topic Browser.
+ compliance features such as SSO, RBAC, 2FA, audit trails and more.
Create a working directory
Write a minimal config.yaml
Run the container
Note for UMH Classic users: the former Helm/Kubernetes installation is no longer required. UMH Core ships as a single container; Kubernetes is purely optional if you need scaling or HA.
Watch it work
Open the Topic Browser in the console; you should see random_int
under plant-A.line-4.machine-7._raw.random_int
SELinux volume permissions
On RHEL, Rocky, or other SELinux-enabled systems, append :z
to the volume mount so Docker can relabel the directory:
If you omit this, you might see chmod: /data/config.yaml: no such file or directory
and the container fails to start.
TLS interception
If your corporate network intercepts TLS traffic, follow the steps in Corporate Firewalls to add your CA certificate or, as a last resort, set allowInsecureTLS: true
in config.yaml
.
The example above shows:
protocolConverter:
- Creates a Bridge (UI terminology) for device connectivity
tag_processor
🚧 - Adds UNS metadata for proper topic construction (will be updated in next release to align with new data model)
Location hierarchy - Combines agent.location
+ protocolConverter.location
for hierarchical paths (supports ISA-95, KKS, or custom naming)
Data contracts - _raw
is the simplest contract for unprocessed data
UMH Classic users: See for complete migration instructions including data contract changes and configuration updates.
Add a real producer – point an OPC UA input at your PLC and let the tag_processor
contextualize your data. See 🚧 for examples.
Add a consumer – create a second protocol converter that reads from umh.v1.plant-A.lineA.machine-7._raw.random_int
and writes to MQTT or TimescaleDB. See 🚧 for patterns.
Structure your data – move beyond _raw
contracts to explicit 🚧 for enterprise-scale analytics.
Scale your deployment – follow the guides for sizing, security, and monitoring.
For complete configuration syntax, see .
- Understand the messaging architecture
- How UNS addresses data
- Message structure standards
- Core UNS principles
- Architectural comparison
- Real-world connectivity example
- UMH's architectural philosophy
- Complete protocol and processor reference