Rayform

Getting started

Rayform documentation

Turn the recordings your robots, rigs and phones already make into searchable, versioned 4D training data, and load it straight into your training stack.

Rayform is in private preview. APIs, formats and the SDK described here may change before general availability.

Rayform is the processing, storage and retrieval layer for robot data. You upload recordings; Rayform aligns every sensor on one clock and one coordinate frame, reconstructs each place in 3D over time, marks the interactions, and stores the result losslessly. You then search everything you have recorded, freeze exactly what you want as a versioned slice, and export it in the format your trainer loads.

Your data stays yours. Rayform does not collect data, sell data, or train on yours.

How it fits together

StepWhat you doWhat Rayform does
UploadSend MCAP, ROS 2 bags or raw sensor filesVerifies checksums and stores the original unchanged
ProcessNothingChecks timing and calibration, aligns streams, reconstructs, labels interactions, cuts segments
SearchQuery by event, object, place, condition or textReturns matching segments with quality scores
SliceFreeze a selectionHashes it so it always returns the same data
ExportPick a format and destinationWrites LeRobot, RLDS, WebDataset, MCAP, USD or MJCF

Start here

  • Quickstart: upload one recording and load it in Python in about five minutes.
  • Concepts: sessions, segments, slices and assets, and how they relate.
  • API reference: every endpoint, with request and response examples.
  • Python SDK: install, authenticate, and use Rayform from training code.

A first look

first_look.py
import rayform

client = rayform.Client()  # reads RAYFORM_API_KEY

session = client.sessions.upload("kitchen_2026-10-14.mcap", site="lab-2", wait=True)
print(session.status, len(session.segments()))

grasps = client.segments.search(site="lab-2", event="grasp")
slice_ = client.slices.create(segments=grasps, name="lab-2 grasps")

client.exports.create(slice_, format="lerobot", destination="s3://my-bucket/rayform/").wait()

Last updated October 18, 2026