Now in early access

LLM data pipelines as DAGs.
Authored visually or in Python.

Run complex AI-native workflows with result caching, schema validation, and robust error handling. Flexible hosting options.

What's in the box

A graph editor, a Python SDK, and the engine that runs them.

Graph editor

Drag nodes, connect ports, configure inline. Connections are checked against port schemas before they complete.

Python SDK

Define workflows in Python. Node factories produce the same JSON the editor saves. Pydantic models work as output schemas.

Typed schemas

Schemas on every node port. Connections validate at design time; inputs and outputs are checked at runtime.

Result cache

Results cached by config and input. Change a prompt, only that node re-runs. Failed runs resume from the last checkpoint.

LLMs

Gemini, GPT, Claude, and more behind one interface. Structured output, response repair, retry policies, per-node cost tracking.

Triggers & callbacks

Webhook triggers, Google Forms, run completion callbacks. Self-hosted; one command to start.

How it works

Define, run, integrate.

1

Define the workflow

Build a DAG of LLM prompts, code, branches, maps, transforms, and sinks. Author it in the graph editor or in Python via the SDK — both paths produce the same workflow document.

2

Run and inspect

Execute against sample data. Each node's status overlays the canvas; click a node for its actual input, output, timing, and cost. Results are cached, so editing a prompt only re-runs the affected nodes.

3

Trigger and integrate

Trigger runs via API, signed webhooks, or Google Forms. Subscribe to run completion callbacks for the final result. Failed runs resume from the last successful checkpoint.

Try Substructure

Self-hosted version is rolling out first. Get in touch to talk about access or use cases.

Contact us