Cloud robot policy inference — one function call.
Project description
Dropbear
Cloud robot policy inference — one function call.
0.1.0a1is 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa29c614b497d3350e06670dc13562f81993aaf76342ba4f5d0e218fba83de19
|
|
| MD5 |
71b19046342818a0cc5f92708d1f049e
|
|
| BLAKE2b-256 |
ad879fa08015c416fe1257d319e5f086434611d9e3e341846b16044b947951d2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
826bf4e63777bfd401c1880846e9046007e28f3c1533eb21c5051d1b8873683c
|
|
| MD5 |
a3d0617ff727ec5a4a6e9036a5867ab5
|
|
| BLAKE2b-256 |
fd2b2010501a14c35a2f0e5a8fdb0401316016b098edff0eb3d8e5d061ec2a56
|