Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Menlo

menlo-sdk

Python SDK for Menlo robots. Supports Asimov 1.

Requirements

  • Python 3.12 or newer.
  • Optional, only for the calls that use them: Pillow for Frame.to_jpeg(), NumPy for Frame.to_numpy(), OpenCV (opencv-python) for Clip.save_mp4().

Installation

pip install menlo-sdk

Usage

Connect with the robot's address:

from menlo.asimov import ConnectionConfig, Robot, UdpConfig

config = ConnectionConfig(udp=UdpConfig(host="192.168.22.32"))

Read the robot's state. This sends nothing:

with Robot(config).connect() as robot:
    print(robot.get_state().mode.name)  # DAMP, STAND or MOVE

Put the robot in STAND: the actuators hold a standing pose, with no balancing. The robot must hang from its gantry hook with both feet on the floor; from MOVE, hang it from its gantry hook or seat it on a stool or bench first. stand() returns once the robot is in STAND and armed:

with Robot(config).connect() as robot:
    robot.stand()

Put the robot in MOVE: the walking policy balances it in place. balance() returns once the robot reports MOVE:

with Robot(config).connect() as robot:
    robot.balance()

Walk: in MOVE the robot follows the velocity you send, here 0.3 m/s forward for 3 s. A walk needs 2 m of clear floor ahead, and Asimov Manager open at the E-Stop. set_velocity() returns once the 3 s are over and zero velocity is sent. balance() keeps the robot in MOVE at zero velocity, balancing in place:

with Robot(config).connect() as robot:
    robot.set_velocity(vx=0.3, duration=3.0)
    robot.balance()

Put the robot in DAMP: every actuator stops holding its position, so a standing robot falls. Only do this with the robot supported, hanging from its gantry hook or seated on a stool or bench:

with Robot(config).connect() as robot:
    robot.damp()

The SDK sends what you ask and reports what the robot says; it refuses a command only when there is no live state (NotReadyError after the command's timeout, nothing sent; a closed Robot raises NotConnectedError, a lost link LinkLostError). Safety is the firmware's job, and a guard is yours: read the facts and decide before you send (examples/guard.py is one to start from):

with Robot(config).connect() as robot:
    s = robot.get_state()
    if s.faulted or any(j.temp is not None and j.temp >= 60 for j in s.joints):
        raise SystemExit("not walking: a latched fault or a hot actuator")
    robot.set_velocity(vx=0.3, duration=3.0)

Agent Skill

The usage guide is also an agent skill, so a coding agent writes scripts the way this SDK expects. In Claude Code:

/plugin marketplace add menloresearch/menlo-sdk
/plugin install menlo-sdk@menlo

In Codex, pi and other agents that read Agent Skills:

npx skills add menloresearch/menlo-sdk

Documentation

Security

To report a vulnerability, see SECURITY.md.

License

Apache License 2.0. See LICENSE.

Metadata

Release files for menlo-sdk 0.1.0rc9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for menlo-sdk 0.1.0rc9
File Size Uploaded Provenance Actions
menlo_sdk-0.1.0rc9.tar.gz 264.7 kB With provenance Details for menlo_sdk-0.1.0rc9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for menlo-sdk 0.1.0rc9
File Interpreter ABI Platform Actions
menlo_sdk-0.1.0rc9-py3-none-any.whl Python 3 none any Details for menlo_sdk-0.1.0rc9-py3-none-any.whl

Total release size: 375.8 kB

Release files / menlo_sdk-0.1.0rc9.tar.gz

Download URL menlo_sdk-0.1.0rc9.tar.gz
Size 264.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9821b1c60daf56ce9d8eabfab0c66dcdb2388d6d5b556727be45e90f96a607a0
BLAKE2b-256 checksum
How to use checksums
dc199e60d1464c748a480b9f39e6077e50610b379fca97b85a6bae4d0dbb9319
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / menlo_sdk-0.1.0rc9-py3-none-any.whl

Download URL menlo_sdk-0.1.0rc9-py3-none-any.whl
Size 111.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
085916d3c59c059b9f95df83fde188caff2d43bce8159e0cb3da58bd77d3320c
BLAKE2b-256 checksum
How to use checksums
d79ef7f8c333f40f41ab5280568af01a248347bb78682a51b172bd23f579f255
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Security for menlo-sdk 0.1.0rc9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for menlo_sdk-0.1.0rc9.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page