Metadata-Version: 2.4
Name: servo-client
Version: 0.4.0
Summary: Python SDK for Servo's hosted robot model API
Project-URL: Documentation, https://servo.mintlify.app/
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: av>=12
Requires-Dist: cryptography>=42
Requires-Dist: httpx[http2]
Requires-Dist: mcap>=1.3
Requires-Dist: msgpack>=1.0.5
Requires-Dist: numpy>=1.26
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.44
Requires-Dist: opentelemetry-sdk>=1.44
Requires-Dist: pydantic>=2
Requires-Dist: protobuf<7,>=6.33.6
Requires-Dist: websockets>=13

# servo-client

Python and CLI access to Servo's hosted robot policy service.

```bash
pip install 'servo-client>=0.4,<0.5'
export SERVO_BASE_URL="https://<your-servo-control-plane>"
servo login
servo account
servo key create --label yam-cell-01
export SERVO_API_KEY="sk_servo_..."
```

Register a Bimanual YAM on its robot computer, then list compatible models:

```bash
servo robot setup yam-cell-01 \
  --config /opt/yam/configs/yam_left.yaml \
  --config /opt/yam/configs/yam_right.yaml \
  --region us-west-2

servo model list yam-cell-01
```

Run pi0.5 with the calibrated robot object from your application:

```python
import os

import servo
from my_robot_app import open_yam

sv = servo.Servo(
    base_url=os.environ["SERVO_BASE_URL"],
    api_key=os.environ["SERVO_API_KEY"],
)
robot = sv.robots.attach("yam-cell-01", runtime=open_yam)
model = sv.models.get("pi0.5")
deployment = model.deploy(robot=robot).wait(timeout_s=900)
policy = deployment.policy(robot, instruction="place the red lid on the black box")
check = robot.check(policy)
print(check.completed, len(check.chunks), check.steps)
robot.run(policy, seconds=120)
```

`open_yam` is the factory function that opens the calibrated YAM runtime. Servo recognizes its
camera, joint-state, command, and close methods directly. `--config` accepts your local hardware
configuration files (or placeholder files for testing), which Servo hashes to record an immutable
fingerprint. Calibration and device configuration stay in your application.

Save `deployment.id` and reuse it with `sv.deployments.get(deployment_id)`. Review active capacity with
`servo deployment list`, and stop unused capacity with `servo deployment stop <deployment-id>`.

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

[Quickstart](https://servo.mintlify.app/quickstart) · [Robots and calibration](https://servo.mintlify.app/guides/robots) · [Robot fleets](https://servo.mintlify.app/guides/fleet-deployment)
