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

# replay-dataset

> Replay a recorded LeRobot dataset episode on the robot.

Replays one episode of an existing [LeRobot](https://github.com/huggingface/lerobot)-format dataset on Axol: the episode's recorded `action` column is streamed back to the arms frame by frame, then the robot returns to its rest pose. It's the inverse of [`collect-data`](/cli/collect-data) — instead of recording teleop actions it plays an already-recorded episode straight onto the hardware.

No cameras, teleop, or policy server are involved: replay only drives the arms, so the robot config carries no cameras. The robot is first moved to the rest pose (the same collision-aware return-to-rest [`run-policy`](/cli/run-policy) uses) so the arm starts where every recorded episode does — episodes are recorded from rest, so the first replayed action is \~rest and there's no jump. Each frame is sent at the dataset's recorded fps to reproduce the original timing — paced on the robot's control loop so command intervals stay regular and the motion stays smooth — and a final return-to-rest leaves the arm parked. With `--interpolate` the recorded actions are upsampled to \~120 Hz commands for even smoother tracking, without changing the episode's timing.

Pass `--loop` to replay the episode continuously (returning to rest between takes) until you stop it with `Ctrl+C` (or **Stop** in the [control panel](/guides/control-panel)); either way the arm returns to the rest pose before the operation exits.

This command is configured via draccus. The robot subsystem is exposed as the nested `robot_config` config (CAN channels, per-joint gains) — nest into it with dots or pass a whole-config file. See [Command configuration](/cli/configuration).

| Flag                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--repo_id <user>/<dataset>`                  | HuggingFace dataset repo ID (required)                                                                                                                                                                                                                                                                                                                                                                                       |
| `--episode INT`                               | Index of the episode to replay, 0-indexed — the first recorded episode is `0` (required)                                                                                                                                                                                                                                                                                                                                     |
| `--fps INT`                                   | Playback frame rate. `0` (default) replays at the dataset's recorded fps, reproducing the original timing; set a positive value to override it.                                                                                                                                                                                                                                                                              |
| `--interpolate true`                          | Smooth playback: linearly interpolate between recorded actions and command the arms at \~120 Hz (the teleop control rate) instead of the dataset fps. Episode timing is unchanged — only the command granularity increases. Default: off (each recorded action is sent once, as-is).                                                                                                                                         |
| `--loop true`                                 | Replay the episode continuously (returning to rest between takes) until stopped with `Ctrl+C` / **Stop**, then return to rest. Default: off (a single replay).                                                                                                                                                                                                                                                               |
| `--root PATH`                                 | Local dataset root (default: `$HF_LEROBOT_HOME`)                                                                                                                                                                                                                                                                                                                                                                             |
| `--robot_config.axol_config.left_stiffness S` | Compliance↔stiffness blend for the left arm in `[0, 1]`. Scalar or 7-element list (one per arm joint, in `Joint` enum order). `0` = fully compliant; `1` = pre-tuning industrial gains; `0.5` (default) is the geometric mean. Use `right_stiffness` for the right arm. Match the stiffness used at data-collection time so the arm tracks the recorded actions the same way. See [`AxolConfig.left_stiffness`](/api/robot). |
| `--log_level {DEBUG,INFO,WARNING,ERROR}`      | Default: `INFO`                                                                                                                                                                                                                                                                                                                                                                                                              |
| `--config_path PATH`                          | Load a whole-config JSON/YAML file; CLI overrides layer on top.                                                                                                                                                                                                                                                                                                                                                              |

```bash theme={null}
axol replay-dataset --repo_id myorg/pick-place --episode 0
axol replay-dataset --repo_id myorg/pick-place --episode 0 --loop true   # loop until Ctrl+C
axol replay-dataset --repo_id myorg/pick-place --episode 3 --fps 30 \
    --robot_config.axol_config.left_stiffness 1.0 --robot_config.axol_config.right_stiffness 1.0
```

<Warning>
  Replay drives the arms open-loop from the recorded actions — it does not watch the scene. Make sure the workspace is clear and matches roughly what the episode was recorded in before starting, and keep the [Stop](/cli/serve) control (or `Ctrl+C`) within reach. Match the stiffness used at collection time so the arm tracks the same way it did when recorded.
</Warning>
