> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cyberwave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Replay & Historical Data

> Scrub through everything your robots and sensors have ever recorded — video, joints, point clouds, GPS — straight from your browser

Being able to **re-watch what your robots did**, from any browser, days or weeks later, is one of Cyberwave's quiet superpowers. In the lab it's how you turn yesterday's runs into [training episodes and datasets](/feature-reference/datasets/playground) for your custom [VLAs](/feature-reference/ml-models/smolvla-training). In production it's how you actually learn from real-world data and make your [workflows](/overview/features/workflows) and [automations](/overview/features/teleoperation-and-remote-control) better over time.

Cyberwave ships the whole pipeline — capture, upload, indexing, signed-URL playback — out of the box. Zero configuration.

***

## What's recorded (and where it lives)

Every [twin](/overview/features/digital-twin) in an [environment](/overview/features/environment) records on by default, and the [Cyberwave Edge](/feature-reference/edge/overview) is the one buffering and uploading everything for you:

* **Live video** from every paired camera (MP4, range-requested on playback)
* **Joint states, positions, velocities, gripper status** (Parquet, time-windowed reads)
* **Mobile-base telemetry** — GPS, odometry, IMU
* **Point clouds** from depth and LiDAR sensors (FlatBuffer chunks)
* **Audio** from on-device microphones
* **Workflow runs** — every node execution, input, and output, bound to the same timeline

You don't manage disk space. The [edge core](/feature-reference/edge/overview) buffers locally and uploads to Cyberwave Cloud the moment connectivity returns — so an intermittent network or a 4G hiccup never costs you a recording. See [`record` / `replay` in the SDK data layer](/feature-reference/edge/drivers/data-record-replay) for the underlying mechanics.

***

## Open Replay on any environment

Hit **Replay** in any [environment](/feature-reference/environment-editor/index), pick a time window, and the whole scene rewinds together:

* **3D twins** snap to their historical poses — robot joints, base position, attached objects.
* **Live video tiles** scrub frame-accurately alongside the 3D view.
* **Point clouds** render at the right pose for every frame.
* **Audio** plays back in sync with the timeline.
* **Workflow runs** that fired during the window show up as markers — click one to see node-level inputs, outputs, and errors ([env editor reference](/feature-reference/environment-editor/index#workflow-executions-in-an-environment)).

Under the hood, playback uses [signed URLs and range requests](/feature-reference/environment-editor/replay) — nothing is inlined, nothing is fully loaded into the browser, and scrubbing stays fast even on multi-hour recordings.

***

## Slice runs into episodes, export to anything

A recording isn't just for watching. From the same timeline you can **slice a window into an episode** and group episodes into a [dataset](/feature-reference/datasets/import) you can train on.

When you're ready to leave the cloud — or hand data to an external tool — export to the format you actually need:

| Format                | Use case                                   |
| --------------------- | ------------------------------------------ |
| **Cyberwave Parquet** | Native, joined columns — open it in Pandas |
| **LeRobot v3**        | Drop straight into HuggingFace + LeRobot   |
| **RLDS**              | Open-X-Embodiment style TFRecord           |
| **OpenVLA TFDS**      | Cyberwave's OpenVLA bundle for training    |

See the [Dataset export reference](/feature-reference/datasets/format-conversion) for the full matrix and the [Datasets API](/api-reference/rest/DatasetSchema). No lock-in: your data leaves in open formats whenever you want it to.

```python theme={null}
from cyberwave import Cyberwave

cw = Cyberwave()

dataset = cw.datasets.get("acme/datasets/pick-and-place-runs")
url = dataset.download(format="lerobot3")     # signed URL — fetch and go
```

***

## Lab loop or production loop, same primitive

<CardGroup cols={2}>
  <Card title="In the lab" icon="flask" href="/feature-reference/ml-models/smolvla-training">
    Curate episodes from teleop or autonomous runs and feed them straight into
    [SmolVLA](/feature-reference/ml-models/smolvla-training) or
    [OpenVLA](/feature-reference/ml-models/openvla-oft-training) training. The
    same recording that lives in Replay is the one your model trains on.
  </Card>

  <Card title="In production" icon="chart-line" href="/overview/features/workflows">
    Review what happened the last time the line went down, find the failure mode
    in the timeline, and ship a fix to your
    [workflows](/overview/features/workflows) or
    [policies](/feature-reference/ml-models/index) the same day.
  </Card>
</CardGroup>

***

## What to read next

<CardGroup cols={3}>
  <Card title="Replay reference" icon="rewind" href="/feature-reference/environment-editor/replay">
    How signed URLs, MP4 ranges, Parquet windows, and point-cloud chunks
    actually load.
  </Card>

  <Card title="Datasets & export" icon="database" href="/feature-reference/datasets/format-conversion">
    Convert recordings into LeRobot, RLDS, OpenVLA, or raw Parquet.
  </Card>

  <Card title="SO-101 teleop dataset" icon="record-vinyl" href="/tutorials/so101-teleop-dataset">
    End-to-end: record a teleop session and turn it into a training dataset.
  </Card>
</CardGroup>
