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
| Function | Technology |
|---|---|
| Language | Rust |
| Graph model | DAG with typed ports |
| Persistence | Append-only operation log |
| Targets | Native + WebAssembly |