One engine. A JSON graph. Every hop observable.

GUTS is a Python backend that owns one LLM agent engine and exposes it through hot-swappable component slots. The topology of a turn — which roles run, in what order, with what branches and retries — is a small validated graph over a closed 9-primitive vocabulary. Draw it on the canvas; watch the node-event stream as it runs.

Replay of a real run

Replay of a real run

… · … preset · … events · …

loading the real event stream…
event stream

    Three ideas, one API

    Component slots

    Goal, planner, executor, evaluator — each a swappable slot with named implementations. Swap them at runtime, no restart: the next turn runs on what is active.

    Graphs as data

    The turn's topology is a JSON document over a closed 9-primitive vocabulary (prompt, plan, act, research, route, parallel, merge, critic, gate). Validated at save — the canvas can't draw what the engine won't run.

    Event streams

    Every run emits a per-node event stream (start, result, done, skipped, retry, failure…). That stream is the canvas seam — the UI you just watched replays a real one.

    Open the Loop Designer Source on GitHub Step-by-step tutorial