Call a model on a cloud GPU from your own robot, simulator or pipeline. No GPU
or robot needed to try it.
What you need
- Python 3.11 or newer, in a project (
uv init makes one).
- A Dreamscale account. Sign in once with
uv run dreamscale login, or set
DREAMSCALE_API_KEY to a key from
Settings → API keys.
Install
uv run python -c "import dreamscale; print(dreamscale.__version__)" prints
0.1.0a105 or newer.
Get one action chunk
This runs as-is. It sends blank frames and a zero state to pi05-libero, the
π0.5 model for the LIBERO simulator:
It prints 20 x 7: 20 actions of 7 values. connect returns when a GPU is
ready; if every GPU is busy, it waits in a queue and shows your position. Now
replace the frames and state with your own. See Models for each
robot’s observation and actions.
Drive a robot
The robot will move. Enforce joint, speed and workspace limits locally, and
keep a physical e-stop within reach. Cloud inference does not replace your
robot’s safety controller.
Call next_action once per control tick. It returns one action on the model’s
clock, so the loop needs no timing code. This loop drives an SO-101; pick a
model for your robot from uv run dreamscale models.
Pass a new instruction at any time to switch tasks.
What the SDK handles
The SDK checks each observation before sending it and names the field that is
wrong. It prepares images, streams to the GPU over the fastest path your network
allows, and blends chunks so motion stays smooth. If the connection drops, it
reconnects and holds the robot still until actions arrive. It releases the GPU
after a minute without calls and reconnects on the next one. Sessions close
when your program exits, or call policy.close(). In async code, use
await dreamscale.aconnect(...).