finds.dev← search

// the find

valiot/opex62541

★ 24 · C · MIT · updated Jul 2026

An Elixir wrapper for the open62541 library (OPC UA stack)

An Elixir NIF/port wrapper around open62541, the C OPC UA stack. Lets you run an OPC UA server or client from Elixir/Nerves without writing any C. The target audience is industrial automation developers who want Elixir's fault-tolerance model but need to speak OPC UA to PLCs and SCADA systems.

Ships both server and client sides, covering subscriptions, monitored items, access control, and the full node type hierarchy — not just read/write. Nerves support is first-class and actually tested on real hardware (Raspberry Pi 3B+). The v1.4.x migration to OpenSSL was a non-trivial upgrade and they documented the breaking change clearly. Test suite is thorough for this kind of C port library — separate test directories for client, server, integration, and C backend, with real TLS cert fixtures.

The TODO section lists Methods and PubSub as missing, and PubSub is increasingly where OPC UA work is heading — without it you're limited to client-server polling patterns. Only available via git dependency, not Hex, which makes version pinning fragile in production. The C layer is a single-process port (erlcmd.c pattern), so a crash in the C stack takes down that OS process entirely rather than being isolated per-connection. 24 stars and a small fork count means you're largely on your own when open62541 makes a breaking API change.

View on GitHub → Homepage ↗

// 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 →