<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dylan McCarthy</title>
    <description>The latest articles on DEV Community by Dylan McCarthy (@nodeblue).</description>
    <link>https://dev.to/nodeblue</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3883641%2F907ef43d-08ce-4385-af61-d1e1f505af1c.png</url>
      <title>DEV Community: Dylan McCarthy</title>
      <link>https://dev.to/nodeblue</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nodeblue"/>
    <language>en</language>
    <item>
      <title>Why We Parse Industrial Code Instead of Embedding It</title>
      <dc:creator>Dylan McCarthy</dc:creator>
      <pubDate>Sat, 15 Aug 2026 03:37:56 +0000</pubDate>
      <link>https://dev.to/nodeblue/why-we-parse-industrial-code-instead-of-embedding-it-5dko</link>
      <guid>https://dev.to/nodeblue/why-we-parse-industrial-code-instead-of-embedding-it-5dko</guid>
      <description>&lt;p&gt;Most of the industrial AI you have seen is a retrieval pipeline with a chat box on it. Chunk the manuals, embed them, stuff the top matches into a context window, let the model talk. It demos well. It falls apart the first time somebody asks a question where the answer depends on what a machine is doing right now.&lt;/p&gt;

&lt;p&gt;We are an applied research lab called Nodeblue, and the system we build is called Nexus. This is a writeup of the architectural decision at the center of it, which is that the language model is the smallest and least interesting part.&lt;/p&gt;

&lt;p&gt;The failure that set the design&lt;/p&gt;

&lt;p&gt;Here is the test that made the decision for us.&lt;/p&gt;

&lt;p&gt;Industrial control programs live in two places. There is the project archive, which is the file in source control, and there is the program actually running in the processor. Those drift, constantly, because engineers go online to fix a timer during a downtime event and do not always upload the change back. Anyone who has worked on a plant floor knows this. It is Tuesday.&lt;/p&gt;

&lt;p&gt;We took a real production controller with exactly that situation, a live edit present in the processor and absent from the archive, and asked eleven frontier models which version of the routine was executing. We gave them the export, the docs, the context, everything a careful human would get.&lt;/p&gt;

&lt;p&gt;All eleven answered confidently. All eleven were wrong. Not garbled, not obviously broken. They read the export correctly, described the rung correctly, and then told us the archived version was running, because the archived version was the only version they had ever seen.&lt;/p&gt;

&lt;p&gt;Then we put the same eleven models on top of our engine and asked again. All eleven got it right, cited to the rung.&lt;/p&gt;

&lt;p&gt;The models did not improve. They got access to a fact that lives in a processor rather than in a corpus. That is the entire lesson, and it generalizes past our domain: when a model is asked something it structurally cannot know, it does not abstain, it produces the most probable sentence. In a domain where the answer dispatches a human to a piece of equipment, that is the expensive kind of wrong.&lt;/p&gt;

&lt;p&gt;What sits under the model&lt;/p&gt;

&lt;p&gt;Four layers, roughly.&lt;/p&gt;

&lt;p&gt;Deterministic parsing. We do not embed control logic and hope similarity search finds the right rung. We parse it. Ladder, structured text, AOIs, UDTs, tag databases, device configs, into a resolved model where a tag reference is a real edge to a real definition, not a nearest neighbor. The same question resolves to the same cited answer on every run. Not usually. Every run. A system that is right most of the time is not one you hand a maintenance tech at two in the morning with the line down.&lt;/p&gt;

&lt;p&gt;So far that is 4,386 real production files parsed with zero parse errors, spanning Rockwell, Siemens, Ignition, and the CODESYS family. Real exports off live floors, including files too large to open in any chat interface at all.&lt;/p&gt;

&lt;p&gt;Live access. OPC UA reads and subscriptions against the running controller, read only, inside the plant, under the site's own network rules. This is the layer that no amount of context window replaces, and it is also the layer that is genuinely hard for reasons that have nothing to do with AI: it is physical, on premise, safety gated work.&lt;/p&gt;

&lt;p&gt;Correlation. A signal on an operator screen has a path. Screen binding to OPC path to controller tag to the rung where the value is born. The correlation engine walks that path in both directions, so when something misbehaves you get where the state started, not just where it surfaced. Trace a PackWeight from the display back through the multiply on rung 14 to the load cell, and forward to the timer on rung 31 that latched the fault.&lt;/p&gt;

&lt;p&gt;Citation. Every claim carries the rung, tag, or document it came from. This is not a UX nicety, it is the thing that makes the output usable by a professional. An answer you cannot verify is a rumor with good grammar.&lt;/p&gt;

&lt;p&gt;The model sits on top of all of that and does what models are good at, which is turning a resolved, grounded, cited result into a sentence a human can read. Swap it out and the system still works.&lt;/p&gt;

