Skip to main content

Cloud robot policy inference — one function call.

Project description

Dropbear

Cloud robot policy inference — one function call.

0.1.0a2 is a pre-alpha release. Pin the exact version while the public API is still evolving.

Install

Add Dropbear to a Python 3.11–3.14 project:

uv add "dropbear==0.1.0a2"

Install the CLI as a standalone tool:

uv tool install "dropbear==0.1.0a2"
dropbear login

The base package contains cloud inference, transport, model contracts, and robot-neutral observation helpers. Install a hardware or simulator stack only when you need it:

uv add "dropbear[so101]==0.1.0a2"
uv add "dropbear[sim]==0.1.0a2"

The base SDK supports Python 3.11 through 3.14. The so101 extra currently supports Python 3.12 and 3.13 because its pinned LeRobot dependency requires Python 3.12 and does not yet provide a wheel-compatible Python 3.14 dependency stack.

The sim extra is currently Linux/WSL2 only because of upstream LIBERO/robosuite limitations.

Cloud policy inference

import dropbear

policy = dropbear.connect()  # defaults to molmoact2-so101
policy.run(
    instruction="pick up the cube",
    observe=observe,
    act=act,
    max_actions=300,
)

dropbear.connect() is the canonical SDK entrypoint. connect_so101() is a deprecated compatibility path for the legacy physical SO-101 safety loop and will be removed after that behavior is folded into the generic policy surface. New cloud-policy work should use dropbear.connect(). There is no first-class public connect_libero() or connect_franka() entrypoint; use dropbear.connect(model="molmoact2-libero") or select another checkpoint with model=.

Use a context manager so every cloud session closes deterministically:

import dropbear

with dropbear.connect(model="molmoact2-libero") as policy:
    result = policy.run(
        instruction="put the mug on the plate",
        observe=observe,
        act=act,
        max_actions=220,
        strategy=dropbear.RunStrategy.libero_default(),
    )

region="nearest" is the default. region="available" may fall back to another supported region when the nearest region has no capacity. Passing an AWS region pins the session there.

transport="auto" tries QUIC first and can use the hosted relay; transport="quic" requires QUIC, and transport="relay" uses the relay directly.

MolmoAct2-DROID on Franka

MolmoAct2-DROID consumes an exterior RGB view and wrist RGB view. A second exterior view is optional; when omitted, Dropbear reuses the first exterior frame for the checkpoint's second exterior slot.

Robot state is seven Franka joint positions in radians followed by a gripper value in [0, 1].

import numpy as np
import dropbear

exterior_rgb = np.zeros((480, 640, 3), dtype=np.uint8)
wrist_rgb = np.zeros((480, 640, 3), dtype=np.uint8)

observation = dropbear.franka.observe(
    exterior_frame=exterior_rgb,
    wrist_frame=wrist_rgb,
    joint_positions=[0.0] * 7,
    gripper=0.5,  # 0=open, 1=closed
)

with dropbear.connect(model="molmoact2-droid") as policy:
    result = policy.predict(
        observation,
        instruction="pick up the green block",
    )

assert len(result.actions) == 15
assert all(len(action) == 8 for action in result.actions)

The checkpoint returns a 15-step chunk at 15 Hz. Each action is an absolute target [joint_0, ..., joint_6, gripper]; joints are radians and the gripper is in [0, 1].

predict() does not actuate hardware or provide a Franka safety controller. Validate joint, velocity, acceleration, workspace, collision, and gripper limits before sending any target to a robot.

MolmoAct2-BimanualYAM

This surface was introduced in 0.1.0a2; 0.1.0a1 does not include it.

The BimanualYAM checkpoint consumes three RGB views in exact top, left, right order. State and absolute actions are 14 values: [left_joint_0..5, left_gripper, right_joint_0..5, right_gripper], with joints in radians and each gripper in [0, 1].

observation = dropbear.yam.observe(
    top_frame=top_rgb,
    left_frame=left_rgb,
    right_frame=right_rgb,
    left_joint_positions=left_joint_radians,
    left_gripper=left_gripper,
    right_joint_positions=right_joint_radians,
    right_gripper=right_gripper,
)

with dropbear.connect(model="molmoact2-bimanual-yam") as policy:
    result = policy.predict(observation, instruction="fold the towel")

The checkpoint returns 30 actions at 30 Hz. predict() performs inference only; the caller remains responsible for synchronized two-arm validation, soft limits, collision handling, watchdogs, and physical e-stop procedures. See the complete single-chunk example in examples/yam_inference.py.

The model is staged behind empty Terraform region gates and a coming_soon catalog entry. This SDK contract does not make it allocatable as a live session.

Manual action loop

For a caller-owned control loop, pass the task instruction to policy.next_action(...). Dropbear owns inference, refill, action buffering, calibration, and RTC prefix context; the caller owns sensing, actuation, and loop cadence.

import time

dt = 1.0 / policy.action_hz
while running:
    tick = time.perf_counter()
    action = policy.next_action(
        observe(),
        instruction="put the mug on the plate",
    )
    robot.execute(action)
    time.sleep(max(0.0, dt - (time.perf_counter() - tick)))

CLI

Sign in once. Credentials are stored in ~/.dropbear/config.toml.

dropbear login
dropbear status

For non-interactive setup, pass an API key or use bare --api-key to paste it into a hidden prompt:

dropbear login --api-key dropbear_sk_...
dropbear login --api-key

Run robot-neutral setup checks:

dropbear doctor

SO-101 and simulation checks are explicit:

dropbear doctor so101
dropbear doctor sim

Install shell completion with:

dropbear --install-completion

Useful session commands:

dropbear sessions list
dropbear sessions stop <session-id>
dropbear sessions stop --all

Documentation: https://dropbear.dreamscalelabs.com/docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dropbear-0.1.0a2.tar.gz (125.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dropbear-0.1.0a2-py3-none-any.whl (147.3 kB view details)

Uploaded Python 3

File details

Details for the file dropbear-0.1.0a2.tar.gz.

File metadata

  • Download URL: dropbear-0.1.0a2.tar.gz
  • Upload date:
  • Size: 125.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dropbear-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 bf141c27c1c6e0e1900356827765a72f0a7cc8da7bcfffc5e66cfad6870129f4
MD5 0d86fb9aa90c2dba1fa88c78b6159098
BLAKE2b-256 41c25d5c73c2d696df69434dadf0d26a66db4e572049b2d0161a7e74a840d304

See more details on using hashes here.

File details

Details for the file dropbear-0.1.0a2-py3-none-any.whl.

File metadata

  • Download URL: dropbear-0.1.0a2-py3-none-any.whl
  • Upload date:
  • Size: 147.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dropbear-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 87c8d38b4c265f37a7df425b37c2f57cced64e9d798401b867a3613c5520a18d
MD5 d8ecbd01a6698f42f92efa684f193c47
BLAKE2b-256 dfa4b56480f99637cadf799677ad710e24c5dd026ba648db3dc6d0146c1f2713

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page