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.0rc4

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.0rc4
File Size Uploaded Provenance Actions
asimov_protocol-1.3.0rc4.tar.gz 23.1 kB With provenance Details for asimov_protocol-1.3.0rc4.tar.gz

Built distribution (wheel)

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

Total release size: 55.8 kB

Release files / asimov_protocol-1.3.0rc4.tar.gz

Download URL asimov_protocol-1.3.0rc4.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ac2d2941aea78a319f470152a6397728a37e8df7e9e74d6eecd3c551b3170d6e
BLAKE2b-256 checksum
How to use checksums
c78eb57aebc40c218c069b79bb3de2a6b55931b30e467a6fb01f6fe8f29eccbf
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 8, 2026.

Transparency log

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

Download URL asimov_protocol-1.3.0rc4-py3-none-any.whl
Size 32.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c4a991d26077b766153defc755eb53982367c182c81bc56d407bc7230511f9a6
BLAKE2b-256 checksum
How to use checksums
9c3e70abce7f0944a0a90b1c5e74faba2e56db0450b328866d7b566c94feee75
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 8, 2026.

Transparency log

Security for asimov-protocol 1.3.0rc4

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.0rc4.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 8, 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