Skip to content
Ecosystem map · verified 23 Oct 2026

The industrial protocol stack landscape

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

Implementations
134
Protocols
10
Languages
14
Commercial SDKs
22
Tested in our interop suites
35

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

  • 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.