Skip to content

Core Concepts

You describe a robot learning problem in Python, preview the robot inside its task, then submit training with simulo run. A GPU machine in the Simulo cloud trains it. What comes back is a policy: the network that picks your robot’s actions, saved as best and latest checkpoints. Evaluation runs one of those checkpoints through fixed episodes and measures it against the success rule you wrote before you decide to play, continue training, or export it.

task.py ─┐
├─ simulo run train.py ──▶ TRAIN job_brisk-heron-4f8k2m
train.py ─┘ │
▼
policy_brisk-heron-4f8k2m
├─ :best
└─ :latest

A typical project has five Python files. task.py holds your app and your task: the scene, what the robot observes, the reward, and when an episode ends. preview.py checks the robot in the task, train.py trains a policy, eval.py measures a checkpoint against your success rule, and play.py runs a checkpoint back to watch or record it. simulo create NAME writes all five for you.

You write against top-level simulo.* names such as simulo.App, simulo.Task, and simulo.Robot. On your machine these names are lightweight and need no GPU and no PyTorch, so authoring and submitting an app is fast and works on a laptop. On the GPU machine that runs your job, the same names are the full implementations. Your code does not change between the two.

Start with Apps and jobs, then Job lifecycle, Preview, Evaluation, and Policies and checkpoints. Together they cover the path from simulo run to a measured checkpoint you can download or use. The rest can be read in any order.