# 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.

Source: https://rayform.world/docs
Last updated: 2026-10-18
Status: 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

| Step | What you do | What Rayform does |
| --- | --- | --- |
| Upload | Send MCAP, ROS 2 bags or raw sensor files | Verifies checksums and stores the original unchanged |
| Process | Nothing | Checks timing and calibration, aligns streams, reconstructs, labels interactions, cuts segments |
| Search | Query by event, object, place, condition or text | Returns matching segments with quality scores |
| Slice | Freeze a selection | Hashes it so it always returns the same data |
| Export | Pick a format and destination | Writes LeRobot, RLDS, WebDataset, MCAP, USD or MJCF |

## Start here

- [Quickstart](https://rayform.world/docs/quickstart): upload one recording and load it in Python in about five minutes.
- [Concepts](https://rayform.world/docs/concepts): sessions, segments, slices and assets, and how they relate.
- [API reference](https://rayform.world/docs/api): every endpoint, with request and response examples.
- [Python SDK](https://rayform.world/docs/sdk): install, authenticate, and use Rayform from training code.

## A first look

```python title="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()
```

> Rayform is in private preview. [Join the waitlist](https://rayform.world/#waitlist) to get an API key; endpoints and SDK names may change before general availability.
