finds.dev← search

// the find

apache/plc4x

★ 1,579 · Java · Apache-2.0 · updated Jun 2026

PLC4X The Industrial IoT adapter

PLC4X is an Apache project that gives you a unified API for talking to industrial PLCs — Siemens S7, Modbus, OPC-UA, BACnet, EtherNet/IP, and a dozen others — without writing protocol-specific code for each. It's aimed at industrial IoT developers who need to pull data from factory-floor hardware into modern data pipelines (Kafka, NiFi, Camel). Java and Go are the only languages actually production-ready.

The protocol coverage is genuinely impressive — S7, Modbus, OPC-UA, BACnet, KNX, EtherNet/IP, ADS, CAN all under one API abstraction. The code generation approach (protocols defined in a custom MSpec DSL, then generated into Java/Go/C/Python) means protocol implementations stay in sync across languages without manual duplication. The Apache ecosystem integrations (Kafka Connect, NiFi, Camel) are real and usable, so you can pipe PLC data into existing data infrastructure without custom glue code. The OPC-UA server adapter is clever — it lets legacy devices speak a modern protocol without touching the hardware.

The multi-language story is mostly fiction: C, Python, and C# are explicitly marked not ready or abandoned, so you're really choosing between Java and Go. The build is a Java Maven monorepo that needs 12GB RAM just to run in Docker, which is hostile to anyone who wants to contribute or build a single driver. The OPM (Object-Plc-Mapping) abstraction is a nice idea but adds a leaky layer on top of an already complex protocol stack — when something goes wrong at the wire level, you're debugging through two abstractions. Star count (1,579) is low for the scope of industrial protocols it claims to support, which likely reflects how niche the problem is but also means community bug reports and real-world testing are sparse.

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 →