WORK
Last updated on

Graph Engine

Graph Engine

Node graph engine for visual programming and data flow management

A node graph engine that supports visual programming and data-flow evaluation. It provides no GUI of its own — it is a flexible, extensible engine for creating nodes, connecting them and executing the resulting graph, so it can sit under any interface or application.

In Strura, every building element is a subgraph: a wall is a small graph of generic nodes (a curve, an offset, an extrusion, a material) and the whole project is one graph. That is what makes the model parametric — change a parameter and everything downstream re-executes — and it is the single source of truth the UI is derived from.

Features

  • Typed ports and values — nodes declare inputs and outputs with data types; connections are validated at wire time
  • Incremental execution — only nodes whose inputs changed re-run; outputs are cached across commits
  • Subgraphs and templates — a graph can be packaged as a reusable node with its own interface, which is how BIM object families are defined and instantiated
  • Operation log — every mutation is a changeset with a forward and an inverse, giving exact undo/redo and a persistence format that is the log itself
  • Operation scopes — a live gesture (drawing, dragging) commits many times but records one history entry
  • Plugin nodes — node implementations register themselves; new vocabularies are added without touching the engine
  • Runs in the browser — the same engine executes on WebAssembly

Tech Stack

FunctionTechnology
LanguageRust
Graph modelDAG with typed ports
PersistenceAppend-only operation log
TargetsNative + WebAssembly