Skip to content

Repository files navigation

IronPLC

An open-source toolchain and runtime for IEC 61131-3, written in safe Rust.

IronPLC Integration IronPLC Deployment License: MIT

IronPLC is a compiler (ironplcc), runtime (ironplcvm), VS Code extension, browser playground, and MCP server for writing and running IEC 61131-3 programs on off-the-shelf hardware — no proprietary IDE required.

Quick Start

Install on Linux or macOS:

curl -fsSL https://www.ironplc.com/install.sh | sh

Or see the installation docs for Windows, Homebrew, and other options — or try it in the browser at playground.ironplc.com.

Then follow the quick start tutorial to write your first PLC program.

Capabilities

  • Compiler — parses and analyzes IEC 61131-3 Structured Text with a large and growing set of diagnostic checks
  • Runtime — executes compiled bytecode with task scheduling
  • VS Code extension — syntax highlighting, real-time diagnostics, build tasks, and a bytecode viewer
  • Multiple source formats — Structured Text (.st, .iec), PLCopen XML (.xml), and TwinCAT (.TcPOU, .TcGVL, .TcDUT)
  • AI agent support — an MCP server that lets tools like Claude call the IronPLC compiler
  • Interactive playground — try IronPLC in the browser with no install

What's in this repo

  • compiler/ — Rust workspace (compiler, runtime, MCP server, playground WASM)
  • integrations/vscode/ — VS Code extension
  • docs/ — Sphinx documentation site (ironplc.com)
  • playground/ — browser playground

Contributing

Contributions are very welcome. See CONTRIBUTING.md for details.

Contact

Create an issue to reach out about IronPLC.

Similar Projects

  • RuSTy - Structured text compiler written in Rust. RuSTy is further along but the LGPL and GPL licenses are difficult for industrial uses.
  • Structured Text language Support - Structured text language support for Visual Studio Code.
  • Beremiz - A Python-based PLC programming environment.
  • RoboPLC - A Rust framework for creating industrial control appliances
  • msr - A Rust library for industrial automation.
  • ethercat-rs - An experimental Rust automation toolbox using the IgH (Etherlab) EtherCAT master.
  • rustmatic - Rustmatic is a thought experiment on creating a PLC-like environment in Rust.

Trademarks

IronPLC is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by any third party. TwinCAT is a trademark of Beckhoff Automation GmbH & Co. KG. CODESYS is a trademark of CODESYS GmbH. Beremiz is a trademark of its respective owner. PLCopen is a trademark of PLCopen. EtherCAT is a registered trademark of Beckhoff Automation. All other trademarks are the property of their respective owners. References to these names in IronPLC and its documentation are descriptive (nominative) only — they identify file formats, compatibility modes, and related projects, and do not imply endorsement.

About

Prototype Rust-based SoftPLC

Topics

Resources

Code of conduct

Contributing

Stars

107 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages