InfiniEngine
Embodied AI is bottlenecked on data, and the data is bottlenecked on plumbing nobody wants to write.
Every embodied AI project I looked at was writing the same thing from scratch: a script to run a policy in a simulator, save what happened, and hope the saved format is still readable in three months. The scripts multiply, none of them agree, and the data outlives the code that produced it.
So the design starts from a different question — not “how do I collect a dataset” but “what has to be true for this data to still be usable later?” That turns into three separated planes. A control plane decides what should be collected: resolved configs, simulator capabilities, checkpoint strategies, task mixtures, reset distributions, quality gates. An execution plane decides how it runs fast: schedulers, process-backed environment workers, GPU-vectorized environments, batched actor inference, action chunks, writer backpressure. A data plane writes raw step events first and treats everything else — validators, metrics, rendered artifacts, training views — as derived.
The last one is the actual opinion. The raw event log is canonical; training formats are views over it. If you materialize the training format directly, you have silently thrown away the provenance, and every later question — why did this run fail, which checkpoint produced this, can I reproduce it — becomes unanswerable. Keeping raw and deriving views costs storage and buys the ability to change your mind.
Backends register capabilities instead of being special-cased, so adding a simulator, an actor or a storage format is a matter of declaring what it can do rather than editing a monolith.

