| Crates.io | async-opcua |
| lib.rs | async-opcua |
| version | 0.16.0 |
| created_at | 2025-01-24 09:04:21.727634+00 |
| updated_at | 2025-07-11 12:53:50.559225+00 |
| description | OPC UA client and server API |
| homepage | https://github.com/freeopcua/async-opcua |
| repository | https://github.com/freeopcua/async-opcua |
| max_upload_size | |
| id | 1529197 |
| size | 283,870 |
This is an OPC-UA server / client API implementation for Rust.
OPC-UA is an industry standard for information modeling and communication. It is used for control systems, IoT, etc.
The OPC-UA standard is very large and complex, and implementations are often flawed. The strictness of Rust makes it a good choice for implementing OPC-UA, and the performance characteristics are useful when creating OPC-UA tooling that will run in constrained environments.
Read the compatibility page for how the implementation conforms with the OPC UA spec.
Read the change log for changes per version as well as aspirational / upcoming work.
This is a fork of opcua with a broader goal of a generic OPC-UA implementation and a number of different design decisions. See fork.md for details on this decision and the differences between this library and the original.
We target the latest stable rust compiler and make no promises of support for older rust versions. We have use for several recent and upcoming rust features so this is unlikely to change.
The code is licenced under MPL-2.0. Like all open source code, you use this code at your own risk.
Tutorials for using the server and client are available in the async-opcua github repo:
There are also generated API docs on crates.io.
all, enables the server and client features.server, includes the server SDK.base-server, includes the server SDK, but without the core address space. Most users should use the server feature.client, includes the client SDK.json, adds support for OPC-UA JSON to generated types.generated-address-space, adds the core OPC-UA namespace. This is usually required for compliant OPC-UA servers.discovery-server-registration, allows the server to register itself with a local discovery server, by pulling in a client.xml, adds support for loading generated types from XML, and for loading NodeSet2.xml files.By default, no features are enabled, so only core types and functionality is pulled in. You will typically want to enable either the client or server features.
Note that this library is split into multiple different crates. OPC-UA is a complex standard, and implementations typically involve a great deal of generated code. In order to allow good isolation of different components, and to speed up compile times, the async-opcua library is split into several crates.
async-opcua, the general crate that most users will use as the entry point. Contains a few utilities, but mostly just re-exports the other crates. I.e. async-opcua-types is re-exported under opcua::types.The async-opcua github repo contains a number of samples that may be used as reference when writing your own clients and servers.
async-opcua-codegen.