# open62541/open62541

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/open62541-open62541).**

3,033 stars · 1,392 forks · C · mpl-2.0

## Links

- GitHub: https://github.com/open62541/open62541
- Homepage: http://open62541.org
- awesome-repositories: https://awesome-repositories.com/repository/open62541-open62541.md

## Topics

`c` `client` `iec-62541` `industrial-automation` `opc` `opc-ua` `opcua` `publish-subscribe` `pubsub` `sdk` `server` `tsn`

## Description

open62541 is an open-source implementation of the OPC Unified Architecture standard, providing a complete stack for industrial automation and data exchange. It functions as both an OPC UA server and client, enabling the creation of an object-oriented address space to model physical industrial assets and their relationships.

The project is designed for versatility across diverse hardware, offering a C99 library that can be deployed to both cloud servers and resource-constrained embedded environments. It distinguishes itself through a pluggable network layer and interface-based security backends, allowing developers to swap communication APIs and encryption providers like OpenSSL or mbedTLS.

The framework covers a broad range of industrial communication capabilities, including publish-subscribe messaging, secure channel management with elliptic curve cryptography, and real-time data monitoring via subscriptions. It also provides tools for automated information modeling, such as transforming XML node set definitions into C source code.

The library can be integrated into projects via amalgamated source files to simplify the build process.

## Tags

### Networking & Communication

