Rayform

Edge engine

Output formats

The HDF5 and LeRobot layouts Rayform writes, and how to load them in PyTorch or JAX.

Rayform is in private preview. The edge engine is in development with preview teams, and commands, formats and APIs described here may change before general availability.

rayform export resamples a run to one rate, applies your action definition, and writes either HDF5 or LeRobot. Alignment and resampling happen once, at export, not in your dataloader on every epoch.

Shell
rayform export RUN [RUN…] --format hdf5|lerobot --fps 15 \
  --action joints/position_delta --cameras wrist_left,front --only-usable --out PATH

HDF5

The layout follows the robomimic convention also used by Isaac Lab, so existing loaders work unchanged.

Text
drawer.h5
  data/                         attrs: rayform_version, layout, fps, rig, calibration
    demo_0/                     attrs: task, operator, run, quality
      obs/
        wrist_left_rgb          (T, H, W, 3)  uint8
        front_depth             (T, H, W)     uint16, millimetres
        joint_position          (T, 14)       float32, radians
        gripper_position        (T, 2)        float32
      actions                   (T, 14)       float32
      timestamps_ns             (T,)          int64, run clock
    demo_1/ …
  mask/
    usable                      demo names that passed checks

LeRobot

--format lerobot writes a LeRobot v3 dataset with even frame spacing, explicit joint names and camera videos. Before the command returns it loads the result with LeRobotDataset, so a dataset that LeRobot would reject is never written silently.

Loading

PyTorch
import rayform

ds = rayform.open("data/drawer.h5")
loader = ds.torch(cameras=["wrist_left_rgb"], horizon=16, batch_size=64, num_workers=8)
JAX
import rayform

ds = rayform.open("data/drawer.h5")
for batch in ds.numpy(cameras=["wrist_left_rgb"], horizon=16, batch_size=64):
    batch = jax.device_put(batch)

rayform.open also accepts a LeRobot dataset folder. Plain h5py works too; the layout above is all there is.

Last updated October 19, 2026