&lt;p&gt;The efficiency side effect&lt;/p&gt;

&lt;p&gt;We did not set out to optimize tokens, but resolving the graph properly means you send the model the six things that matter instead of the whole export and a prayer.&lt;/p&gt;

&lt;p&gt;That works out to roughly seventeen times fewer tokens per answer and about nine and a half times faster than pointing a frontier model at the raw export and asking it to grep. Same cited answer on every run, which grepping does not give you.&lt;/p&gt;

&lt;p&gt;Breadth without a rewrite per vendor&lt;/p&gt;

&lt;p&gt;The obvious problem with parsing rather than embedding is that you now own a parser per vendor, and industrial automation has a lot of vendors.&lt;/p&gt;

&lt;p&gt;We handle the big ones directly: Studio 5000 and RSLogix 5000, Siemens TIA Portal and STEP 7, Ignition, and the CODESYS family. Current IDEs and the legacy ones still running plants, because the plants running twenty year old code are exactly the plants with the worst comprehension problem.&lt;/p&gt;

&lt;p&gt;For the long tail we lean on PLCopen XML, which gets one parser to more than 500 OEM brands. A vendor becomes a module, not a rewrite. That tradeoff is the only reason the parsing approach is tractable at all.&lt;/p&gt;

&lt;p&gt;Checking ourselves&lt;/p&gt;

&lt;p&gt;Benchmarks you write yourself are marketing. For the generated documentation we hired three independent controls engineers with no stake in the outcome and had them grade 137 documents rung by rung against the running logic. Zero errors found.&lt;/p&gt;

&lt;p&gt;One reviewer noted that even through nested AOIs it never lost track of a variable, and that this was the part he had not expected it to get right. Nesting is where these tools usually break, so that is the correct thing to have been skeptical about.&lt;/p&gt;

&lt;p&gt;Open where it counts&lt;/p&gt;

&lt;p&gt;The early connectors the engine was built on are public under MIT at github.com/Nodeblue-AI. The ones shipping in Nexus today have gone well past them, but the originals are still how we show we are not a black box: you can read exactly how we handle SCADA access, PLC parsing, and cross system correlation.&lt;/p&gt;

&lt;p&gt;If you work in this space and you think our parsing approach is wrong, the code is right there. We would rather be checkable than impressive.&lt;/p&gt;

&lt;p&gt;What the lab is actually after&lt;/p&gt;

&lt;p&gt;Nodeblue is an independent applied research lab. The research question is how machines come to understand and act inside physical environments, and it runs along four lines: operational intelligence, knowledge and memory, collaboration between humans and agents, and autonomy.&lt;/p&gt;

&lt;p&gt;Nexus is the first system that came out of that. It holds a persistent on premise memory of an operation and keeps building it, so every export, fault, answer, and correction sharpens the next one, and it flags a source the moment it goes stale. The direction from here is one view across every controller and server in a facility, then every device on the wire with document versus logic verification across a whole site.&lt;/p&gt;

&lt;p&gt;The broader bet, and the part I think transfers outside industrial work: agents acting in physical environments need a substrate that is deterministic, live, and citable. The reasoning was never the bottleneck. Grounding was.&lt;/p&gt;

&lt;p&gt;If you build in this space, I would like to hear where you think this breaks. The connectors are on GitHub and we read every message.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>opensource</category>
      <category>iot</category>
    </item>
    <item>
      <title>AI Agents in Industrial Automation: Unlocking the Next Era of American Manufacturing</title>
      <dc:creator>Dylan McCarthy</dc:creator>
      <pubDate>Fri, 17 Apr 2026 05:04:25 +0000</pubDate>
      <link>https://dev.to/nodeblue/ai-agents-in-industrial-automation-unlocking-the-next-era-of-american-manufacturing-12od</link>
      <guid>https://dev.to/nodeblue/ai-agents-in-industrial-automation-unlocking-the-next-era-of-american-manufacturing-12od</guid>
      <description>&lt;p&gt;For decades, industrial automation has been one of the most technically advanced yet structurally stagnant industries in the world. &lt;a href="https://www.nodeblue.ai" rel="noopener noreferrer"&gt;Nodeblue&lt;/a&gt; is looking to change that.&lt;/p&gt;

&lt;p&gt;Factories run on systems that are extraordinarily reliable, highly deterministic, and often decades old. PLCs, SCADA platforms, industrial networks, and safety systems form the backbone of modern manufacturing, logistics, energy, and critical infrastructure. Yet despite how advanced these systems are in function, the software ecosystem around them remains deeply fragmented, vendor-locked, and resistant to innovation.&lt;/p&gt;

&lt;p&gt;This is exactly where AI agents have the potential to create one of the largest industrial revolutions of the next decade.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Critical Infrastructure Built as Isolated Layers
&lt;/h2&gt;

