Skip to main content
These docs cover the Data Engine only. The legacy Graph Engine, which is still the engine running customer transformations in production today, is not documented here and is slated for removal.
The Data Engine is Twine’s transformation engine. It lets you describe how a value should be derived from other values using a directed acyclic graph (DAG) of typed nodes connected through input and output ports. Most customer-defined transformations on Twine - whether mapping a field from a source system into Twine, computing a derived value, or producing the final value sent to a target system - are built as Data Engine graphs. The Data Engine is the successor to Twine’s legacy graph engine. It was designed from the ground up around two ideas the legacy engine handles poorly: nodes with multiple, named ports, and dated properties as a first-class kind of value flowing through the graph.

Where to start

Before diving into the node reference, read the two concept pages:
  • Ports explains the model that all nodes share - in particular, why a node like add has both default_in and named inputs x/y, how the engine resolves which value a node actually operates on at runtime, and how the type system works. Most “the node didn’t do what I expected” surprises trace back to the input resolution rule.
  • Graph execution explains how a graph runs from its root to its end nodes, what happens when execution branches at a switch, and how end nodes behave differently inside an each loop subgraph.

Node reference

The rest of this section is a reference for every node currently available in the Data Engine, grouped by category. Each node has its own page describing what it does, the ports it exposes, and any configuration it accepts. The category groups appear in the sidebar to the left.