From the first byte: the ForgeIEC story

Affects: ForgeIEC Studio Anvil server (anvild) tongs-*

Revised in October 2026

This post describes the state of May 2026. In October 2026 it was brought up to date: matiec has been replaced, the security figures are unified, and the origin is described without a year.

The beginning β€” a fork of OpenPLC

ForgeIEC started as a fork of OpenPLC β€” the open PLC runtime by Thiago Alves and its contributors, written in C/C++ with a web-based configuration UI in Python/Flask.

OpenPLC offers a clear value: you can run IEC 61131-3 code on regular Linux hardware, without a commercial editor licence, without vendor lock-in. Modbus master, GPIO, Raspberry Pi support β€” all there.

What OpenPLC does not have: a serious editor. The web UI is fine for small projects, but at industrial complexity it falls behind.

OpenPLC continues to be developed by its community; ForgeIEC takes over that foundation and builds on it. ForgeIEC has since replaced the matiec compiler with an own, object-oriented-capable core that translates ST into C++ and also handles METHOD, INTERFACE and EXTENDS.


2026-03-01: The big rebuild begins

With commit 82780f7 on 1 March 2026 the next step arrives: a standalone C++/Qt6 editor is introduced into the repository. Native desktop application, no browser, no Python/Flask in the UI path anymore.

Same day, the next chunk: gRPC client in the editor, plus the backend is renamed to forgeiecd (commit 93ed9c9). The old HTTP web server gives way to a modern gRPC pipeline with streaming + protocol versioning.

The next days move fast:

  • 3 March β€” bus system, model/view refactor, F-prefix renames (commit dd85396)
  • 4 March β€” EtherCAT + Profibus bridges, CMake migration
  • 5 March β€” Hugo website added as submodule
  • 6 March β€” DEL β†’ Anvil: the shared-memory IPC subsystem gets its industrial name (commit 3fc636c)
  • 7 March β€” Forge Studio branding, bridge family renamed anvil-*, dirty-bit management, BusModel MVC

In one week a web-UI toolbox turns into a standalone desktop editor with modern architecture.


March–April 2026: the architecture consolidates

Several weeks of deep refactor work follow:

  • Debian packages + CPack (26 March) β€” no more manual install script
  • Multi-task scheduler (11 April) β€” IEC tasks now really run in parallel, pthread-based
  • Bus-panel merge (13 April) β€” separated views on the same model unified
  • -1416 LOC refactor (16 April) β€” FBusDeviceDialog removed, bus columns consolidated
  • FVariableBase + FLocatedVariable β†’ FVariable (26 April) β€” the central variable type is unified

Here happens what you as a user don’t see: the data model is rebuilt to carry real industrial complexity. FAddressPool as single source of truth, pool variables as the only container, old POU varlists only as mirrors.

This is the foundation that lets the AI layer operate reliably later β€” it sees a consistent model, not a collection of legacy data structures.


May 2026: security + AI

With the data model stable, the big-ticket sprints can land:

  • 2 May β€” per-variable safety flags (cluster A): force, monitor, HMI export gated individually per variable. This later becomes the force lock: locked three times β€” in codegen, in the runtime and in the editor; for the AI a fourth lock in the MCP server is added.
  • 8 May β€” MCP platform: spec written, sprint MCP-1 (prompts in QSettings).
  • 9 May β€” live diagnostic pipeline β€” FB-member resolution, FLiveValueStore lifecycle fix.
  • 10 May β€” headless mode + devloop CLI β€” for CI/build servers. codegen.deploy becomes scriptable.
  • 11 May β€” MCP-3.6: chat tab becomes internal MCP client.
  • 12 May β€” MCP-4a + 4b phases A–D: remote bind, bearer auth, trust store, mTLS, Caretaker model.

That completes the technical leap: ForgeIEC is no longer just an open IEC 61131-3 editor but a platform of its own with federation, AI integration and verifiable security layers.


Today, 13 May 2026: where we stand

The platform is split into seven building blocks, each with its own spec in the documentation/architecture/ directory of the source tree:

SubsystemSpecRole
ForgeIEC Studiomcp-platform-v1.mdIDE β€” editor + AI assistant + MCP server
Anvil server (anvild)anvil-platform-v2.mdPLC runtime + plug-in platform + online change
Anvil (IPC)(in anvil-platform-v2 Β§13)Zero-copy shared memory between subsystems
tongs- (bridges)*tongs-platform-v1.mdFieldbus plug-ins with fault model + FDD diag bits
Bus systembus-system-v1.mdSegments/devices/IEC access
Editor data modeleditor-data-v1.mdFAddressPool SSoT + .forge format
Codegencodegen-v1.mdown ST core β†’ C++

All specs RFC 2119 normative. Code + spec move together β€” every change passes through the same review process.


What ForgeIEC does differently

OthersForgeIEC
Proprietary PLC IDEsAGPL-3.0-or-later; your project (generated code, runtime API, libanvil) under Apache-2.0
Vendor lock-in for devicesManufacturer FDDs as first-class citizens
AI only as a code-completion plug-inAI as an equal MCP client with audit log
Force settings without protection layerForce locked three times (codegen, runtime, editor), a fourth lock for the AI
Monolithic runtimeModular bridge family with separate daemons
Closed-source binariesSigned packages from an automated CI; source code on request

Where it’s going

On the sprint plan:

  • Caretaker toggle UI in Preferences β€” today still QSettings editing
  • team.revoke_peer fully, team.rotate_cert, team.export_setup β€” last third of MCP-4b phase D
  • Anvil platform v2: online change during a running PLC cycle, plug-in architecture for custom boundary types
  • Hearth β€” the operator interface; available today as a preview over the Anvil bus
  • Tongs LoRaWAN (focus), then Tongs EtherCAT, Tongs Profibus, Tongs EtherNet/IP fully implemented

The common thread: an open, honest platform that can handle industrial reality β€” no marketing varnish, but load-bearing architecture decisions that live in the spec and are verifiable in the source code (access on request).


Read on

  • Architecture + Security β€” the depth tour for auditors
  • Download β€” all components via the APT repository
  • Source tree: ForgeIEC/forgeiec-studio in the Forgejo β€” access once your SSH public key is enabled
  • Earliest roots: OpenPLC by Thiago Alves β€” where it all began