Add columns without rewriting the table.
Define a new column once, with a model or an expression. Spiral appends it on the same rows and keeps it current as new rows land.
Video, force, pose, actions, and model output
Hand-made features go stale and cannot be rebuilt.
Nobody recorded the code or the model, so nobody can compute the next batch the same way.
One Enrichment can read another.
Spiral Robotics, an app built on Spiral, chains Enrichments into a signal graph. It tracks objects, scores progress with WARP-RM, and splits each episode into subtasks, and each step reads the column that the step before it appended.
A model’s output becomes a new column.
Run a detection model to add object tracks, a classifier to add a class to each clip, or an embedding model to add a vector. Each Enrichment records the model revision that made it, and you can pin a version to compute it again.
pinned model each version records its definition
Append once, then refresh only what changed.
Write the expression once, and Spiral computes it for every new row.
An Enrichment computes one value for each row from the columns of that row. Spiral records how to build and rebuild each Enrichment column, so new rows can be enriched incrementally, the same way as old ones.
Each Enrichment records what it was derived from.
Each version stores its expression, including the model, the source columns that it reads, and the version before it. Tags, run records, and checks read it at a version that you pin, not from a copy that can drift.
Before you add a column.
An Enrichment can use any SPQL function on the columns of its row, and the models that Spiral runs, each pinned to a revision. Each version of an Enrichment records its definition, including the model.
It runs beside the data, on your own compute. Spiral schedules the work on the recordings where they are.
Yes. Compute columns over public, partner, or cross-cloud data. Large objects such as video stay where they are.
You publish a new version of the Enrichment, and Spiral computes it for every row. Each training set stays on the old version until you move it, and the source recordings do not change.
No. You can fill it for only the rows that you need and backfill the rest later. A refresh computes only the rows whose inputs changed.
Curation reads new columns like any other.
How it works:Multimodal engineand Reversibility & isolation