Skip to main content

Custom nodesets

Companion specifications published by the OPC Foundation ship with the tooling — declare them in namespaces: and they are there. Anything else is your own file: a vendor's nodeset, a supplier's model, a companion spec you are still writing. Those you upload.

Upload

Open the Dependencies panel from the toolbar and choose Upload NodeSet2.xml.

The file is validated, hashed, and stored under your own account. Nothing is shared with anyone else — see Isolation.

Reference it

namespaces: names specs we ship. imports: names everything else:

namespaces:
- di

imports:
- uri: http://acme.example/UA/Base/
alias: acme
filename: acme-base.NodeSet2.xml

objectTypes:
- browseName: PumpControllerType
subtypeOf: acme:PumpType

Once the alias is bound, a vendor type behaves exactly like a standard one: acme:PumpType is no different from di:DeviceType to the rest of the model, and completions offer its members.

The uri is the identity — it is the ModelUri inside the file. filename is a hint used to locate it.

Limits

LimitValue
Largest single file25 MB
Dependencies per model20
Total uploaded per account200 MB

These are deliberately not tier-based; they apply to everyone.

Isolation

Uploading a file to a shared service reasonably invites the question.

  • Your dependency is stored under your partition, addressed by the SHA-256 of its content.
  • The cache is keyed by content hash, never by namespace URI. Two customers can both declare http://acme.example/UA/Base/ with entirely different files and neither can shadow the other. That is the normal case, not a conflict.
  • The only nodesets shared between accounts are published OPC Foundation companion specs, which are read-only and identical for everyone. A companion spec you are still writing is an ordinary private upload.
  • Your own dependencies take precedence over the shared catalogue. If you override a published spec you get a diagnostic saying so — useful when the Foundation later publishes a version newer than your working copy.

Taking it elsewhere

The YAML is portable; the files it imports are not automatically. The Dependencies panel offers Download bundle, which gives you the model plus a deps/ folder holding the nodesets it imports — ready to compile on a machine that has never seen them.

The desktop CLI does the same with opcua-modeler bundle -i model.yaml.