OpenPLC
The most widely used open source stack in industrial automation.
A modern IEC 61131-3 IDE, a production runtime and the compiler that connects them.
- 2014
- Open source since
- 1M+
- Downloads
- 150+
- Countries
- IEC 61131-3
- Edition 3 support
Safe by design, not by obscurity
Public code since 2014, hardened by everyone who has ever deployed it.
Obscurity is not security
A closed runtime is not safer for being unreadable, only less examined. Its defects are still there, and the vendor is the only party who can look for them.
Auditable at the source
Your security team reads the code that runs your process, not a datasheet describing it. So can ours, and so can everyone else's.
Proven in the field
1M+ downloads in 150+ countries. More hardware, more edge cases and more abuse than any lab programme could reproduce.
Fixed in the open
Issues are reported, patched and reviewed in public. You can see what was wrong, when it was fixed and exactly what changed.
Three parts, one toolchain
You write logic in the Editor, StruC++ compiles it, and the Runtime executes it. Pick one to see it in detail.
Download the OpenPLC Editor
The open-source PLC programming environment for industrial automation. Available for Windows, macOS and Linux.
A PLC simulator is built in, so you can run and debug ladder, ST and FBD with a live debugger before any hardware is involved.
What's new
CoPilot in the editor
Autonomy CoPilot works in the editor too: it completes the code as you type, and in the chat you ask for what you need, it writes it, and you review and approve the result before it lands in your project.
Sign in with Autonomy Edge
Sign in with an Autonomy Edge account whenever you want to, pull the projects you keep there down into the editor, and keep your code versioned as you work.
Running from Source
Prerequisites
Git
Version control
Node.js x64
Version >= 20
Step by Step
1. Clone the repository
git clone https://github.com/Autonomy-Logic/openplc-editor.git cd openplc-editor
2. Install dependencies
npm install
3. Run the development server
npm run start:dev
The Structured Text compiler behind OpenPLC v4. Full IEC 61131-3 Edition 3, compiled to C++17 you can actually read.
Structured Text becomes idiomatic C++17 with real classes, virtual methods and templates, so you can debug it, test it and drop it into an existing C++ project.
IEC 61131-3 Edition 3
A broad subset of Edition 3 plus common CODESYS extensions: POINTER TO, typed literals and 64-bit types, with direct CODESYS library import.
Real object orientation
Classes, virtual methods, EXTENDS and IMPLEMENTS, access modifiers, abstract and final declarations, and properties with GET and SET accessors.
Unit tests written in ST
A built-in testing framework with SETUP and TEARDOWN, mocking, assertions and time advancement. No PLC hardware required to run them.
Interactive REPL
Step through a compiled program, set inputs, inspect variables and read the ST and the generated C++ side by side.
Standard library
Over 80 mathematical and utility functions, plus timers, counters and edge detectors implemented in ST and compiled like your own code.
Zero runtime dependencies
A single-binary compiler and a header-only C++ runtime that builds with g++, clang++ or MSVC.
Licensing
The compiler is GPL-3.0. The C++ runtime and standard libraries are GPL-3.0 with a Runtime Library Exception, so programs you compile can be distributed under any license you choose.
Modern Architecture
Completely redesigned architecture built for modern industrial automation needs.
Real-time Execution
SCHED_FIFO priority scheduling delivers deterministic scan cycles for reliable control.
WebSocket Debug
Secure WebSocket debug interface enables real-time variable inspection and forcing.
Plugin System
Extensible plugin system supports both Python and C/C++ plugins for hardware I/O and ICS protocols.
Multi-architecture
If it can run Linux, it can run OpenPLC Runtime. Full multi-architecture support.
Security Built-in
TLS encryption for all communications and JWT-based authentication from the ground up.
The best of both worlds
Open source to learn, test and develop on. The Autonomy Edition when it has to run a plant.
Community Edition
For learning, testing and development. The same runtime the community has run for a decade.
- Full source code, no feature gating
- MIT for the runtime, GPL-3.0 for the editor and the compiler: use, modify and redistribute
- Support through the community forum
- Widely used for research, teaching and development
Autonomy Edition
For mission-critical production: security built to IEC 62443, proprietary drivers and industrial protocols, and support behind it.
- Commercial and production use
- Built to the IEC 62443-4-1 and IEC 62443-4-2 security standards
- Proprietary device drivers and industrial communication protocols
- Commercial support and maintenance from Autonomy
Installation
Choose the installation method that best fits your environment.
Native Linux Installation
For the best performance on Linux systems, install the runtime natively.
Clone and install
git clone https://github.com/Autonomy-Logic/openplc-runtime.git cd openplc-runtime sudo ./install.sh
The installation script automatically detects your Linux distribution, installs all required dependencies, creates Python virtual environments, compiles the runtime, and creates a systemd service that automatically starts and manages the runtime.
Once installed, the runtime listens on port 8443 for connections from the OpenPLC Editor.
Managing the Runtime Service
Check status
sudo systemctl status openplc-runtime.service
Start
sudo systemctl start openplc-runtime.service
Stop
sudo systemctl stop openplc-runtime.service
Restart
sudo systemctl restart openplc-runtime.service
Where the Editor fits
The same toolchain runs in four places. The Editor is the one you install and run yourself; Autonomy Node, Autonomy Edge and Edge on-prem run it somewhere else.
| OpenPLC EditorInstalled on your computer | Autonomy NodeServed by the device | Autonomy EdgeHosted in the cloud | Edge on-premHosted on your own hardware | |
|---|---|---|---|---|
| Where the IDE runs | On your computer | On the device | In the cloud | On your own infrastructure |
| PLCs are independent of the IDE | Yes | No | Yes | Yes |
| Install on your computer | Yes | No | No | No |
| Needs internet access | No | No | Yes, only for management | No |
| Project storage and version history | Partial | Partial | Yes | Yes |
| Teams and granular permissions | No | Partial | Yes | Yes |
| Fleet-wide deployment | No | No | Yes | Yes |
| AI assistance | Yes | Partial | Yes | Yes |
Still running OpenPLC v3
OpenPLC v3 is discontinued. There are no further v3 releases and no further fixes. If you still need v3, its legacy documentation and source code are available in the v3 archive below.
Go to v3 archive

