Skip to main content

What is a trained policy?

A trained policy is a checkpoint — the model weights produced by training an RL task locally with cyberwave-rl or cyberwave-rl-experimental (for example a best_agent.pt). The checkpoint belongs to the RL task it was trained against: you author and export the task, train it on your own machine or GPU, then upload the resulting checkpoint back to the same RL task so the platform can serve it. Once a checkpoint lives on its RL task you can:
  • Publish it as an online controller and assign it to a twin.
  • Run cloud inference that loops live joint state through the policy.
  • Pull it back into MuJoCo locally to replay it with the Python SDK.
Everything below happens in the Policies tab of the RL task editor (or through the matching REST / Python SDK calls).

The happy path

1

Train locally

Export your RL task, then train it with cyberwave-rl / cyberwave-rl-experimental on your own machine. Training produces a checkpoint file such as best_agent.pt.
2

Upload the checkpoint

Upload the checkpoint file back to its RL task — via the dashboard, the Python SDK, or REST. Runtime and policy-interface fields are inherited from the parent RL task.
3

Use the policy

Choose one (or more):
  • Publish as a controller — turn the checkpoint into an assignable online controller.
  • Run inference — dispatch a cloud workload that drives a twin through the policy over MQTT.
  • Use in MuJoCo locally — download the checkpoint with the SDK and replay it locally.

Upload a checkpoint

Uploading stores the weights and registers the checkpoint against the RL task in a single call. The new checkpoint inherits the parent task’s runtime target, accelerator, version pins, and policy interface.
File uploads accept .pt, .pth, or .zip only, up to a maximum size of 512 MB. For weights that exceed this limit, register an external URL instead.
  1. Open the RL task and go to the Policies tab.
  2. Choose Upload checkpoint and select your .pt / .pth / .zip file.
  3. Optionally give it a name and description.
Uploaded checkpoints appear in the list with an Uploaded badge (URL-registered ones show a URL badge). Each row exposes Download and Delete.

Register an external URL

If your weights are already hosted elsewhere, register them by URL instead of uploading bytes. This path also lets you override the inherited runtime target, accelerator, version pins, and policy interface.
List, inspect, and remove checkpoints with GET .../checkpoints, GET .../checkpoints/{checkpoint-uuid}, and DELETE .../checkpoints/{checkpoint-uuid}. See the endpoint reference.

Publish as a controller

Publishing a checkpoint creates a ControllerPolicy — an rltask online controller that you can assign to a twin. The controller runs the policy in its own controller-host cloud node and drives the plant over MQTT, so the same policy can target a simulated or a live robot.
From the Policies tab, select a checkpoint and choose Publish as controller. Optionally set a controller name and description.
The response includes the new controller policy’s controller_policy_uuid and controller_policy_slug. From there it behaves like any other online controller — see Online Controllers for assigning and running it.

Run inference

Inference dispatches a cloud workload that loads the checkpoint, loops Cyberwave joint state through the policy, and publishes commands over MQTT.
This inference path does not run MuJoCo. It is a state-through-policy loop — live joint state in, policy commands out — not a physics rollout. If you want a full physics simulation, use a simulated plant with an online controller instead.
  • checkpoint_uuid (preferred) selects which policy to run.
  • twin_uuid is the robot twin the policy drives.
  • mode, max_steps, and control_rate_hz are optional and tune the loop.
List past inference runs with GET /api/v1/rl-tasks/{uuid}/inference.

Use in MuJoCo locally

To replay a checkpoint in MuJoCo on your own machine, select it in the Policies tab — the dashboard reveals a copy-paste snippet that uses the Python SDK to download the checkpoint, stage it into the layout cyberwave-rl’s play step expects, and play it locally.
The Python SDK exposes upload_checkpoint(...), download_checkpoint(...), and the static prepare_checkpoint_for_play(...) helper on RLTaskClient, so the full round trip — train, upload, replay — stays in one place.

Endpoint reference

Where to go next

RL Tasks

Author, export, and train the RL task a checkpoint belongs to.

Online Controllers

Run a published policy in its own controller host against a simulated or live robot.

Models

Explore other model types and training flows on the platform.