Tool · Modelling
opcua-modeler
| Vendor | FreeOpcUa community project |
|---|---|
| Cost | Open source |
| Platforms | Linux, Windows, macOS (Python with Qt) |
| Type | Modelling |
opcua-modeler is the FreeOpcUa project's Python nodeset editor. It edits an address space through the asyncua stack and exports NodeSet2 XML, which makes it the open-source option when you need to author or fix a model on Linux and cannot use a commercial Windows modeller.
What you actually use it for
- Authoring a small or medium information model on Linux with no commercial licence involved.
- Editing or repairing an existing NodeSet2 file when hand-editing the XML is error-prone.
- Adding a handful of types or instances to a model produced elsewhere, then re-exporting.
- Teaching modelling concepts where every participant must be able to install the tool themselves.
- Working in a Python-centric toolchain where asyncua already loads the resulting nodeset.
Walkthrough
- Install into a virtual environmentIt is a Python and Qt application on top of asyncua. Use its own virtual environment, and check the project repository for the Python version and Qt binding the current release expects before you install.
- Create the model and declare its namespace URISet the namespace URI first. Everything you create belongs to it, and downstream configuration should reference that URI rather than whatever index a server later assigns.
- Import the nodesets you build onImport base and companion nodesets in dependency order before creating your own types. Unresolved references at export time almost always mean a missing or wrongly ordered import.
- Create types before instancesDefine the ObjectType and its components with modelling rules, then instantiate. Building instances first produces a model that looks right in a browser and carries no reusable semantics.
- Export NodeSet2 and load it in a real serverExport the file and load it into a server, for example an asyncua server or any stack with a nodeset importer, then browse it with an independent client. That round trip is the only real validation this tool gives you.
- Keep the nodeset in version controlThe exported XML is the artefact that matters. Commit it, review changes as diffs, and treat the tool as an editor over a versioned file rather than as the place your model lives.
What it will not do
- Community-maintained with modest activity; check its current state before depending on it for a delivery.
- No SDK code generation and no vendor-specific export such as a TIA Portal server interface.
- Qt and Python dependencies are the usual install obstacle on minimal or locked-down systems.
- Weaker handling of very large nodesets and of complex structure definitions than the commercial modellers or the model compiler.
- It does not check conformance to a companion specification for you.
Alternatives
| Instead of this | When |
|---|---|
| ua-modelcompiler | For a scriptable, CI-friendly path from model source to compiled nodeset, and for compiling nodeset dependencies properly. |
| uamodeler | When a commercial licence is available and you want a more capable graphical modeller with code generation. |
| uanodesetwebviewer | When you only need to read and review a nodeset rather than edit it. |
Verify before you rely on this: Project activity, the supported Python version, the Qt binding and how completely the current release handles DataTypeDefinition-based structures all need checking in the repository before you plan around it. Confirm also that your target server stack accepts the nodeset it exports, since nodeset importers differ in strictness.
Related status codes
Concepts on this page
Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.