Skip to main content

Python client for the Menlo Robot Control Service (RCS) control plane.

Project description

menlo-robot-sdk

Python client for the Menlo Robot Control Service (RCS): robot CRUD, session lifecycle, and runtime skill calls through RCS.

Alpha: this package is in active development and may introduce breaking API changes between minor versions.

Install

uv add menlo-robot-sdk

The base package covers the RCS HTTP control plane and runtime HTTP/SSE helpers. Install the optional LiveKit extra only if your Python process needs to join a LiveKit room directly:

uv add "menlo-robot-sdk[livekit]"

Configure

Local development against RCS uses an unsigned development identity:

from menlo_robot_sdk import DevIdentity, MenloSettings

settings = MenloSettings(
    rcs_url="http://localhost:8002",
    identity=DevIdentity(
        sub="user_dev",
        organization_id="org_dev",
        team_id="team_dev",
    ).to_header(),
)

You can also load settings from environment variables:

export MENLO_RCS_URL=http://localhost:8002
export MENLO_IDENTITY='{"sub":"user_dev","organization_id":"org_dev","team_id":"team_dev","roles":[],"scopes":[]}'

MENLO_API_KEY alone is not accepted by RCS yet. Hosted auth and cloud setup are separate from this local SDK path.

Quick Example

import asyncio

from menlo_robot_sdk import AsyncClient, ConnectCallbacks, DevIdentity, MenloSettings, connect, workers


async def main() -> None:
    settings = MenloSettings(
        rcs_url="http://localhost:8002",
        identity=DevIdentity(
            sub="user_dev",
            organization_id="org_dev",
            team_id="team_dev",
        ).to_header(),
    )

    events = []

    def on_action_result(event) -> None:
        events.append(event)

    async with AsyncClient(settings=settings) as client:
        created = await client.robots.create(name="sdk-demo", model="asimov-v0")
        session = None
        try:
            session = await connect(
                client,
                created.robot.id,
                workers=workers.for_rcs_stack(),
                join_livekit=False,
                callbacks=ConnectCallbacks(on_action_result=on_action_result),
            )

            skills = await session.discover_skills()
            status = await session.get_robot_status()
            action_id = await session.invoke(
                "set_velocity",
                {"wz": 0.8, "duration_s": 2.0},
            )

            print([skill.name for skill in skills], status.runtime.status, action_id)
        finally:
            if session is not None:
                await session.disconnect()
            await client.robots.delete(created.robot.id)


asyncio.run(main())

The runtime skill calls above require a running local RCS stack and browser viewer.

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

menlo_robot_sdk-0.1.1.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

menlo_robot_sdk-0.1.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file menlo_robot_sdk-0.1.1.tar.gz.

File metadata

  • Download URL: menlo_robot_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for menlo_robot_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5f0407dbaa5f1f6c73b5856f6546affd6116e951dc20c3ee7676f2b3edffa420
MD5 761b9f5a9dd0a12217651e9af9b29e2b
BLAKE2b-256 31f9fc0d440a48c9139c8438edbd070111d46be9a1796446272180f92cf114eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for menlo_robot_sdk-0.1.1.tar.gz:

Publisher: menlo-robot-sdk-publish.yml on menloresearch/mono

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file menlo_robot_sdk-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for menlo_robot_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 44b3a955b6d64d9de317acb3d40e5c324fb0e577715f8f3e5fe3f25c87bac29f
MD5 dd176ca955ad2b33cd6c151ce7223f2b
BLAKE2b-256 f6ecad781dfa2063942108fe51ee66e601bfa3c10d0e9766760750d733d30d32

See more details on using hashes here.

Provenance

The following attestation bundles were made for menlo_robot_sdk-0.1.1-py3-none-any.whl:

Publisher: menlo-robot-sdk-publish.yml on menloresearch/mono

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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