Cosmos 3 Edge DROID
cosmos-droid · policy template by NVIDIA · 7 absolute joint positions and the gripper at 15 Hz, from three cameras · L4. Each version below is fixed once published, newest first.
seq init cosmos-droid gives the stable version, seq init cosmos-droid@beta the beta, and seq init cosmos-droid@v<N> any version below that is not withdrawn. A deployment made from this template names the version it runs in seq policy versions and on its page in the console; seq policy upgrade moves it to the newer stable one.
-
v7beta
A deployment of this version runs on one card type, the L4: a worker starts only on an L4, never on an A100.
Needs sequence-ai 0.34.19 or later, on your machine and on the robot:
pip install -U sequence-ai, which brings Pillow for the robot.policy.pydeclaresgpu="L4", where v6 listed["L4", "A100-40GB"]: a deployment names one card type. To run on another card, name that one instead.README.mdsays so where it spoke of the A100, and keeps the L4's measurements only.- The image, its frozen files, the weights, the contract and the serving code are v6's.
Use v7
# start a policy from this version, then deploy it seq init cosmos-droid@v7 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v7 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v7 my-policy
-
The image runs cosmos-framework from
third_party/cosmos-framework, the copy in your folder, and installs everything else only from this version's frozen files, which the platform keeps: v5's packages, the same on any day.Needs sequence-ai 0.34.19 or later, on your machine and on the robot:
pip install -U sequence-ai, which brings Pillow for the robot.policy.pycopies cosmos-framework'scosmos_framework/package fromthird_party/cosmos-frameworkinto the image at/opt/cosmos-framework, which the policy runs it from as before: change it there and deploy again, and your deployment runs your version.- Everything else comes from
/seq/frozen(.template_files("cosmos-droid", version=6)), with no index: the basenvidia/cuda:12.8.1-cudnn-runtime-ubuntu24.04by digest, the system packages as.debfiles, every Python package with its sha256 checked againstrequirements-policy.lock, and lerobot and Megatron-LM from their sources.frozen.tomlsays what is frozen. - The Python packages are the 402 that v5's image holds (
pins-policy.txt): the versions cosmos-framework's lock file names - torch 2.10.0 for CUDA 12.8 and NVIDIA's builds of flash-attn, NATTEN and Transformer Engine among them - lerobot 0.4.4 and megatron-core 0.16.0rc0 from their sources, and typing-extensions 4.16.0, which v5 put forward over the lock's 4.15. uv is 0.11.28, the version the lock itself names, as in v5. - One locked package, jupyter-compare-view 0.2.4, says it needs Python below 3.13; it is installed on 3.13 as v5's image had it (pip's
--ignore-requires-python, where v5's uv did not check the bound). policy.pynames the cosmos-framework commit in full,245d2b934c1a0a164d55193b90f724cc99760473.client.pystops when it is imported, sayingpip install -U sequence-ai, if sequence-ai is older than 0.34.19 or Pillow is missing, instead of at the robot's first frame.- To add a package or change a version, add your own step after the template's (
.uv_pip_install(...)); it installs from PyPI as any image does. - The weights, the contract and the serving code are as in v5.
Use v6
# start a policy from this version, then deploy it seq init cosmos-droid@v6 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v6 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v6 my-policy
-
The source the image builds from comes with the template: cosmos-framework at the commit the image pins, in third_party/, with its license.
Needs sequence-ai 0.34.12 or later, on your machine and on the robot, with Pillow on the robot:
pip install -U sequence-aibrings both.third_party/cosmos-framework/: https://github.com/NVIDIA/cosmos-framework at commit245d2b934c1a0a164d55193b90f724cc99760473; a file kept with Git LFS is its pointer.- The image, its weights and what it installs are as in v4.
Use v5
# start a policy from this version, then deploy it seq init cosmos-droid@v5 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v5 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v5 my-policy
-
The robot fits each camera frame and makes each command with the SDK's own helpers, as policy.py declares them.
Needs sequence-ai 0.34.12 or later, on your machine and on the robot, with Pillow on the robot:
pip install -U sequence-aibrings both.client.pycallspolicy.prepare_imagefor each frame (resize="pad",filter="bilinear", as policy.py declares) andpolicy.to_commandfor each step, instead of its own copies of them: itsresize_with_pad,encode,to_commandandto_commandsare gone.policy.pydeclares how each of the three cameras' frames is fitted, 640x360 with padding and bilinear filtering as NVIDIA's client resizes, and the gripper's threshold,binarize={7: 0.5}. The same frames and steps give the same JPEGs and commands as v3.preprocesstakes the connected policy first:preprocess(policy, wrist=..., exterior_1=..., exterior_2=..., ...). One chunk at a time ispolicy.to_commands(policy.predict(...)).- A deployment of this version checks every frame and never resizes one: a frame that is not 640x360 is refused with a 400 that names the call that fits it.
- Under an older sequence-ai,
policy.pyandclient.pystop with a sentence that names 0.34.12, instead of an error about unknown fields.
Use v4
# start a policy from this version, then deploy it seq init cosmos-droid@v4 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v4 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v4 my-policy
-
v3stable
client.pygainsto_command(step)forrun(). The policy declares no action bounds, so the platform passes the joint targets as the model gave them; the served code is unchanged.Needs sequence-ai 0.31.0 or later; on the robot, Pillow.
client.pygainsto_command(step): one step asrun()hands it toact, the gripper made 0 or 1 at 0.5.to_commandsisto_commandon each step of a chunk.- The README's example is the
run()loop:connect,wait_until_ready(), thenrun(observe=..., act=lambda action: robot.step(to_command(action))), which plays all 32 steps of each chunk at 15 Hz and fetches the next chunk while they play, as NVIDIA's own loop does.predict()withto_commandsstays as the one-chunk form. - With no bounds declared, your joint-position controller and its joint limits hold the joint targets, as the README now says.
policy.pyand the image are v2's.
Use v3
# start a policy from this version, then deploy it seq init cosmos-droid@v3 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v3 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v3 my-policy
In the console, Deploy deploys this version: the console deploys the stable one.
-
The README says
client.pyneeds Pillow on the robot, which sequence-ai does not bring:pip install sequence-ai pillow.Needs sequence-ai 0.31.0 or later; on the robot, Pillow.
client.pyimports Pillow to fit the camera frames before they are sent, so on a robot with sequence-ai alonefrom client import preprocessfailed withNo module named 'PIL'. The README's "Use it" now says what to install.- The code and the image are v1's; only a comment in
policy.pyis reworded.
Use v2
# start a policy from this version, then deploy it seq init cosmos-droid@v2 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v2 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v2 my-policy
-
The first version: NVIDIA's Cosmos 3 Edge Policy post-trained on DROID as a policy, a wrist and two exterior cameras, the joints and gripper in, 32 steps of 7 joint positions and the gripper at 15 Hz out.
Needs sequence-ai 0.31.0 or later; on the robot, Pillow.
seq deploy policy.pydeploys it on an L4, or an A100 40 GB when no L4 is free, as one worker (max_gpus=1: a second robot waits) withcpu=1andmemory=17. Its weights, NVIDIA's DROID checkpoint and the Wan2.2 VAE it decodes with, are copied into your deployment: nothing is downloaded from Hugging Face.- It runs NVIDIA's own
RobolabPolicyServicefrom cosmos-framework at a pinned commit, configured as NVIDIA's DROID server command configures this checkpoint (4 UniPC steps). An integerseedfixes the chunk. client.pyfits the three frames to 640x360 with padding and makes the gripper 0 or 1 at 0.5 (to_commands); the worker composes the views into the 540x640 frame the model reads, as NVIDIA's client does. All 32 steps run before the next call (OPEN_LOOP_HORIZON).- On an L4 the model loads in 104 s, holds 9.3 GiB of the card and answers in 1.58-1.59 s from the robot; on an A100 40 GB, 0.78-0.91 s (measured on the platform).
- The checkpoint is under OpenMDW-1.1 (
LICENSE), which allows commercial use, and the VAE under Apache-2.0; keepLICENSEandNOTICEwith any copy you distribute.
Use v1
# start a policy from this version, then deploy it seq init cosmos-droid@v1 my-policy seq deploy my-policy/policy.py # or move a deployment made from this template to it seq policy upgrade my-policy --to v1 # on the robot's machine: this version's client.py and its README pip install -U sequence-ai seq init cosmos-droid@v1 my-policy