&lt;p&gt;Most industrial environments operate as layered systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PLC Logic&lt;/strong&gt; — ladder logic, structured text, AOIs, routines, tags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network Layer&lt;/strong&gt; — EtherNet/IP, CIP, OPC UA, fieldbus communication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SCADA / HMI Layer&lt;/strong&gt; — alarms, visualization, operator controls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MES / Historian Layer&lt;/strong&gt; — reporting, production data, analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each layer works exceptionally well in isolation.&lt;/p&gt;

&lt;p&gt;The problem is that these layers rarely communicate in a way that supports fast troubleshooting or deep system understanding.&lt;/p&gt;

&lt;p&gt;An alarm shown in SCADA may be caused by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a failed permissive in PLC logic&lt;/li&gt;
&lt;li&gt;a safety interlock&lt;/li&gt;
&lt;li&gt;a dropped CIP connection&lt;/li&gt;
&lt;li&gt;a remote I/O fault&lt;/li&gt;
&lt;li&gt;a latched bit buried inside an AOI several layers deep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tracing that fault path today often requires a controls engineer to manually:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;locate the alarm source in SCADA&lt;/li&gt;
&lt;li&gt;identify the underlying OPC tag&lt;/li&gt;
&lt;li&gt;map the tag to a PLC address&lt;/li&gt;
&lt;li&gt;cross-reference every write condition&lt;/li&gt;
&lt;li&gt;inspect permissives&lt;/li&gt;
&lt;li&gt;verify network state&lt;/li&gt;
&lt;li&gt;inspect hardware status LEDs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This routinely takes &lt;strong&gt;20–40 minutes&lt;/strong&gt;, and in complex systems much longer.&lt;/p&gt;

&lt;p&gt;During that time, production is down.&lt;/p&gt;




&lt;h2&gt;
  
  
  What AI Agents Change
&lt;/h2&gt;

&lt;p&gt;The breakthrough is not autonomous control.&lt;/p&gt;

&lt;p&gt;The breakthrough is &lt;strong&gt;machine-speed understanding of legacy industrial systems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An AI agent with structured access to SCADA projects, OPC mappings, and PLC logic can perform deterministic fault tracing in seconds.&lt;/p&gt;

&lt;p&gt;In one recent case, a conveyor sat in fault overnight.&lt;/p&gt;

&lt;p&gt;Operators repeatedly attempted resets through SCADA, but the alarm would not clear.&lt;/p&gt;

&lt;p&gt;The AI agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;traced the alarm through Ignition&lt;/li&gt;
&lt;li&gt;resolved the OPC tag path&lt;/li&gt;
&lt;li&gt;followed the tag into PLC ladder logic&lt;/li&gt;
&lt;li&gt;located the exact rung blocking the reset&lt;/li&gt;
&lt;li&gt;traced the blocking permissive upstream&lt;/li&gt;
&lt;li&gt;identified a Safety I/O module with a lost CIP connection&lt;/li&gt;
&lt;li&gt;found two additional conveyors affected by the same permissive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After one confirming operator input — &lt;em&gt;“the module has a red NET1 fault LED”&lt;/em&gt; — the agent returned the exact root cause and corrective steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total time: 28 seconds&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Traditional troubleshooting time: 20–40 minutes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not theoretical.&lt;/p&gt;

&lt;p&gt;This is the beginning of real industrial reasoning systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Legacy Industrial Systems Need This
&lt;/h2&gt;

&lt;p&gt;Industrial automation has historically been trapped inside vendor ecosystems.&lt;/p&gt;

&lt;p&gt;Platforms like Rockwell Studio 5000 and Ignition are powerful, but they are fundamentally siloed.&lt;/p&gt;

&lt;p&gt;The logic lives in one place.&lt;/p&gt;

&lt;p&gt;The alarms live somewhere else.&lt;/p&gt;

&lt;p&gt;The network diagnostics live somewhere else.&lt;/p&gt;

&lt;p&gt;The operator context lives somewhere else.&lt;/p&gt;

&lt;p&gt;Humans bridge those layers manually.&lt;/p&gt;

&lt;p&gt;AI agents can bridge them computationally.&lt;/p&gt;

&lt;p&gt;This is the true unlock:&lt;br&gt;
&lt;strong&gt;transforming fragmented industrial infrastructure into a unified reasoning graph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once logic, tags, cross-references, alarms, and network state are represented as structured data, the system becomes machine-readable.&lt;/p&gt;

&lt;p&gt;At that point, an agent can reason across the entire control stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  Breaking Vendor Lock-In
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges in industrial modernization is vendor lock-in.&lt;/p&gt;

