Skip to main content

Cloud robot policy inference — one function call.

Project description

Dropbear

Cloud robot policy inference — one function call.

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

Install

Add Dropbear to a Python 3.12 project:

uv add "dropbear==0.1.0a1"

Install the CLI as a standalone tool:

uv tool install "dropbear==0.1.0a1"
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.0a1"
uv add "dropbear[sim]==0.1.0a1"

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.

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.0a1.tar.gz (122.4 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.0a1-py3-none-any.whl (144.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dropbear-0.1.0a1.tar.gz
  • Upload date:
  • Size: 122.4 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.0a1.tar.gz
Algorithm Hash digest
SHA256 aa29c614b497d3350e06670dc13562f81993aaf76342ba4f5d0e218fba83de19
MD5 71b19046342818a0cc5f92708d1f049e
BLAKE2b-256 ad879fa08015c416fe1257d319e5f086434611d9e3e341846b16044b947951d2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dropbear-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 144.8 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.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 826bf4e63777bfd401c1880846e9046007e28f3c1533eb21c5051d1b8873683c
MD5 a3d0617ff727ec5a4a6e9036a5867ab5
BLAKE2b-256 fd2b2010501a14c35a2f0e5a8fdb0401316016b098edff0eb3d8e5d061ec2a56

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