Skip to main content

Documentation

OPC UA Modeler

Write OPC UA information models and companion specifications in YAML, and compile them to standard NodeSet2.xml. These pages cover both ways of running it: online in your browser, or on your own machines.

Not sure which one fits you? Compare the two →

How do you use OPC UA Modeler?

Online · SaaS

In your browser

Nothing to install. Edit with live validation and diagrams, generate with the AI assistant, share with your team.

Open the online editor ↗Sign in or create an account

On premise

On your own machines

Command-line compiler, VS Code extension and MCP server for AI agents. Your models stay on your network and build in your own git repository and CI.

Get started locally →Installs with npm

What a model looks like

This YAML compiles to the NodeSet2.xml on the right. NodeIds, aliases and namespace indexes are assigned for you. Read a full example →

TemperatureSensor.model.yaml
namespaceUri: http://sterfive.com/UA/TemperatureSensor
version: 1.0.0
namespaces:
  - di
objectTypes:
  - browseName: TemperatureSensorType
    subtypeOf: di:DeviceType
    components:
      - browseName: di:ParameterSet
        components:
          - browseName: Temperature
            dataType: ua:Double
          - browseName: SetPoint
            dataType: ua:Double
            accessLevel: CurrentRead | CurrentWrite
TemperatureSensor.NodeSet2.xml (excerpt)
<UAObjectType NodeId="ns=1;i=1000"
    BrowseName="1:TemperatureSensorType">
  <DisplayName>TemperatureSensorType</DisplayName>
  <References>
    <Reference ReferenceType="HasComponent">ns=1;i=1001</Reference>
    <Reference ReferenceType="HasSubtype"
        IsForward="false">ns=2;i=1002</Reference>
  </References>
</UAObjectType>
<UAObject NodeId="ns=1;i=1001" BrowseName="2:ParameterSet"
    ParentNodeId="ns=1;i=1000">…</UAObject>
<UAVariable NodeId="ns=1;i=1002" BrowseName="1:Temperature"
    ParentNodeId="ns=1;i=1001" DataType="Double">…</UAVariable>
<UAVariable NodeId="ns=1;i=1003" BrowseName="1:SetPoint"
    ParentNodeId="ns=1;i=1001" DataType="Double">…</UAVariable>