DreamZero#
DreamZero is a World Action Model with a checkpoint fine-tuned on DROID
(GEAR-Dreams/DreamZero-DROID). Arena ships a thin WebSocket client
(DreamZeroRemotePolicy) that talks to a DreamZero inference server running remotely.
Note
DreamZero inference requires an H100-class GPU. This guide starts the server
on an OSMO cluster and runs Arena locally. Before continuing, follow the
OSMO setup instructions and identify an H100-capable
pool. Replace isaac-dev-h100-01 below with the name of that pool.
The setup uses two terminals: the DreamZero server (terminal 1, hosts the model remotely on OSMO) and the Arena Experiment Runner (terminal 2, runs the simulation and exchanges observations and actions with the server).
Terminal 1 — DreamZero server#
Start the prebuilt server on OSMO
Arena provides a prebuilt server image with the DreamZero code and public
GEAR-Dreams/DreamZero-DROID checkpoint. Submit the server workflow to the H100 pool:
osmo workflow submit isaaclab_arena_dreamzero/docker/dreamzero_inference_server.yaml \
--pool isaac-dev-h100-01 \
--set port=5000
The command prints the workflow ID. Once its serve task is running, forward the
server port to your machine:
osmo workflow port-forward <WORKFLOW_ID> serve --port 5000
Leave the port-forward command running. The workflow uses a single H100 GPU and serves
the baked checkpoint from /workspace/dreamzero/checkpoints/DreamZero-DROID.
Terminal 2 — Experiment Runner#
Arena includes a one-Run YAML configuration. It selects the environment, the DreamZero policy, the language instruction, and a three-episode rollout:
Configuration file (droid_pnp_dreamzero_experiment.yaml)
# Copyright (c) 2026, The Isaac Lab Arena Project Developers (https://github.com/isaac-sim/IsaacLab-Arena/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
runs:
droid_pnp_dreamzero:
environment:
type: pick_and_place_maple_table
enable_cameras: true
embodiment: droid_abs_joint_pos
pick_up_object: rubiks_cube_hot3d_robolab
destination_location: bowl_ycb_robolab
hdr: home_office_robolab
environment_builder:
language_instruction: Pick up the Rubik's cube and place it in the bowl.
policy:
type: isaaclab_arena_dreamzero.policy.dreamzero_remote_policy.DreamZeroRemotePolicy
remote_host: localhost
remote_port: 5000
policy_device: cuda:0
dreamzero_embodiment_adapter: droid
rollout_limit:
num_episodes: 3
The policy configuration uses localhost:5000 by default, matching the port forward
from terminal 1.
Run DreamZero closed-loop
Open a second terminal, enter the Arena container with ./docker/run_docker.sh, and
start the rollout:
python isaaclab_arena/evaluation/experiment_runner.py \
--viz kit \
--experiment_config isaaclab_arena_environments/experiment_configs/droid_pnp_dreamzero_experiment.yaml
The runner reads the other values from YAML and records the Run under the name
droid_pnp_dreamzero. Run headless by replacing --viz kit with --headless.