Why Deterministic Graphs Beat Emergent Loops in Industrial Control
Note: This post has been rewritten under the May 2026 messaging. The original embedded-C piece no longer fits the platform's positioning — ForestHub is now a graph-first orchestration platform, and the engine interprets workflows at runtime rather than generating per-device code.
Every popular agent framework today — LangChain, OpenAI Agents SDK, Claude Code, n8n in its AI modes — shares a single design choice: the LLM's loop is the program. You give the LLM a system prompt, a pile of tools, and let it iterate until it decides it's done. Skills, hooks, sub-turns, steering, MCP plug-ins are all bolted onto that loop.
For a personal assistant, that's the right model. For industrial control, it's the wrong one. When the consequence of a tool call is a relay actuating, a setpoint changing, or a dose being delivered, "whatever the LLM decided" is not an acceptable answer to your auditor.
Four Properties Loop-First Can't Deliver Structurally
Industrial customers need workflows that are inspectable (every possible LLM decision is a visible wire on the canvas), replayable (the same inputs reproduce the same flow), auditable (the set of actions is finite and enumerable), and bounded (the LLM cannot reach data or systems it wasn't explicitly granted access to). Loop-first frameworks can be sandboxed, denylisted, wrapped in approval hooks — but the underlying model stays "give the LLM the keys and trust the runtime to constrain it."
The Inversion
ForestHub inverts the relationship: the graph is the program, the LLM is a node. Some nodes are deterministic (read a sensor, transform a value, branch on a condition, actuate an output). Other nodes are LLM agents. The engine orchestrates everything. The LLM is one component type among many.
That single inversion changes the shape of the system: explicit composition instead of emergent behavior, first-party tool surface (no escape hatch), push-based state curated by the builder, branching as a first-class LLM output, a unified trigger surface, same engine from cloud to gateway to device.
A Strict Superset
Here is the framing competitors miss: you can build a loop-first agent inside our graph. One agent node, a big prompt, many tools, no branches, run-to-completion. Our engine supports it out of the box. We don't lose the open-ended assistant pattern. We contain it. Constraint is opt-in.
Most agent frameworks force a choice between free-form chat-loop and rigid pipeline. The graph sits above both. See /patterns for the six concrete patterns this enables.
The graph is the program. The LLM is a node.