Turn it on in the constructor.
The follower keeps writing locally and asks VideoSDK for a recorder at the same time. You end up with two copies of the same episodes, paired by episode id.
bool
default:"False"
Ask for a cloud recorder when recording starts. Needs a meeting id.
float
default:"90.0"
How long to wait for the recorder to report in. Past this the state becomes failed and the session carries on recording locally.

Where it goes

Episodes are uploaded to the storage configured for your VideoSDK account. Set that up on the API keys page, and every session after that follows it with no change to your code.
The local copy is written either way. Cloud recording adds a second copy, it does not replace the one on the robot.

States

follower.cloud_recording_state tracks the recorder. Episodes cannot open while the state is requested or starting. start_episode() returns None and logs why, rather than opening an episode nobody is recording.
failed does not close the gate. A cloud failure drops back to local-only recording and never stops teleoperation, so episodes keep opening and the local copy stays complete.

Events

once, on ready
The recorder is live. Fires on the transition only, not on every heartbeat.
on every change
The state above, with a reason string when there is one. This is the one to put on an operator screen.

On the leader

arm_when_aligned() waits while the recorder is coming up, so arming looks like it stalls for a few seconds on the first episode. That is deliberate: it holds with the operator’s hands already on the arm rather than arming into a refused episode. leader.cloud_recording_state mirrors the recorder as None, "starting", "running" or "failed", so you can show progress while it waits.
Give timeout a value large enough to cover the recorder coming up. Without one, arm_when_aligned() waits indefinitely. With one that is too short it raises NotAligned naming the recorder as the reason.
The leader can also ask for episode boundaries, which the follower stamps because it is the machine with the capture clock:

Recording

What a session saves and how episodes are bounded.

Recording format

The files a session writes, and the drop counters to check.