Skip to main content
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(...).