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
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
| 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.16 25 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.27.0 26 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 |
| iec60870 (cB-Sigma)Emerging | Independent | Go | Apache-2.0 | v0.3.0 11 Oct 2026 | client, server | Active | – |
| go-iec104OT FabricEmerging | Independent | Go | MIT | v0.0.5 26 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.6 28 Oct 2026 | client, server | Active | 3 |
| iec61850-rustEmerging | Independent | Rust | MIT OR Apache-2.0 | 0.2.0 5 Sept 2026 | client, server | Active | – |
| go-iec61850OT Fabric | Independent | Go | MIT | v1.2.1 28 Oct 2026 | client, server | Active | 0 |
| go-mmsOT Fabric | Derived | Go | MIT | v1.2.1 28 Oct 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.5.0 29 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 |
| go-ethernetipOT FabricEmerging | Independent | Go | MIT | v0.3.1 26 Oct 2026 | scanner, adapter, client | Active | 0 |
| OpENer | Independent | C | BSD-style (OpENer) | v2.3 25 Mar 2019 | adapter | Active | 863 |
| EIPScanner | Independent | C++ | MIT | 1.3.0 24 Jun 2021 | scanner | Slowing | 318 |
| pycomm3 | Independent | Python | MIT | 1.2.16 22 Dec 2025 | client | Active | 514 |
| cpppo | Independent | Python | GPL-3.0 +commercial | 5.2.5 18 Feb 2025 | client, adapter | Slowing | 391 |
| libplctag | Independent | C | MPL-2.0 OR LGPL-2.0-or-later | v2.7.2 9 Sept 2026 | client | Active | 905 |
| libplctag.NET | Derived | C# | MPL-2.0 | 1.5.2 13 Jul 2024 | client | Active | 298 |
| pylogix | Independent | Python | Apache-2.0 | 1.1.6 1 Sept 2026 | client | Active | 733 |
| gologix | Independent | Go | MIT | No release | client, adapter | Active | 74 |
| go-ethernet-ip (loki-os) | Independent | Go | WTFPL | No release | client | Quiet | – |
| rseip | Independent | Rust | MIT | 0.3.1 14 Nov 2022 | client | Quiet | 67 |
| ethernet-ip (Node.js) | Independent | TypeScript | MIT | 2.0.0 16 Apr 2026 | client | Active | 295 |
| st-ethernet-ip | Derived | JavaScript | MIT | 2.7.5 21 Apr 2025 | client, scanner | Slowing | 47 |
| EEIP.NET | Independent | C# | MIT | 1.6.0.26419 22 May 2020 | scanner, client | Active | 293 |
| EPICS ether_ip | Independent | C | EPICS Open License (ORNL) | ether_ip-3-10 19 Feb 2026 | client | Active | 50 |
| etherip (Java) | Independent | Java | EPL-1.0 | V1.0 20 Feb 2014 | client | Slowing | 134 |
| pycomm | Legacy | Python | MIT | 1.0.8 1 Nov 2015 | client | Quiet | 158 |
| RTA EtherNet/IP | Commercial | C | Commercial | No release | adapter, scanner | Vendor product | – |
| Hilscher netX | Commercial | Commercial | No release | scanner, adapter | Vendor product | – | |
| Pyramid Solutions ESDK | Commercial | Commercial | No release | scanner | Vendor product | – | |
| CODESYS EtherNet/IP | Commercial | IEC 61131-3 | Commercial | No release | scanner, adapter | Vendor product | – |
| Beckhoff TF6281 | Commercial | Commercial | No release | scanner | Vendor product | – | |
| go-profinetOT FabricEmerging | Independent | Go | MIT | v0.6.0 29 Oct 2026 | IO-Controller, IO-Device | Active | 0 |
| p-net | Independent | C | GPL-3.0-only +commercial | public/v1.0.2 23 Apr 2025 | IO-Device | Active | 599 |
| pnio-rsEmerging | Independent | Rust | MIT OR Apache-2.0 | 0.1.0 31 Aug 2026 | IO-Device | Active | 7 |
| profinet-py | Independent | Python | GPL-3.0-only +commercial | 0.6.6 7 Oct 2026 | IO-Controller, DCP tool | Active | 14 |
| pnio-dcp | Independent | Python | MIT | 1.2.0 17 Jan 2024 | DCP tool | Slowing | – |
| OpenPNIOEmerging | Independent | C | MIT | No release | IO-Device | Active | 0 |
| ProfinetTools | Independent | C# | MIT | 1.0.17 30 Jan 2021 | DCP tool | Slowing | 82 |
| OpenProfinet | Independent | C++ | GPL-3.0 | v0.9.2 2 Nov 2021 | DCP tool | Quiet | 21 |
| profinetdcp (Node.js) | Independent | C++, JavaScript | MIT | 1.0.7 30 Apr 2021 | DCP tool | Quiet | 11 |
| profinet-rsEmerging | Derived | Rust | GPL-3.0-only | v0.6.0 7 Oct 2026 | IO-Controller, DCP tool | Active | 0 |
| profinet (alfredkrohmer) | Legacy | Python | None stated | No release | DCP tool | Quiet | 147 |
| PI Community Stack | Commercial | C | PI members only (PNO Community Source Code License) | v3.0.0 PI | IO-Device | Vendor product | – |
| Siemens PN DevKits | Commercial | C | Commercial | No release | IO-Device | Vendor product | – |
| Hilscher netX | Commercial | Commercial | No release | IO-Controller, IO-Device | Vendor product | – | |
| Softing PROFINET | Commercial | Commercial | No release | IO-Controller, IO-Device | Vendor product | – | |
| Phoenix Contact PNC SDK | Commercial | Commercial | 3.91 Phoenix Contact | IO-Controller | Vendor product | – | |
| CODESYS PROFINET | Commercial | IEC 61131-3 | Commercial | No release | IO-Controller, IO-Device | Vendor product | – |
| Beckhoff TF6271 | Commercial | Commercial | No release | IO-Controller | Vendor product | – | |
| go-canbusOT FabricEmerging | Independent | Go | MIT | v0.7.0 29 Oct 2026 | bus access, ISO-TP, database tools | Active | 0 |
| Linux SocketCAN | Independent | C | GPL-2.0-only | v7.3 18 Oct 2026 | bus access, ISO-TP | Active | – |
| can-utils | Independent | C | GPL-2.0-only OR BSD-3-Clause | v2025.01 24 Jan 2025 | analyzer, ISO-TP | Active | 2.9k |
| python-can | Independent | Python | LGPL-3.0-only | 4.6.1 12 Aug 2025 | bus access, analyzer | Active | 1.6k |
| socketcan-rs | Independent | Rust | MIT | 4.0.0 5 Sept 2026 | bus access | Active | 210 |
| Scapy | Independent | Python | GPL-2.0-only | 2.8.0 2 Oct 2026 | analyzer, ISO-TP | Active | 12.6k |
| python-can-isotp | Independent | Python | MIT | 2.0.7 14 May 2025 | ISO-TP | Active | 315 |
| cantools | Independent | Python | MIT | 45.1.2 29 Oct 2026 | database tools, analyzer | Active | 2.3k |
| canmatrix | Independent | Python | BSD-2-Clause | 1.3.3 21 Oct 2026 | database tools | Active | 1.1k |
| can-go (Einride) | Independent | Go | MIT | v0.17.0 27 Feb 2026 | bus access, database tools | Active | 240 |
| can (brutella) | Independent | Go | MIT | v0.0.2 20 May 2019 | bus access | Quiet | 229 |
| JavaCAN | Independent | Java | MIT | 3.5.3 21 Oct 2026 | bus access, ISO-TP | Active | 69 |
| SocketCANSharp | Independent | C# | BSD-3-Clause | 0.13.0 22 Feb 2025 | bus access, ISO-TP | Slowing | 84 |
| node-can | Independent | C++, JavaScript | MIT | 4.3.2 3 Oct 2026 | bus access, database tools | Active | 245 |
| opendbc | Independent | Python, C++ | MIT | 0.3.1 22 Apr 2026 | database tools | Active | 3.4k |
| can-dbc | Independent | Rust | MIT OR Apache-2.0 | 10.0.0 15 Jul 2026 | database tools | Active | 111 |
| isotp-c | Independent | C | MIT | No release | ISO-TP | Quiet | 291 |
| SavvyCAN | Independent | C++ | MIT | V220 8 May 2025 | analyzer | Active | 1.8k |
| Zephyr CAN | Independent | C | Apache-2.0 | v4.5.0 28 Oct 2026 | bus access, ISO-TP | Active | – |
| Caring Caribou | Derived | Python | GPL-3.0 | 0.6 28 Mar 2024 | analyzer | Active | 951 |
| can-isotp (module) | Legacy | C | GPL-2.0 | No release | ISO-TP | Quiet | 289 |
| Vector XL Driver Library | Commercial | C, C# | Proprietary freeware | 26.30.16 23 Jul 2026 | bus access | Vendor product | – |
| PEAK PCAN-Basic | Commercial | C++, C#, Java, Python | Proprietary freeware | No release | bus access | Vendor product | – |
| Kvaser CANlib SDK | Commercial | C, C#, Python | Proprietary freeware | No release | bus access | Vendor product | – |
| go-canopenOT FabricEmerging | Independent | Go | MIT | v0.3.1 30 Oct 2026 | master, device, SDO client, SDO server | Active | 0 |
| CANopenNode | Independent | C | Apache-2.0 | v4.1 22 Nov 2025 | device, master, SDO client, SDO server | Active | 2k |
| Lely CANopen | Independent | C, C++ | Apache-2.0 | v2.3.5 1 Aug 2024 | master, device, SDO client, SDO server | Active | 46 |
| python canopen | Independent | Python | MIT | 2.4.1 5 Aug 2025 | master, device, SDO client, SDO server | Active | 569 |
| CanFestival | Independent | C, Python | LGPL-2.1 | No release | master, device | Active | 14 |
| Embedded Office CANopen | Independent | C | Apache-2.0 | v4.4.0 21 Aug 2022 | device | Quiet | 470 |
| gocanopen | Independent | Go | MIT | v2.1.1 7 Oct 2026 | master, device, SDO client, SDO server | Active | 16 |
| node-canopen | Independent | JavaScript | MIT | 6.2.1 25 Mar 2025 | device, master | Slowing | 39 |
| zencanEmerging | Independent | Rust | MPL-2.0 | 0.0.5 5 Sept 2026 | device, client tools | Active | 47 |
| canopen-rsEmerging | Independent | Rust | MIT OR Apache-2.0 | 0.6.1 2 Aug 2026 | device, master, SDO client, SDO server | Active | 2 |
| oze-canopen | Independent | Rust, Python | Apache-2.0 | 0.1.0 16 Mar 2025 | master, sniffer | Slowing | 13 |
| CANopenTerm | Independent | C | MIT | v2.04 25 Sept 2026 | analyzer, master tool | Active | 80 |
| CANopenEditor | Independent | C# | GPL-3.0 | v4.2.3 29 Nov 2024 | EDS tools | Active | 264 |
| ros2_canopen | Derived | C++ | Apache-2.0 | 0.3.4 24 May 2026 | master | Active | 292 |
| angelodlfrtr go-canopen | Derived | Go | None stated | v0.0.5 23 Feb 2022 | master | Slowing | – |
| ros_canopen | Legacy | C++ | LGPL-3.0 | 0.8.5 22 Sept 2020 | master | Slowing | 378 |
| emotas CANopen | Commercial | C | Commercial | No release | device, master | Vendor product | – |
| port CANopen Library | Commercial | C | Commercial | No release | device, master | Vendor product | – |
| Ixxat CANopen Master | Commercial | C#, C++, LabVIEW | Commercial | No release | master | Vendor product | – |
| MicroCANopen Plus | Commercial | C | Commercial | No release | device, manager add-on | Vendor product | – |
| CODESYS CANopen | Commercial | IEC 61131-3 | Commercial | No release | manager, device | Vendor product | – |
| Eclipse Tahu (Java) | Independent | Java | EPL-2.0 | 1.0.21 27 Jul 2026 | edge node, host application | Active | 266 |
| Tahu sparkplug-client | Independent | JavaScript | EPL-2.0 | 3.2.4 6 Sept 2023 | edge node | Active | 266 |
| Eclipse Tahu C | Independent | C | EPL-2.0 | No release | payload codec | Active | 266 |
| Eclipse Tahu Python | Independent | Python | EPL-2.0 | 0.1.2 20 Jan 2022 | payload codec | Active | 266 |
| pysparkplug | Independent | Python | Apache-2.0 | 0.6.1 10 May 2025 | edge node, application | Slowing | 24 |
| SparkplugNet | Independent | C# | MIT | 1.4.1 18 Aug 2026 | edge node, host application | Active | 96 |
| sradEmerging | Independent | Rust | MIT OR Apache-2.0 | 0.5.0 8 May 2026 | edge node, host application | Active | 10 |
| sparkplughost | Independent | Go | Apache-2.0 | v0.4.0 13 Jul 2026 | host application | Active | 7 |
| HiveMQtt.SparkplugEmerging | Independent | C# | Apache-2.0 | 0.47.1 2 Sept 2026 | edge node, host application | Active | 96 |
| nautilus sparkplugEmerging | Independent | Go | Apache-2.0 | v0.18.0 15 Oct 2026 | edge node, host application | Active | 45 |
| Synapse | Independent | TypeScript | Apache-2.0 | 0.0.100 2 Apr 2026 | edge node, host application | Active | 1 |
| SparklerNetEmerging | Independent | C# | MIT | 0.9.7 11 Dec 2025 | host application | Active | 2 |
| PlugBEmerging | Independent | C# | Apache-2.0 | 2.0.1 15 Jun 2026 | edge node, host application | Active | 0 |
| go-sparkplugbOT FabricEmerging | Independent | Go | MIT (proto/: EPL-2.0) | v0.1.3 27 Oct 2026 | edge node, host application, application | Active | 0 |
| mqtt-spb-wrapper | Derived | Python | EPL-2.0 | 2.1.2 13 Jul 2025 | edge node, host application, application | Slowing | 25 |
| Node-RED Sparkplug Plus | Derived | JavaScript | ISC | 3.1.1 27 Aug 2026 | edge node, application | Active | 30 |
| sparkplug-rs | Derived | Rust | EPL-2.0 | 0.5.1 12 Jun 2025 | payload codec | Slowing | 3 |
| Cirrus Link MQTT Modules | Commercial | Commercial | No release | edge node, host application, broker | Vendor product | – | |
| HiveMQ Platform | Commercial | Commercial | No release | broker | Vendor product | – | |
| Canary MQTT Collector | Commercial | Commercial | No release | host application | Vendor product | – | |
| Proficy Historian | Commercial | Commercial | No release | host application | Vendor product | – | |
| EMQ NeuronEX | Commercial | Commercial | No release | edge node | Vendor product | – | |
| Opto 22 groov | Commercial | Commercial | No release | – | Vendor product | – | |
| go-knxOT FabricEmerging | Independent | Go | MIT | v0.4.2 30 Oct 2026 | client, server, router | Active | 0 |
| Calimero | Independent | Java | GPL-2.0 with Classpath exception | 2.6 26 Jun 2025 | client, server, router | Active | 164 |
| Calimero server | Derived | Java | GPL-2.0 with Classpath exception | v2.6 16 Jun 2025 | server, router | Active | 76 |
| Calimero tools | Derived | Java | GPL-2.0 with Classpath exception | v2.6 23 Jun 2025 | client, tools | Active | 38 |
| knxd | Independent | C++ | GPL-2.0 | 0.14.75 8 Jan 2026 | server, router, client | Active | 608 |
| xknx | Independent | Python | MIT | 4.0.0 15 Oct 2026 | client, router | Active | 349 |
| KNXUltimate | Independent | TypeScript | MIT | 6.3.1 28 Oct 2026 | client, router | Active | 42 |
| Home Assistant KNX | Derived | Python | Apache-2.0 | 2026.10.4 24 Oct 2026 | client | Active | – |
| openHAB KNX binding | Derived | Java | EPL-2.0 | 5.2.3 9 Oct 2026 | client, router | Active | – |
| node-red-contrib-knx-ultimate | Derived | JavaScript | MIT | 8.3.1 28 Oct 2026 | client | Active | 178 |
| knx-go | Independent | Go | MIT | No release | client, router | Discontinued | 113 |
| knx.js | Independent | JavaScript | MIT | 2.5.4 30 Mar 2024 | client, router | Slowing | 15 |
| knx-rsEmerging | Independent | Rust | GPL-3.0 | 0.12.0 29 Oct 2026 | client, router, device | Active | 6 |
| knustEmerging | Independent | Rust | MIT | 0.2.0 19 Jul 2026 | client, router, server | Active | 0 |
| KNXyzEmerging | Independent | Rust, Python, TypeScript | MIT | 0.0.8 24 Aug 2026 | client | Active | 3 |
| knx (thelsing) | Independent | C++ | GPL-3.0 | 1.4 6 Dec 2023 | device | Active | 350 |
| OpenKNX knx | Derived | C++ | GPL-3.0 | V2.4.0 14 Aug 2026 | device | Active | 32 |
| esp-knx-ip | Independent | C++ | MIT | 0.4.0 24 Feb 2018 | device | Quiet | 151 |
| KNX.net | Independent | C# | MIT | 1.1.10 30 Jun 2018 | client, router | Quiet | 103 |
| linknx | Derived | C++ | GPL-2.0 | 0.0.1.39 22 Jul 2025 | client | Slowing | 50 |
| knxdclient | Derived | Python | Apache-2.0 | 1.2.0 23 Feb 2025 | client | Active | 14 |
| KNXmap | Independent | Python | GPL-3.0 | v0.10.0 28 Mar 2017 | scanner | Quiet | 122 |
| KNX Falcon SDK | Commercial | C# | Proprietary (KNX Association) | 6.4.8671 4 Mar 2026 | client | Vendor product | – |
| TAPKO KAIstack | Commercial | C | Commercial | No release | device | Vendor product | – |
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.