Metadata-Version: 2.4
Name: servo-client
Version: 0.2.1
Summary: Python SDK for Servo's hosted robot model API
Project-URL: Documentation, https://servo.mintlify.site/
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: cryptography>=42
Requires-Dist: httpx[http2]
Requires-Dist: msgpack>=1.0.5
Requires-Dist: numpy>=1.26
Requires-Dist: pydantic>=2
Requires-Dist: protobuf<7,>=6.33.6
Requires-Dist: websockets>=13
Provides-Extra: livekit
Requires-Dist: livekit==1.1.14; extra == "livekit"

# servo-client

The public Python SDK and CLI for Servo.

## Install

```bash
pip install 'servo-client>=0.2.1,<0.3'
export SERVO_BASE_URL="https://<your-servo-control-plane>"
servo login
servo key create --label laptop
export SERVO_API_KEY="sk_servo_..."
```

## Bimanual YAM example

```python
import os
import servo
from servo import templates

sv = servo.Servo(
    base_url=os.environ["SERVO_BASE_URL"],
    api_key=os.environ["SERVO_API_KEY"],
)
robot = sv.robots.register(templates.yam())
model = sv.models.get("molmoact2")

report = model.inspect(robot)
if not report.compatible:
    raise RuntimeError(report.issues)

policy = model.policy(robot, instruction="put everything into the box")
prediction = policy.act(templates.sample_observation(robot))
```

Use `sv.session(policy)` for a robot control loop. The client never automatically replays mutations or actions.

## Package boundary

Public application APIs live in `servo`. Extension packages are `servo_action_session`, `servo_data`, and `servo_observation`. `servo_contracts` and `servo_telemetry` are implementation dependencies.

Requires Python 3.12+, a Servo control-plane URL, and an organization API key.

[Full documentation](https://servo.mintlify.app/)
