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
| Implementation | Type | Language | Licence | Latest release | Roles | Activity | Stars |
|---|---|---|---|---|---|---|---|
| libmodbus | Independent | C | LGPL-2.1-or-later | v3.2.0 2 Jul 2026 | client, server | Active | 4.3k |
| PyModbus | Independent | Python | BSD-3-Clause | 3.16.1 11 Oct 2026 | client, server | Active | 2.8k |
| NModbus | Independent | C# | MIT | 3.0.83 16 Apr 2026 | client, server | Active | 1.1k |
| goburrow/modbus | Independent | Go | BSD-3-Clause | v0.1.0 19 Sept 2018 | client | Quiet | 1k |
| Modbus4J | Independent | Java | GPL-3.0 +commercial | v3.1.0 28 Jan 2022 | client, server | Slowing | 1k |
| modbus-serial | Independent | JavaScript | ISC | 8.0.25 20 Mar 2026 | client, server | Active | 731 |
| ModbusMaster | Independent | C++ (Arduino) | Apache-2.0 | v2.0.1 23 Sept 2016 | client | Quiet | 651 |
| modbus-esp8266 | Independent | C++ (Arduino) | BSD-3-Clause | 4.1.1 3 Jan 2023 | client, server | Slowing | 628 |
| jsmodbus (node-modbus) | Independent | JavaScript | MIT | 5.0.0 14 Sept 2026 | client, server | Active | 512 |
| simonvetter/modbus | Independent | Go | MIT | v1.6.4 6 Nov 2025 | client, server | Active | 455 |
| j2mod | Independent | Java | Apache-2.0 | 3.4.0 6 Sept 2026 | client, server | Active | 337 |
| tokio-modbus | Independent | Rust | MIT OR Apache-2.0 | 0.17.0 22 Oct 2025 | client, server | Active | 567 |
| digitalpetri/modbus | Independent | Java | EPL-2.0 | 2.1.6 8 Aug 2026 | client, server | Active | 863 |
| go-modbusOT Fabric | Independent | Go | MIT | v1.7.1 15 Oct 2026 | client, server | Active | 2 |
| Triangle MicroWorks Modbus libraries | Commercial | C / C++ / .NET | Commercial | No release | client, server | Vendor product | – |
| open62541 | Independent | C | MPL-2.0 | v1.5.9 4 Oct 2026 | client, server | Active | 3.3k |
| OPC Foundation UA-.NETStandard | Independent | C# | OPC Foundation MIT | 2.0.1 12 Oct 2026 | client, server | Active | 2.4k |
| node-opcua | Independent | TypeScript | MIT | 2.187.9 15 Oct 2026 | client, server | Active | 1.7k |
| opcua-asyncio (asyncua) | Independent | Python | LGPL-3.0 | 2.1.0 6 Oct 2026 | client, server | Active | 1.5k |
| python-opcua | Legacy | Python | LGPL-3.0 | 0.98.13 3 Mar 2021 | client, server | Deprecated | 1.5k |
| Eclipse Milo | Independent | Java | EPL-2.0 | v1.1.8 6 Oct 2026 | client, server | Active | 1.4k |
| async-opcua | Independent | Rust | MPL-2.0 | 0.19.0 18 Jul 2026 | client, server | Active | 163 |
| locka99/opcua | Legacy | Rust | MPL-2.0 | 0.12.0 1 Jan 2024 | client, server | Slowing | 576 |
| gopcua/opcua | Independent | Go | MIT | v0.9.1 9 Aug 2026 | client, server | Active | 1.1k |
| go-opcuaOT Fabric | Independent | Go | MIT | v1.6.0 12 Oct 2026 | client, server | Active | 0 |
| Unified Automation SDKs | Commercial | C / C++ / .NET | Commercial | No release | client, server | Vendor product | – |
| Prosys OPC UA SDK for Java | Commercial | Java | Commercial | No release | client, server | Vendor product | – |
| Softing OPC UA SDKs | Commercial | C++ / .NET | Commercial | No release | client, server | Vendor product | – |
| OpenOpcUa CoreServer | Commercial | C / C++ | Proprietary freeware | No release | client, server | Vendor product | – |
| BACnet Stack | Independent | C | GPL-2.0-or-later WITH GCC-exception-2.0 | 1.6.1 28 Aug 2026 | client, server, router | Active | 602 |
| BACpypes3 | Independent | Python | MIT | 0.0.110 24 Sept 2026 | client, server | Active | 99 |
| BACpypes | Legacy | Python | MIT | 0.19.0 22 Jan 2025 | client, server | Active | 328 |
| System.IO.BACnet | Independent | C# | MIT | 4.0.0 30 Jul 2026 | client, server | Active | 251 |
| BACnet4J | Independent | Java | GPL-3.0 +commercial | v6.1.0 23 Mar 2026 | client, server | Active | 221 |
| ulbios/bacnet | Independent | Go | MIT | No release | client | Quiet | 22 |
| @bacnet-js/client | Independent | TypeScript | MIT | 3.3.2 7 May 2026 | client | Active | 20 |
| @bacnet-js/device | Derived | TypeScript | MIT | 0.8.0 8 Jun 2026 | server | Active | 4 |
| worldiety/bacnetEmerging | Independent | Go | BSD-2-Clause | No release | client, router | Active | 0 |
| go-bacnetOT Fabric | Independent | Go | MIT | v0.4.0 10 Oct 2026 | client, server | Active | 0 |
| Cimetrics BACstac | Commercial | C / .NET | Commercial | No release | client, server | Vendor product | – |
| PolarSoft FreeRange | Commercial | C | Commercial | No release | client, server | Vendor product | – |
| SoftDEL BACnet stack | Commercial | C | Commercial | No release | client, server | Vendor product | – |
| lib60870 | Independent | C | GPL-3.0 +commercial | v2.4.1 15 Jul 2026 | client, server | Active | 602 |
| OpenMUC j60870 | Independent | Java | GPL-3.0 +commercial | 1.8.0 17 Jul 2026 | client, server | Active | – |
| go-iecp5 (thinkgos) | Independent | Go | LGPL-3.0 | v1.2.1 25 May 2022 | client, server | Archived | 101 |
| go-iecp5 (riclolsen) | Derived | Go | LGPL-3.0 | v0.4.6 29 Sept 2026 | client, server | Active | 3 |
| go-iecp5 (wendy512) | Derived | Go | LGPL-3.0 | v1.2.6 3 Feb 2026 | client, server | Active | 7 |
| wendy512/iec104 | Derived | Go | Apache-2.0 | v1.0.4 3 Feb 2026 | client, server | Active | 110 |
| iec104-python (c104) | Derived | Python / C++ | GPL-3.0 | 2.2.1 23 Apr 2025 | client, server | Active | 103 |
| go-iec104OT FabricEmerging | Independent | Go | MIT | v0.0.3 10 Oct 2026 | client, server | Active | 1 |
| Triangle MicroWorks IEC 60870-5 libraries | Commercial | C / C++ / .NET | Commercial | No release | client, server | Vendor product | – |
| libiec61850 | Independent | C | GPL-3.0 +commercial | v1.6.2.1 24 Sept 2026 | client, server | Active | 1.2k |
| IEC61850bean | Independent | Java | Apache-2.0 | 1.9.0 30 Jun 2020 | client, server | Quiet | 186 |
| dscsystems/go-iec61850Emerging | Independent | Go | GPL-3.0 | v0.6.4 17 Oct 2026 | client, server | Active | 3 |
| go-iec61850OT Fabric | Independent | Go | MIT | v1.0.8 30 Jul 2026 | client, server | Active | 0 |
| go-mmsOT Fabric | Derived | Go | MIT | v1.0.7 30 Jul 2026 | client, server | Active | 0 |
| Triangle MicroWorks IEC 61850 libraries | Commercial | C++ / .NET | Commercial | No release | client, server | Vendor product | – |
| Apache PLC4X | Independent | Java, Go, C | Apache-2.0 | 1.0.0 7 Sept 2026 | client | Active | 1.8k |
| S7NetPlus | Independent | C# | MIT | 0.20.0 3 Aug 2023 | client | Quiet | 1.6k |
| python-snap7 | Independent | Python | MIT | 3.2.1 4 Oct 2026 | client, server | Active | 858 |
| gos7 | Independent | Go | BSD-3-Clause | No release | client | Active | 405 |
| nodeS7 | Independent | JavaScript | MIT | 0.3.18 31 Jul 2022 | client | Quiet | 399 |
| Snap7 | Independent | C++ | LGPL-3.0 | 1.4.3 SourceForge | client, server | Unknown | – |
| Sharp7 | Derived | C# | MIT | 1.1.84 11 May 2023 | client | Quiet | 258 |
| s7commplusEmerging | Independent | Python | MIT | 0.2.0 8 Oct 2026 | client | Active | 10 |
| go-s7commOT Fabric | Independent | Go | MIT | v0.7.5 30 Jul 2026 | client | Active | 0 |
| Softing siAccess | Commercial | C / .NET | Commercial | No release | client | Vendor product | – |
| PLCcom for S7 | Commercial | .NET / Java | Commercial | No release | client | Vendor product | – |
| OpenLEADR (Python) | Independent | Python | Apache-2.0 | 0.5.36 3 Sept 2026 | VEN, VTN | Active | 159 |
| OpenLEADR (Rust) | Independent | Rust | MIT OR Apache-2.0 | 0.2.7 6 Oct 2026 | VEN, VTN, Business logic | Active | 104 |
| ElaadNL openadr3-client | Independent | Python | Apache-2.0 | 2.4.0 7 Aug 2026 | VEN, Business logic | Active | 5 |
| avob/OpenADR | Independent | Java | Apache-2.0 | No release | VEN, VTN | Quiet | 58 |
| EPRI OpenADR Virtual Top Node | Legacy | Ruby | BSD-3-Clause | v0.9.7 24 Jan 2017 | VTN | Discontinued | 51 |
| EPRI OpenADR Virtual End Node | Legacy | C# | BSD-3-Clause | v0.7 22 Aug 2016 | VEN | Quiet | 43 |
| EPRI OpenADR VEN Library | Legacy | C++ | BSD-3-Clause | v0.7.0 30 Aug 2016 | VEN | Quiet | 21 |
| go-openadrOT FabricEmerging | Independent | Go | MIT | v0.4.0 13 Oct 2026 | VEN, VTN, Business logic | Active | 0 |
| ocpp (The Mobility House) | Independent | Python | MIT | 2.1.0 16 Jul 2025 | CSMS, Charging station | Active | 1k |
| Java-OCA-OCPP (ChargeTime) | Independent | Java | MIT | 2.0 13 Dec 2025 | CSMS, Charging station | Active | 380 |
| ocpp-go | Independent | Go | MIT | v0.19.0 2 Feb 2025 | CSMS, Charging station | Slowing | 377 |
| libocpp (EVerest) | Independent | C++ | Apache-2.0 | v0.31.1 11 Dec 2025 | Charging station | Archived | 151 |
| CitrineOS | Independent | TypeScript | Apache-2.0 | v2.0.1 6 Oct 2026 | CSMS | Active | 299 |
| EVerest | Independent | C++ | Apache-2.0 | 2026.02.1 16 Jul 2026 | Charging station | Active | 282 |
| SteVe | Independent | Java | GPL-3.0-or-later | steve-3.14.1 12 Aug 2026 | CSMS | Active | 1.1k |
| MicroOcpp | Independent | C++ | MIT | v1.2.0 3 Nov 2024 | Charging station | Active | 548 |
| rust-ocpp | Independent | Rust | MIT OR Apache-2.0 | 3.0.4 30 Nov 2025 | CSMS, Charging station | Active | 105 |
| ocpp-rpc | Independent | JavaScript | MIT | 2.2.1 17 Jul 2025 | CSMS, Charging station | Active | 136 |
| OCPP.Core | Independent | C# | GPL-3.0 | V1.8.0 4 Oct 2026 | CSMS | Active | 306 |
| Open OCPP | Independent | C++ | LGPL-2.1 | v1.6.0 19 Jun 2025 | CSMS, Charging station | Active | 175 |
| OpenOCPP (ChargeLab) | Independent | C++ | Apache-2.0 | v1.0.0 13 Jun 2025 | Charging station | Active | 90 |
| ocpp-toolkit (IZIVIA) | Independent | Kotlin | MIT | 3.0.0 10 Sept 2026 | CSMS, Charging station | Active | 46 |
| WWCP_OCPP (Open Charging Cloud) | Independent | C# | AGPL-3.0 | No release | CSMS, Charging station | Active | 71 |
| library-ocpp (Monta) | Independent | Kotlin | Apache-2.0 | v3.0.2 29 Sept 2026 | CSMS | Active | 6 |
| e-mobility charging stations simulator (SAP) | Independent | TypeScript | Apache-2.0 | v4.12.0 23 Aug 2026 | Charging station | Active | 229 |
| Home Assistant OCPP integration | Derived | Python | MIT | v0.12.1 5 Oct 2026 | CSMS | Active | 407 |
| Open e-Mobility (ev-server) | Legacy | TypeScript | Apache-2.0 | V2.7.8 16 May 2023 | CSMS | Archived | 176 |
| NewMotion OCPP (Scala) | Legacy | Scala | GPL-3.0 | v9.2.3 21 Jan 2020 | CSMS, Charging station | Archived | 212 |
| Motown | Legacy | Java | Apache-2.0 | 0.14.0 1 Feb 2019 | CSMS | Quiet | 44 |
| Trialog QOCPP | Commercial | C++ | Commercial | No release | CSMS, Charging station | Vendor product | – |
| Delta OCPP Stack | Commercial | Commercial | No release | Charging station | Vendor product | – | |
| ByteSnap OCPP software | Commercial | Commercial | No release | Charging station | Vendor product | – | |
| go-ocppOT FabricEmerging | Independent | Go | MIT | v0.1.3 19 Oct 2026 | CSMS, Charging station | Active | 0 |
| dnp3 (Step Function I/O) | Independent | Rust, C, C++, C#, Java | Non-commercial (Step Function I/O) +commercial | 1.7.0 21 Sept 2026 | master, outstation | Active | 159 |
| opendnp3 | Independent | C++, Java, C# | Apache-2.0 | 3.1.2 22 Apr 2022 | master, outstation | Archived | 336 |
| go-dnp3 (DSC Systems)Emerging | Independent | Go | GPL-3.0-or-later | v0.8.1 18 Oct 2026 | master, outstation | Active | 2 |
| dnp3pyEmerging | Independent | Python | MIT | 0.6.0 29 Sept 2026 | master, outstation | Active | 10 |
| dnp3 (cB-Sigma)Emerging | Independent | Go | Apache-2.0 | v0.3.0 11 Oct 2026 | master, outstation | Active | 0 |
| nfm-dnp3 | Independent | Python | MIT | 1.0.1 6 Feb 2026 | master | Active | 0 |
| yadnp3Emerging | Derived | C++, Python | Apache-2.0 | 3.2.1.4 19 Oct 2026 | master, outstation | Active | 0 |
| pydnp3 | Derived | Python | Apache-2.0 | 0.1.0 7 Jun 2018 | master, outstation | Quiet | 37 |
| dnp3-python (VOLTTRON) | Derived | Python | Apache-2.0 | No release | master, outstation | Slowing | 20 |
| dnp3 (Dart and Flutter)Emerging | Derived | Dart | MIT | 0.3.2 12 Oct 2026 | master, outstation | Active | 0 |
| dnp3 (Green Energy Corp) | Legacy | C++ | Apache-2.0 | 1.0.0 Git tag | master, outstation | Quiet | 108 |
| Triangle MicroWorks DNP3 libraries | Commercial | C, C# | Commercial | 3.34 Vendor release notes | master, outstation | Vendor product | – |
| FreyrSCADA DNP3 | Commercial | C, C++, C#, Python | Commercial | 21.6.18 19 Jan 2026 | master, outstation | Vendor product | – |
| JPEmbedded DNP3 Library | Commercial | C++ | Commercial | No release | master, outstation | Vendor product | – |
| Beanit DNP3 | Commercial | Java | Commercial | No release | master, outstation | Vendor product | – |
| CODESYS DNP3 SL | Commercial | Commercial | 2.0.1.0 4 Aug 2026 | outstation | Vendor product | – | |
| go-dnp3OT FabricEmerging | Independent | Go | MIT | v1.3.1 20 Oct 2026 | master, outstation | Active | 0 |
| Envoy (ANU) | Independent | Python | MIT | v2.5.0 18 Sept 2026 | server | Active | 27 |
| GridAPPS-D serverEmerging | Independent | Go | Battelle BSD | v0.18.0 21 Oct 2026 | server | Active | 0 |
| GridAPPS-D clientEmerging | Independent | Go | Battelle BSD | v0.1.0 21 Oct 2026 | client | Active | 0 |
| py20305 (DER Security)Emerging | Independent | Python | Apache-2.0 | 0.16.0 21 Oct 2026 | client | Active | 4 |
| sep2_client | Independent | Rust | MIT OR Apache-2.0 | 0.1.0 19 Mar 2024 | client | Active | 23 |
| open-dynamic-export | Independent | TypeScript | MIT | v0.20.0 16 Jul 2026 | client | Active | 54 |
| VOLTTRON 2030.5 agent | Independent | Python | Apache-2.0 | 9.2.0 15 Oct 2026 | client | Active | 501 |
| aio2030dot5Emerging | Independent | Python | Apache-2.0 | 0.4.0 18 Oct 2026 | client | Active | 0 |
| gridappsd-2030_5 | Independent | Python | Apache-2.0 | No release | server | Slowing | 2 |
| envoy-schema | Derived | Python | MIT | 2.7.0 18 Sept 2026 | – | Active | 14 |
| CACTUS client | Derived | Python | MIT | 1.3.3 15 Oct 2026 | client | Active | 3 |
| CACTUS runner | Derived | Python | MIT | v2.10.0 24 Sept 2026 | server | Active | 7 |
| EPRI IEEE 2030.5 Client | Legacy | C | BSD-3-Clause | v0.2.11 25 Jul 2018 | client | Quiet | 95 |
| Kitu Spark | Commercial | Commercial | No release | client | Vendor product | – | |
| QualityLogic test system | Commercial | Commercial | No release | client, server | Vendor product | – | |
| go-ieee20305OT FabricEmerging | Independent | Go | MIT | v0.5.2 23 Oct 2026 | client, server | Active | 0 |
No implementation matches these filters.
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.