finds.dev← search

// the find

FreeOpcUa/opcua-asyncio

★ 1,429 · Python · LGPL-3.0 · updated Jun 2026

OPC UA library for python >= 3.10

Full OPC UA client and server implementation in Python using asyncio, covering the binary protocol, subscriptions, encryption, history, and custom structures. It's the go-to Python option for industrial automation work where you need to talk to PLCs, SCADA systems, or other OPC UA endpoints. Pre-1.0, actively maintained, and battle-tested against real industrial stacks like Beckhoff, Kepware, and Prosys.

- Both client and server in one library with a clean async API, plus a sync wrapper that actually works for codebases not on asyncio yet

- High test coverage (95%+) with a large, realistic test suite covering crypto, subscriptions, history, custom structures, and HA client scenarios

- Protocol code is autogenerated from the official OPC UA XML spec, so UA type fidelity is good and keeping up with spec updates is tractable

- HA client with virtual subscriptions and reconciliation logic is a genuinely useful addition for production deployments against redundant servers

- Still pre-1.0 with explicit warnings about API changes, and things like argument renames have already bitten users upgrading between minor versions

- Missing features matter in real deployments: no WebSocket transport, no XML protocol, no proper alarm/condition support, and automatic reconnection is described as 'maybe'

- Security model is weak on the server side — one hardcoded admin user, everything else read-only, no role-based access control worth speaking of

- PubSub support exists but feels bolted on; UADP over UDP only, no MQTT transport, and the implementation is not covered by the same test depth as the core client/server

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →