Skip to main content
Pre-release

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

Menlo

asimov-protocol

The wire contract of the Asimov robot, as generated Python protobuf bindings: the RobotCommand a controller sends, the RobotState the robot reports, and the messages around them. Every Menlo component that talks to the robot imports this package, so one process holds one set of descriptors.

pip install asimov-protocol
from asimov_protocol.v1 import asimov_command_pb2, asimov_common_pb2, asimov_state_pb2

cmd = asimov_command_pb2.RobotCommand()
cmd.mode = asimov_common_pb2.CONTROL_MODE_MOVE
payload = cmd.SerializeToString()

state = asimov_state_pb2.RobotState()
state.ParseFromString(payload_from_the_robot)

Use generated symbolic IDs when producing alerts. Look up display text without copying or rewriting the protobuf alert received from Firmware:

from typing import cast

from asimov_protocol import AlertId, get_alert_definition

assert AlertId.BMS_LOW_SOC == 27

alert = robot_state.active_alerts[0]
print(alert.severity, get_alert_definition(cast(AlertId, alert.id)))

Decode the firmware's critical-only sticky safety-fault word separately:

from asimov_protocol import get_error_report

report = get_error_report(robot_state.error_flags)
for fault in report.faults:
    print(fault.alert_id, fault.description)

SafetyFault.alert_id is None only when an unexpected or future error_flags bit has no critical alert mapping. Warning and info alerts are reported through active_alerts, not through the sticky safety word.

Ships .pyi stubs + py.typed (mypy/pyright work out of the box). The protobuf dependency floor tracks the generator version pinned in buf.gen.yaml (repo root) — bump both together.

Versioning

  • MAJOR follows the wire directory: 1.x is asimov_protocol.v1. A breaking wire change is a new v2/ and a 2.0, never an edit to v1/.
  • MINOR is an additive schema change (a new field, message or enum value); PATCH is regenerated code or packaging with no schema change.
  • Pin asimov-protocol>=1.2,<2 and you get every compatible release of the wire you speak.

Pre-releases use PEP 440 spelling (1.3.0rc1) and install only with pip install --pre or an explicit pin.

Modules

Module What is in it
asimov_common_pb2 ControlMode and the other shared enums
asimov_command_pb2 RobotCommand: mode, policy velocity, joint setpoints
asimov_state_pb2 RobotState: mode, joints, IMU, alerts, battery, protocol_version
asimov_diagnostics_pb2 diagnostics frames
edge_pb2 the edge's controller-facing observation lane (EdgeMessage, EdgeState)
edge_cloud_pb2, edge_eol_pb2 edge to cloud, and end-of-line test

Source

Generated from the .proto files in menloresearch/asimov-protocol by that repository's toolchain; do not edit the installed modules. Higher-level Python clients: menlo-sdk drives the robot, menlo-robot-sdk talks to the Robot Control Service.

MIT.

Metadata

Release files for asimov-protocol 1.3.0rc3

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

Source distribution (sdist)

Source distribution for asimov-protocol 1.3.0rc3
File Size Uploaded Provenance Actions
asimov_protocol-1.3.0rc3.tar.gz 23.0 kB With provenance Details for asimov_protocol-1.3.0rc3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for asimov-protocol 1.3.0rc3
File Interpreter ABI Platform Actions
asimov_protocol-1.3.0rc3-py3-none-any.whl Python 3 none any Details for asimov_protocol-1.3.0rc3-py3-none-any.whl

Total release size: 55.5 kB

Release files / asimov_protocol-1.3.0rc3.tar.gz

Download URL asimov_protocol-1.3.0rc3.tar.gz
Size 23.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f09e6d4040f1b37787d17fd29f016d80cd9fc7759829b342687e84c56e7da754
BLAKE2b-256 checksum
How to use checksums
e8f9bd754ef3822f709900739394ec923cc2959bea041fd5121055f6d0684015
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 Sep 29, 2026.

Transparency log

Release files / asimov_protocol-1.3.0rc3-py3-none-any.whl

Download URL asimov_protocol-1.3.0rc3-py3-none-any.whl
Size 32.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
664ecaafaa2b60b8b0b2699822be64b896cf682d003806a0b2e72e3cba2d9501
BLAKE2b-256 checksum
How to use checksums
2505fe434e03f722a8db75156e64d6e6bc96ed7ecdf3610c86017b7a2a392f75
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 Sep 29, 2026.

Transparency log

Security for asimov-protocol 1.3.0rc3

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

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for asimov_protocol-1.3.0rc3.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 Sep 29, 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