Skip to content
Ecosystem map · verified 30 Oct 2026

The industrial protocol stack landscape

An open, community-maintained map of the implementations connecting operational technology. Pick a protocol or an application profile, then pick a stack to see its language, licence, roles and latest release, and jump straight to its source.

Implementations
268
Protocols
15
Application profile
1
Languages
16
Commercial SDKs
50
Tested in our interop suites
81
ProtocolsApplication profiles

The broadest open-source ecosystem in OT, spanning C, Python, Java, .NET, JavaScript, Rust, Go and microcontrollers. Focus: TCP, RTU and ASCII; client and server

Several large independent stacks next to the OPC Foundation reference stack and a strong commercial SDK market. Focus: Client/server SDKs, information models, PubSub

Support differs widely by data link and by service, so one "BACnet supported" badge says very little. Focus: BACnet/IP, MS/TP, BACnet/SC

A handful of credible engines, with bindings and forks built on top of them. Focus: SCADA telecontrol over TCP

Few comprehensive implementations. MMS alone is not IEC 61850. Focus: MMS, GOOSE, Sampled Values, SCL

Classic S7comm is well covered; S7commPlus for the S7-1200/1500 is only now getting open implementations. Focus: S7comm, S7commPlus

2.0b and 3.x are different technologies, and 3.1 is not backward-compatible with 3.0. Focus: VEN, VTN and business-logic roles

2.0.1 is not backward-compatible with 1.6, while 2.1 extends 2.0.1, so a single "OCPP supported" claim says little without the version. Focus: Charging station to CSMS over WebSocket/JSON

The long-standing open-source reference, opendnp3, is archived and its best-known successor is source-available, so the actively maintained, permissively licensed field is small and young. Focus: SCADA master to outstation over TCP, UDP, TLS and serial lines

Mandates in California and Australia drive it, so most open stacks are CSIP or CSIP-AUS projects of a research lab, a utility programme or one developer, and few cover both roles across both editions. Focus: Utility and aggregator servers to DER clients over HTTPS with mutual TLS, with the CSIP and CSIP-AUS profiles

The open field is dominated by clients for Rockwell Logix tags; independent stacks that do cyclic I/O are few, and only one open adapter, OpENer, is widely used. Focus: CIP over TCP and UDP: explicit messaging and cyclic I/O between scanners, adapters and controllers

The industrial Ethernet of Siemens and many other automation vendors runs almost entirely on licensed stacks. In the open field, rt-labs p-net is the one widely used device stack, most other projects are DCP tools, and open IO-Controllers are few and young. Focus: PROFINET IO between IO-Controllers and IO-Devices: DCP, DCE/RPC records, cyclic RT frames, alarms, GSDML, MRP rings

Ubiquitous in vehicles, machines and energy equipment, and the transport that CANopen, SAE J1939 and UDS run on. The open field centres on Linux SocketCAN with can-utils, python-can and bindings for most languages, and on cantools and canmatrix for databases; the commercial side is adapter vendors' drivers and analysis tools. CAN XL is in Linux since 6.2, with few stacks yet. CANopen stacks have their own entry. Focus: The data link and transport underneath CANopen, J1939 and UDS: classical CAN, CAN FD and CAN XL frames, SocketCAN and adapters, ISO-TP, DBC, KCD and ARXML databases

The higher-layer protocol of industrial machines, drives, lifts, medical and mobile equipment, standardized by CAN in Automation. Three open stacks carry the field, CANopenNode, Lely CANopen and python canopen; most others are young or cover one role, and none of those three implements CANopen FD yet. Focus: The application protocol on top of CAN: object dictionary, SDO, PDO, NMT, heartbeat, SYNC, EMCY, LSS, EDS files and device profiles such as CiA 402 drives

The building control standard of switches, dimmers, blinds, heating and presence detectors, maintained by KNX Association. The open field is unusually strong on the IP side: Calimero, knxd, xknx behind Home Assistant and KNXUltimate behind Node-RED are mature and independent, and thelsing's knx stack with its OpenKNX fork runs on devices. Rust newcomers are arriving; most commercial work is in certified device stacks and KNX Association's own tools. Focus: Home and building control: group communication with datapoint types over twisted pair, radio and IP, KNXnet/IP discovery, tunnelling and routing, KNX IP Secure and KNX Data Secure

An application profile on top of MQTT, not a protocol of its own. Eclipse Tahu is the reference; most independent open stacks are recent, and few implement both roles with primary host awareness, server walking and resequencing. Focus: Edge nodes and host applications over MQTT: topic namespace, Protobuf payloads, birth and death certificates, primary host STATE

  • Independent stacks
  • Derived libraries and bindings
  • Commercial SDKs
  • Legacy and reference
  • Tested in an OT Fabric interop suite
  • OT Fabric
  • Builds on or continues
  • Quiet, archived or deprecated
ImplementationTypeLanguageLicenceLatest releaseRolesActivityStars
libmodbusIndependentCLGPL-2.1-or-laterv3.2.0 2 Jul 2026client, serverActive4.3k
PyModbusIndependentPythonBSD-3-Clause3.16.1 11 Oct 2026client, serverActive2.8k
NModbusIndependentC#MIT3.0.83 16 Apr 2026client, serverActive1.1k
goburrow/modbusIndependentGoBSD-3-Clausev0.1.0 19 Sept 2018clientQuiet1k
Modbus4JIndependentJavaGPL-3.0 +commercialv3.1.0 28 Jan 2022client, serverSlowing1k
modbus-serialIndependentJavaScriptISC8.0.25 20 Mar 2026client, serverActive731
ModbusMasterIndependentC++ (Arduino)Apache-2.0v2.0.1 23 Sept 2016clientQuiet651
modbus-esp8266IndependentC++ (Arduino)BSD-3-Clause4.1.1 3 Jan 2023client, serverSlowing628
jsmodbus (node-modbus)IndependentJavaScriptMIT5.0.0 14 Sept 2026client, serverActive512
simonvetter/modbusIndependentGoMITv1.6.4 6 Nov 2025client, serverActive455
j2modIndependentJavaApache-2.03.4.0 6 Sept 2026client, serverActive337
tokio-modbusIndependentRustMIT OR Apache-2.00.17.0 22 Oct 2025client, serverActive567
digitalpetri/modbusIndependentJavaEPL-2.02.1.6 8 Aug 2026client, serverActive863
go-modbusOT FabricIndependentGoMITv1.7.1 15 Oct 2026client, serverActive2
Triangle MicroWorks Modbus librariesCommercialC / C++ / .NETCommercialNo releaseclient, serverVendor product–
Open data

Missing a stack? Found a mistake?

The map is one JSON file in our website repository. Every entry carries its sources and the date we last checked it. Send a pull request with a new library, a commercial SDK, a correction or interop results, and the map updates on merge.

  • Stars and forks are snapshots taken on the verified date and cover the whole repository.
  • repoCreated is the GitHub repository creation date; historySince is the year of the first commit in its history, which can be older.
  • release is the newest stable version from the channel the project actually publishes to; source names that channel.
  • maintenance: active = a commit in the last 12 months, slowing = 12 to 36 months, quiet = more than 36 months; archived, deprecated and discontinued follow the project's own statement.
  • Capabilities list what the project documents. They are not conformance results.