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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f0407dbaa5f1f6c73b5856f6546affd6116e951dc20c3ee7676f2b3edffa420
|
|
| MD5 |
761b9f5a9dd0a12217651e9af9b29e2b
|
|
| BLAKE2b-256 |
31f9fc0d440a48c9139c8438edbd070111d46be9a1796446272180f92cf114eb
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
menlo_robot_sdk-0.1.1.tar.gz -
Subject digest:
5f0407dbaa5f1f6c73b5856f6546affd6116e951dc20c3ee7676f2b3edffa420 - Sigstore transparency entry: 1739047495
- Sigstore integration time:
-
Permalink:
menloresearch/mono@24d7628f2f753b8c5fb29f0f30bfae651839521e -
Branch / Tag:
refs/tags/menlo-robot-sdk-v0.1.1 - Owner: https://github.com/menloresearch
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
menlo-robot-sdk-publish.yml@24d7628f2f753b8c5fb29f0f30bfae651839521e -
Trigger Event:
push
-
Statement type:
File details
Details for the file menlo_robot_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: menlo_robot_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 25.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44b3a955b6d64d9de317acb3d40e5c324fb0e577715f8f3e5fe3f25c87bac29f
|
|
| MD5 |
dd176ca955ad2b33cd6c151ce7223f2b
|
|
| BLAKE2b-256 |
f6ecad781dfa2063942108fe51ee66e601bfa3c10d0e9766760750d733d30d32
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
menlo_robot_sdk-0.1.1-py3-none-any.whl -
Subject digest:
44b3a955b6d64d9de317acb3d40e5c324fb0e577715f8f3e5fe3f25c87bac29f - Sigstore transparency entry: 1739047568
- Sigstore integration time:
-
Permalink:
menloresearch/mono@24d7628f2f753b8c5fb29f0f30bfae651839521e -
Branch / Tag:
refs/tags/menlo-robot-sdk-v0.1.1 - Owner: https://github.com/menloresearch
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
menlo-robot-sdk-publish.yml@24d7628f2f753b8c5fb29f0f30bfae651839521e -
Trigger Event:
push
-
Statement type: