Skip to content

Quickstart

Six steps take you from installation to a policy you can run on your own machine: install, scaffold an app, log in, run it, observe it, then export the trained policy. The starter already pins a validated cartpole, so you can get a first success before learning the asset catalog.

Terminal window
pip install simulo

Python 3.11+. Torch-free — nothing GPU-related comes down with this install. Verify with simulo --help. Detail: Install.

Terminal window
simulo create mybot
Created training app in mybot/ (app.py + .simuloignore).
Next steps:
cd mybot
simulo run app.py

simulo create only writes files to your machine; it needs no login or network connection. mybot/app.py is runnable code that trains a PPO policy on the pinned global-catalog asset simulo/robot/cartpole:v1. Detail: Create your first app.

Terminal window
simulo login

simulo login opens Simulo’s sign-in page in your browser. Sign in, and the terminal confirms:

Logged in as you@example.com (org: <org-id>)

No browser available? The CLI falls back to a manual code and fingerprint flow. Detail: Log in.

Terminal window
cd mybot
simulo run app.py --frozen --strict-assets

Because you logged in at step 3, this packages the app, uploads it, creates a job on the Simulo cloud, and follows its logs to completion. --frozen requires every catalog ref to include an exact version; --strict-assets rejects deprecated or runtime-unvalidated inputs.

Submitted job 'train' -> job <job-id> (cloud)
Following job <job-id> (--detach to submit without waiting)...
[train] iteration 1/200 ...
[train] iteration 200/200 ...

Detail on every flag simulo run understands, and the ones your app defines instead: Run & submit.

Terminal window
simulo jobs # your job, now "completed"
simulo result # its return value — best_reward, checkpoint, iterations
simulo models # best.pt / latest.pt, ready to download
Terminal window
simulo models <job-id> best.pt # download it, sha256-verified

If the job is still running and you want to stop it, name it explicitly:

Terminal window
simulo cancel <job-id>

Pressing Ctrl-C while simulo run is following logs only detaches your terminal; the cloud job keeps running. simulo cancel <job-id> stops a queued or running job. You can also open Simulo Console, select the job, and use Cancel.

Detail: Observe.

A checkpoint is only useful inside Simulo. This converts it to ONNX and downloads a bundle that runs anywhere Python does:

Terminal window
simulo export
Converting and validating on Simulo's compute... (Ctrl-C to stop watching; the export keeps running)
Exporting best.pt from job <job-id>
PyTorch → ONNX … done
Validating 100 golden vectors … passed
Maximum action difference: 4.8e-07
Deployment bundle downloaded:
./train-policy-best/
Simulo export validation: PASSED

No arguments: Simulo already knows your latest job, its best checkpoint, the tensor names, and the right tolerance. Before publishing anything it replays the same observations through the original PyTorch policy and the converted model — a disagreement fails the export instead of handing you a bundle that loads and misbehaves.

Then prove it on your own machine, with Simulo uninstalled:

Terminal window
cd train-policy-best
python -m pip install -r requirements.txt # onnxruntime + numpy, nothing else
python verify.py
LOCAL VALIDATION: PASSED
This policy model runs independently of Simulo on this machine.

That needs no Simulo SDK, no simulator, no CUDA, no GPU, and no login. Detail: Export a policy to ONNX.