&lt;p&gt;For decades, the industry has normalized closed ecosystems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;proprietary project formats&lt;/li&gt;
&lt;li&gt;proprietary communications tooling&lt;/li&gt;
&lt;li&gt;limited interoperability&lt;/li&gt;
&lt;li&gt;poor observability across vendors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This slows innovation dramatically.&lt;/p&gt;

&lt;p&gt;Open interfaces such as MCP servers fundamentally change this.&lt;/p&gt;

&lt;p&gt;A well-designed architecture can expose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;full L5X logic structures&lt;/li&gt;
&lt;li&gt;tag databases&lt;/li&gt;
&lt;li&gt;routine cross-references&lt;/li&gt;
&lt;li&gt;live SCADA state&lt;/li&gt;
&lt;li&gt;OPC mappings&lt;/li&gt;
&lt;li&gt;network health&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to &lt;strong&gt;any compliant AI agent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This makes the intelligence layer agent-agnostic and infrastructure-local.&lt;/p&gt;

&lt;p&gt;That means the factory is no longer dependent on a single software vendor to innovate.&lt;/p&gt;

&lt;p&gt;This is one of the most important architectural shifts industrial software has seen in decades.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for American Manufacturing
&lt;/h2&gt;

&lt;p&gt;The global manufacturing landscape is changing rapidly.&lt;/p&gt;

&lt;p&gt;Countries like :contentReference[oaicite:2]{index=2} continue investing aggressively in industrial modernization, automation, and digital infrastructure.&lt;/p&gt;

&lt;p&gt;The United States cannot remain competitive by relying on brittle legacy workflows and locked-down tooling.&lt;/p&gt;

&lt;p&gt;We do not need to replace every PLC, every HMI, and every control cabinet.&lt;/p&gt;

&lt;p&gt;We need to make existing infrastructure &lt;strong&gt;intelligible, observable, and adaptable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI agents allow us to modernize the software intelligence layer without tearing out the physical infrastructure that already powers the economy.&lt;/p&gt;

&lt;p&gt;This is how existing plants become dramatically more efficient without billion-dollar rebuilds.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Opportunity: Human Amplification
&lt;/h2&gt;

&lt;p&gt;The most immediate value is not replacing controls engineers.&lt;/p&gt;

&lt;p&gt;It is multiplying their effectiveness.&lt;/p&gt;

&lt;p&gt;A senior controls engineer today may spend large portions of time on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fault tracing&lt;/li&gt;
&lt;li&gt;documentation lookup&lt;/li&gt;
&lt;li&gt;cross-reference searches&lt;/li&gt;
&lt;li&gt;root-cause validation&lt;/li&gt;
&lt;li&gt;repetitive diagnostics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are precisely the workflows AI agents excel at.&lt;/p&gt;

&lt;p&gt;This allows engineers to focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;system architecture&lt;/li&gt;
&lt;li&gt;process optimization&lt;/li&gt;
&lt;li&gt;controls strategy&lt;/li&gt;
&lt;li&gt;new line deployments&lt;/li&gt;
&lt;li&gt;safety improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is not workforce reduction.&lt;/p&gt;

&lt;p&gt;The result is &lt;strong&gt;engineering leverage&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One engineer becomes capable of supporting significantly more infrastructure with higher confidence and faster response times.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;The first phase is diagnostics and explainability.&lt;/p&gt;

&lt;p&gt;The next phase is much larger.&lt;/p&gt;

&lt;p&gt;AI agents will soon support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automated commissioning validation&lt;/li&gt;
&lt;li&gt;change impact analysis&lt;/li&gt;
&lt;li&gt;logic review and linting&lt;/li&gt;
&lt;li&gt;safety permissive verification&lt;/li&gt;
&lt;li&gt;maintenance copilots&lt;/li&gt;
&lt;li&gt;predictive fault propagation analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually, factories will operate with continuously reasoning infrastructure layers that understand their own control logic in real time.&lt;/p&gt;

&lt;p&gt;That future begins by making legacy systems machine-readable today.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Industrial automation has spent decades optimizing machines.&lt;/p&gt;

&lt;p&gt;The next revolution is optimizing &lt;strong&gt;system understanding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When machines can explain why they stopped, what dependency failed, and how to restore production in seconds, downtime drops and productivity scales.&lt;/p&gt;

&lt;p&gt;This is not just a better troubleshooting workflow.&lt;/p&gt;

&lt;p&gt;This is the foundation for the next generation of American industrial competitiveness.&lt;/p&gt;

&lt;p&gt;AI agents are not replacing industrial automation.&lt;/p&gt;

&lt;p&gt;They are finally making it fully observable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.nodeblue.ai" rel="noopener noreferrer"&gt;Nodeblue&lt;/a&gt; — Engineering-driven technology across software, industrial automation, and applied research.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>software</category>
      <category>techtalks</category>
    </item>
  </channel>
</rss>