- [Industrial Server Implementations](https://awesome-repositories.com/f/networking-communication/industrial-server-implementations.md) — Provides a complete implementation of an OPC UA server for industrial interoperability. ([source](https://open62541.org/))
- [OPC UA Clients](https://awesome-repositories.com/f/networking-communication/opc-ua-clients.md) — Provides a complete client implementation to connect to remote servers using the standardized industrial protocol. ([source](https://cdn.jsdelivr.net/gh/open62541/open62541@master/README.md))
- [OPC UA Stacks](https://awesome-repositories.com/f/networking-communication/opc-ua-stacks.md) — Provides a complete open-source implementation of the OPC Unified Architecture standard for industrial automation and data exchange.
- [Address Space Browsing](https://awesome-repositories.com/f/networking-communication/address-space-browsing.md) — Discovers nodes by traversing references and translating browse paths into node identifiers. ([source](http://open62541.org/doc/master/server.html))
- [Address Space Path Resolvers](https://awesome-repositories.com/f/networking-communication/address-space-path-resolvers.md) — Processes browse path expressions to resolve nodes using reference types and browse names within the address space. ([source](http://open62541.org/doc/master/util.html))
- [Network Communication Implementations](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-communication-implementations.md) — Implements the standardized industrial communication protocol for data exchange between clients and servers. ([source](https://open62541.org/certification))
- [Industrial Communication Libraries](https://awesome-repositories.com/f/networking-communication/industrial-communication-libraries.md) — A C99 library providing binary and JSON encoding, secure channels, and pub-sub messaging for embedded and cloud systems.
- [Monitored Item Subscriptions](https://awesome-repositories.com/f/networking-communication/message-queue-clients/message-subscription-management/monitored-item-subscriptions.md) — Creates and configures subscriptions to track multiple monitored items and retrieve notifications via publish requests. ([source](http://open62541.org/doc/master/core_concepts.html))
- [Pluggable Network Layers](https://awesome-repositories.com/f/networking-communication/network-stacks/pluggable-network-layers.md) — Provides a pluggable network layer allowing the communication API to be swapped for different hardware targets. ([source](http://open62541.org/doc/master/_sources/index.rst.txt))
- [OPC UA Servers](https://awesome-repositories.com/f/networking-communication/opc-ua-servers.md) — Provides a complete server implementation that hosts a data model and provides access to variables and methods. ([source](https://cdn.jsdelivr.net/gh/open62541/open62541@master/README.md))
- [Publish-Subscribe Systems](https://awesome-repositories.com/f/networking-communication/publish-subscribe-systems.md) — Implements publish-subscribe messaging by creating data sets and metadata for distribution to subscribers. ([source](http://open62541.org/doc/master/pubsub.html))
- [Data Change Notifications](https://awesome-repositories.com/f/networking-communication/publish-subscribe-systems/data-change-notifications.md) — Monitors variables for changes and triggers notifications for events, alarms, and conditions via subscriptions. ([source](http://open62541.org/doc/master/building.html))
- [Remote Procedure Execution](https://awesome-repositories.com/f/networking-communication/remote-procedure-execution.md) — Allows clients to trigger specific functions on remote server nodes and retrieve the resulting output. ([source](https://open62541.org/certification))
- [Secure Communication Channels](https://awesome-repositories.com/f/networking-communication/secure-communication-channels.md) — Opens and manages encrypted communication channels to ensure the confidentiality and integrity of messages. ([source](http://open62541.org/doc/master/core_concepts.html))
- [Secure Industrial Communications](https://awesome-repositories.com/f/networking-communication/secure-industrial-communications.md) — Implementing encrypted channels and certificate-based authentication to protect data exchange between industrial devices.
- [Server Metadata Queries](https://awesome-repositories.com/f/networking-communication/server-metadata-queries.md) — Allows clients to issue queries to the server to retrieve filtered sets of industrial data. ([source](http://open62541.org/doc/master/client.html))
- [Session Establishment](https://awesome-repositories.com/f/networking-communication/session-establishment.md) — Handles the creation of secure channels and authenticated sessions required to connect clients to servers. ([source](http://open62541.org/doc/master/client.html))
- [Binary Data Encoding](https://awesome-repositories.com/f/networking-communication/binary-data-encoding.md) — Converts data structures to and from binary formats using configurable namespace mappings. ([source](http://open62541.org/doc/master/types.html))
- [Publish-Subscribe Messaging](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging.md) — Sets up asynchronous data exchange where servers publish data fields to middleware or subscribers. ([source](http://open62541.org/doc/master/tutorials.html))
- [PubSub Subscribers](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging/pubsub-subscribers.md) — Implements subscriber logic to consume data messages from middleware based on specific data interests. ([source](http://open62541.org/doc/master/pubsub.html))
- [Local Service Discovery](https://awesome-repositories.com/f/networking-communication/local-service-discovery.md) — Locates available servers using a local discovery service with optional multicast support. ([source](https://www.open62541.org/doc/master/building.html))
- [PubSub Publishers](https://awesome-repositories.com/f/networking-communication/message-brokers/pubsub-publishers.md) — Implements publishing capabilities for distributing data via broker-less or broker-based transport protocols. ([source](http://open62541.org/doc/master/pubsub.html))
- [Message Encoders and Decoders](https://awesome-repositories.com/f/networking-communication/message-encoders-and-decoders.md) — Translates internal network message structures to and from binary or JSON formats. ([source](http://open62541.org/doc/master/pubsub.html))
- [Custom Network Transport Layers](https://awesome-repositories.com/f/networking-communication/networking-libraries/custom-network-transport-layers.md) — Plugs in custom networking APIs to support specific hardware targets or embedded environments. ([source](http://open62541.org/doc/master/))
- [PubSub Messaging Systems](https://awesome-repositories.com/f/networking-communication/pubsub-messaging-systems.md) — Manages real-time data distribution using publish-subscribe patterns over UDP multicast. ([source](http://open62541.org/doc/master/building.html))
- [Remote Procedure Calls](https://awesome-repositories.com/f/networking-communication/remote-procedure-calls.md) — Executes service sets on a remote node to perform specific actions or logic. ([source](https://www.open62541.org/doc/master/building.html))
- [Service Discovery Integrations](https://awesome-repositories.com/f/networking-communication/service-discovery-integrations.md) — Registers servers with discovery services to help clients find available network endpoints. ([source](http://open62541.org/doc/master/server.html))

### Software Engineering & Architecture

- [Information Models](https://awesome-repositories.com/f/software-engineering-architecture/information-models.md) — Implements an object-oriented system for defining structured hierarchies of nodes and references to represent physical assets. ([source](http://open62541.org/doc/master/_sources/index.rst.txt))
- [Async Operation Coordinators](https://awesome-repositories.com/f/software-engineering-architecture/async-operation-coordinators.md) — Handle long-running read or write tasks in the background to prevent blocking the main execution loop. ([source](http://open62541.org/doc/master/server.html))
- [Data Encoders and Decoders](https://awesome-repositories.com/f/software-engineering-architecture/data-encoders-and-decoders.md) — Transforms complex data types between binary, JSON, and XML formats for network transmission. ([source](http://open62541.org/doc/master/toc.html))
- [Dynamic Address Space Management](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-address-space-management.md) — Allows adding or removing nodes from the information model at runtime to change the server structure. ([source](http://open62541.org/doc/master/building.html))
- [Binary Footprint Optimizers](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/application-performance-tuning/application-performance-optimization/binary-footprint-optimizers.md) — Allows reducing the binary footprint for embedded devices by stripping debug info and disabling unused features. ([source](http://open62541.org/doc/master/building.html))
- [Schema-to-Code Generators](https://awesome-repositories.com/f/software-engineering-architecture/schema-to-code-generators.md) — Transforms standardized XML node set definitions into C source code to automate model instantiation.
- [Asynchronous Service Invocations](https://awesome-repositories.com/f/software-engineering-architecture/service-locators/remote-service-invocations/asynchronous-service-invocations.md) — Supports non-blocking service requests with callback-based responses to maintain system responsiveness. ([source](http://open62541.org/doc/master/client.html))

### Artificial Intelligence & ML

- [C99 Constrained Deployments](https://awesome-repositories.com/f/artificial-intelligence-ml/machine-learning/infrastructure/model-deployment-and-serving/local-and-on-device-inference/edge-ai-model-deployment/embedded-deployments/c99-constrained-deployments.md) — Supports deployment to embedded systems and cloud servers with a small memory footprint and C99 compliance. ([source](https://open62541.org/))

### Business & Productivity Software

- [Attribute Change Notifications](https://awesome-repositories.com/f/business-productivity-software/real-time-monitoring/attribute-change-notifications.md) — Tracks changes to specific data points using monitored items to receive notifications when values update. ([source](http://open62541.org/doc/master/tutorials.html))

### Data & Databases

- [Sharded Read-Write Operations](https://awesome-repositories.com/f/data-databases/acid-transactional-cores/concurrent-read-write-transactions/sharded-read-write-operations.md) — Retrieves or updates attributes of nodes in the address space using standard read and write operations. ([source](http://open62541.org/doc/master/server.html))
- [Address Space Management](https://awesome-repositories.com/f/data-databases/address-space-management.md) — Provides tools to add, delete, and configure variables, objects, and reference types within the address space. ([source](http://open62541.org/doc/master/server.html))
- [Data Change Subscriptions](https://awesome-repositories.com/f/data-databases/data-change-subscriptions.md) — Implements mechanisms for pushing real-time data changes to clients via subscriptions. ([source](https://open62541.org/certification))
- [Information Model Management](https://awesome-repositories.com/f/data-databases/information-model-management.md) — Provides tools to add, delete, and organize nodes and references within the server address space. ([source](http://open62541.org/doc/master/client.html))
- [Information Models](https://awesome-repositories.com/f/data-databases/information-models.md) — Provides an object-oriented system for defining industrial information models and asset relationships. ([source](http://open62541.org/doc/master/core_concepts.html))
- [Node Attribute Access](https://awesome-repositories.com/f/data-databases/node-attribute-access.md) — Accesses or modifies the values and metadata of nodes, including individual elements or array ranges. ([source](http://open62541.org/doc/master/core_concepts.html))
- [Variant Data Type Storage](https://awesome-repositories.com/f/data-databases/variant-data-type-storage.md) — Uses a variant-based generic storage system to handle scalar values and multi-dimensional arrays. ([source](http://open62541.org/doc/master/types.html))
- [Code Generators](https://awesome-repositories.com/f/data-databases/custom-data-types/custom-data-type-providers/code-generators.md) — Automatically generates C code for complex data types from CSV and BSD definition files. ([source](http://open62541.org/doc/master/nodeset_compiler.html))
- [Historical Data Querying Interfaces](https://awesome-repositories.com/f/data-databases/data-access-querying/historical-data-querying-interfaces.md) — Provides interfaces to read and update historical values and events associated with nodes. ([source](http://open62541.org/doc/master/client.html))
- [Multi-Format Encoders](https://awesome-repositories.com/f/data-databases/data-serialization-formats/data-formats/binary-json-alternatives/multi-format-encoders.md) — Translates complex data types between binary, JSON, and XML formats for flexible network transmission.
- [Data Type Managers](https://awesome-repositories.com/f/data-databases/data-type-managers.md) — Provides utilities for handling and managing standard OPC UA data types and variants. ([source](http://open62541.org/doc/master/types.html))
- [Data Type Mappings](https://awesome-repositories.com/f/data-databases/data-type-mappings.md) — Translates between application-level structures and data type descriptions for various types. ([source](http://open62541.org/doc/master/util.html))
- [Address Space Node Management](https://awesome-repositories.com/f/data-databases/hierarchy-node-placement/address-space-node-management.md) — Adds, deletes, and manages nodes and their references within the server information hierarchy. ([source](http://open62541.org/doc/master/core_concepts.html))

### Hardware & IoT

- [Embedded Communication Libraries](https://awesome-repositories.com/f/hardware-iot/embedded-communication-libraries.md) — A C99 library providing binary and JSON encoding and secure channels for resource-constrained hardware.
- [Embedded Implementations](https://awesome-repositories.com/f/hardware-iot/industrial-data-standardization/embedded-implementations.md) — Deploying standardized communication protocols on resource-constrained hardware with minimal memory and binary footprints.
- [Industrial Node Attribute Accessors](https://awesome-repositories.com/f/hardware-iot/industrial-node-attribute-accessors.md) — Retrieves the current values of attributes from specific nodes in the server address space. ([source](http://open62541.org/doc/master/client.html))
- [Industrial Node Attribute Modifiers](https://awesome-repositories.com/f/hardware-iot/industrial-node-attribute-modifiers.md) — Updates the values of attributes for specific nodes in the server address space. ([source](http://open62541.org/doc/master/client.html))

### Operating Systems & Systems Programming

- [Global Address Space Management](https://awesome-repositories.com/f/operating-systems-systems-programming/global-address-space-management.md) — Organizes industrial information into a hierarchy of nodes and references using an object-oriented type system.

### Programming Languages & Runtimes

- [Node Method Invocation](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-method-invokers/node-method-invocation.md) — Resolves node identifiers to execute associated logic on specific object instances. ([source](http://open62541.org/doc/master/server.html))
- [Binary Size Optimizations](https://awesome-repositories.com/f/programming-languages-runtimes/binary-size-optimizations.md) — Strip debug information and disable unused features to lower the total RAM and ROM usage. ([source](https://www.open62541.org/doc/master/building.html))

### Security & Cryptography

- [Node-Level Access Controls](https://awesome-repositories.com/f/security-cryptography/access-control/panel-access-controls/workspace-access-restrictions/relation-access-restrictions/node-level-access-controls.md) — Controls which users or clients can access or modify individual nodes within the information model. ([source](http://open62541.org/doc/master/))
- [Communication Encryption](https://awesome-repositories.com/f/security-cryptography/communication-encryption.md) — Secures data transmission using encryption backends such as OpenSSL or mbedTLS including hardware TPM support. ([source](http://open62541.org/doc/master/building.html))
- [Security and Access Control](https://awesome-repositories.com/f/security-cryptography/security-and-access-control.md) — Authenticates identities and encrypts data streams to prevent unauthorized access and ensure privacy. ([source](https://open62541.org/certification))
- [Traffic Encryption](https://awesome-repositories.com/f/security-cryptography/traffic-encryption.md) — Secures communication between clients and servers using encrypted binary protocols. ([source](http://open62541.org/doc/master/))
- [Elliptic Curve Certificate Generators](https://awesome-repositories.com/f/security-cryptography/certificate-authorities/client-certificate-generators/elliptic-curve-certificate-generators.md) — Creates public-private key pairs and certificates using elliptic curves for secure identity verification. ([source](http://open62541.org/doc/master/ecc_security.html))
- [Secure Communication Implementations](https://awesome-repositories.com/f/security-cryptography/elliptic-curve-cryptography/secure-communication-implementations.md) — Uses elliptic curve cryptography to provide strong encryption with short keys for resource-constrained deployments. ([source](http://open62541.org/doc/master/ecc_security.html))
- [Session and Credential Handling](https://awesome-repositories.com/f/security-cryptography/identity-access-management/authentication-strategies/session-and-credential-handling.md) — Manages the creation, activation, and closure of user sessions by assigning specific attributes and context pointers. ([source](http://open62541.org/doc/master/server.html))
- [Session-Based Access Controls](https://awesome-repositories.com/f/security-cryptography/identity-based-access-control/credential-based-access-controls/session-based-access-controls.md) — Validates user identities and assigns roles to active sessions to restrict access to specific nodes.
- [Pluggable Security Backends](https://awesome-repositories.com/f/security-cryptography/identity-provider-backends/pluggable-security-backends.md) — Abstracts encryption and certificate management to allow swapping between providers like OpenSSL or mbedTLS.
- [Role-Based Access Control](https://awesome-repositories.com/f/security-cryptography/role-based-access-control.md) — Restricts access to nodes or namespaces by assigning roles to sessions and defining permissions. ([source](http://open62541.org/doc/master/server.html))
- [Secure Publish-Subscribe Messaging](https://awesome-repositories.com/f/security-cryptography/secure-network-communication/secure-publish-subscribe-messaging.md) — Encrypts and signs network messages using security policies and keys managed via a security service. ([source](http://open62541.org/doc/master/pubsub.html))
- [Security Policies](https://awesome-repositories.com/f/security-cryptography/security-policies.md) — Implements custom security policies and certificate handling to manage encrypted communication and identity verification. ([source](http://open62541.org/doc/master/plugin.html))
- [Server Certificate Management](https://awesome-repositories.com/f/security-cryptography/security/cryptography-and-secrets/cryptographic-primitives-management/server-certificate-management.md) — Updates server certificates and manages trusted issuer lists or revocation lists at runtime. ([source](http://open62541.org/doc/master/server.html))
- [Certificate Trust Managers](https://awesome-repositories.com/f/security-cryptography/security/utilities/certificate-trust-managers.md) — Adds, removes, and verifies certificates within a trusted list to handle secure connections. ([source](http://open62541.org/doc/master/util.html))
- [Session Authentication](https://awesome-repositories.com/f/security-cryptography/session-authentication.md) — Authenticates requests by creating and activating application-layer sessions using software certificates and user identities. ([source](http://open62541.org/doc/master/core_concepts.html))

### System Administration & Monitoring

- [Industrial Alarms and Events](https://awesome-repositories.com/f/system-administration-monitoring/industrial-alarms-and-events.md) — Generates and emits alarms and conditions to notify clients of specific system occurrences. ([source](http://open62541.org/doc/master/tutorials.html))
- [Monitored Item Management](https://awesome-repositories.com/f/system-administration-monitoring/monitored-item-management.md) — Creates subscriptions to track changes in server values and receives notifications when conditions are met. ([source](http://open62541.org/doc/master/toc.html))
- [State Change Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/resource-monitoring/resource-change-monitors/state-change-monitoring.md) — Sets up subscriptions and monitored items to receive automatic notifications when specific data values change. ([source](http://open62541.org/doc/master/_sources/index.rst.txt))
- [Asynchronous Event Loops](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/linux-system-administration/networking/connection-lifecycle-management/parallel-network-i-o/event-driven-i-o/asynchronous-event-loops.md) — Manages timers and asynchronous network operations through an injectable loop that handles interrupts.
- [Event Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/event-monitoring.md) — Allows clients to receive notifications when specific events occur on monitored server nodes. ([source](http://open62541.org/doc/master/client.html))
- [Event Monitoring Systems](https://awesome-repositories.com/f/system-administration-monitoring/event-monitoring-systems.md) — Generates events that bubble up the object hierarchy to notify monitored clients or local callbacks. ([source](http://open62541.org/doc/master/server.html))

### User Interface & Experience

- [Server Method Exposures](https://awesome-repositories.com/f/user-interface-experience/action-trigger-components/server-method-exposures.md) — Enables the attachment of executable logic to nodes in the address space for remote execution. ([source](http://open62541.org/doc/master/tutorials.html))
- [Server-Side Method Invokers](https://awesome-repositories.com/f/user-interface-experience/action-trigger-components/server-side-method-invokers.md) — Triggers functions on server objects using input arguments and receives validated outputs. ([source](http://open62541.org/doc/master/building.html))

### Part of an Awesome List

- [Model Code Generators](https://awesome-repositories.com/f/awesome-lists/data/html-and-xml-parsing/xml-parsing/model-code-generators.md) — Produces data types and server-side information models from standard XML node set definitions. ([source](http://open62541.org/doc/master/))
- [Miscellaneous Tools](https://awesome-repositories.com/f/awesome-lists/more/miscellaneous-tools.md) — C-based implementation of the OPC UA standard.

### Development Tools & Productivity

- [Server Discovery APIs](https://awesome-repositories.com/f/development-tools-productivity/api-discovery-tools/server-discovery-apis.md) — Locates available servers and endpoint configurations using discovery services or network multicast. ([source](http://open62541.org/doc/master/core_concepts.html))
- [Event Loop Integrations](https://awesome-repositories.com/f/development-tools-productivity/event-loop-integrations.md) — Supports plugging in custom event loop implementations to manage timers and asynchronous operations. ([source](http://open62541.org/doc/master/plugin.html))
- [XML to DSL Converters](https://awesome-repositories.com/f/development-tools-productivity/xml-to-dsl-converters.md) — Transforms XML files into source and header files to automatically instantiate information models within a server. ([source](http://open62541.org/doc/master/nodeset_compiler.html))

### Web Development

- [Server Lifecycle Management](https://awesome-repositories.com/f/web-development/http-server-configuration/grpc-server-configurations/server-lifecycle-management.md) — Provides mechanisms for controlling the start, stop, and operational state of the server instance. ([source](http://open62541.org/doc/master/server.html))
