Skip to main content

servo-client

The public Python SDK and customer CLI for Servo robot policies, world models, datasets, jobs, and deployments.

Install

pip install 'servo-client>=0.2,<0.3'

Servo releases two architecture-specific Linux wheels containing the native Quinn action-session binary, one portable wheel, and a source distribution. Native clients prefer a validated QUIC route; WSS and H2 binary remain ordered pre-inference fallbacks. Portable installations use the advertised non-native routes. Every route carries the same ActionSession v4 Protobuf frames.

LiveKit is an explicit optional transport:

pip install 'servo-client[livekit]>=0.2,<0.3'

Configure the control plane

Servo has no compiled-in hosted URL. Set the origin supplied by your Servo administrator so an old package cannot silently send credentials or robot traffic to a retired deployment:

export SERVO_BASE_URL='https://<your-servo-control-plane>'

The client also accepts base_url= explicitly. The argument takes precedence over the environment.

Sign in

The distribution installs the customer-safe servo CLI:

servo login
servo whoami
servo key create --label laptop
servo deployment list

Serving, benchmarking, profiling, and platform-operator commands belong to the private servo-platform distribution and are not installed by servo-client.

Quickstart

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.so101())
observation = templates.sample_observation(robot)
model = sv.models.get("smolvla")

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

prediction = model.policy(robot, instruction="pick up the cube").act(observation)
print(prediction.actions[0])

Action sessions

sv.session(policy) negotiates the transports advertised by the selected deployment. Once an inference request could have executed, Servo never replays it over another route.

LiveKit requires both deployment and session opt-in:

provider = servo.ServingProvider(os.environ["SERVO_SERVE_PROVIDER"])
deployment = model.deploy(
    robot,
    serve_provider=provider,
    action_session_channels=("livekit", "wss"),
)
policy = deployment.policy(robot, instruction="pick up the cube")

with sv.session(
    policy,
    action_session=servo.ActionSessionOptions(channels=("livekit",)),
) as session:
    prediction = session.act(observation)

Public boundary

Application compatibility is promised for documented imports from servo and these client namespaces:

  • Stable: robots, adapters, models, datasets/data, deployments, jobs, licenses, and secrets.
  • Advanced: direct endpoint helpers (servo.connect, servo.attach, EndpointGrant) and sv.self_hosted.

The distribution also carries dependency-light support packages:

  • Extension contracts: servo_action_session, servo_data, and servo_observation.
  • Implementation dependencies: servo_contracts and servo_telemetry.

Importability of an implementation package is not a customer compatibility promise. The client wheel excludes product-only profiler integration and does not contain servo_platform, servo_runtimes, FastAPI routes, database models, provider launchers, provider credentials, or private endpoint URLs.

Failure and retry policy

The client does not automatically replay mutations or robot actions. Transport and server failures are returned as typed Servo errors so applications can choose a recovery policy appropriate to the operation. Idempotent reads may be retried by application code. Configure timeout= on servo.Servo; long-running synchronous jobs can require a larger read timeout than catalog calls.

Requirements

  • Python 3.12+
  • A Servo control-plane URL
  • An organization API key for authenticated operations

Full documentation: https://servo.mintlify.site/

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

servo_client-0.2.0.tar.gz (484.4 kB view details)

Uploaded Source

Built Distributions

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

servo_client-0.2.0-py3-none-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

servo_client-0.2.0-py3-none-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

servo_client-0.2.0-py3-none-any.whl (556.9 kB view details)

Uploaded Python 3

File details

Details for the file servo_client-0.2.0.tar.gz.

File metadata

  • Download URL: servo_client-0.2.0.tar.gz
  • Upload date:
  • Size: 484.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for servo_client-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2c3ec0904647b5b6eeda01b8348c833dbf7bfa8ab4e0afa72bacadda69d636d6
MD5 b114c1efa88f1c6e93a7a81c7905c3b4
BLAKE2b-256 e61c0d263bf52af123c98673991e68d8181d3b8fac5116a90801ab0d5ba2ec9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for servo_client-0.2.0.tar.gz:

Publisher: pypi-publish.yml on npow/servo

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

File details

Details for the file servo_client-0.2.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for servo_client-0.2.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ade394d5f4bd2d3af29b432416754dcbdda7ad7b7f79c87d72df3d64548163e2
MD5 8f36c4bd0e51ebe9c4d5b1fa4370a215
BLAKE2b-256 a5b48704872706c4809c0027e1120fbf4514e0dfc61bfab69e8b1f34571148da

See more details on using hashes here.

Provenance

The following attestation bundles were made for servo_client-0.2.0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on npow/servo

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

File details

Details for the file servo_client-0.2.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for servo_client-0.2.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e0de6a895253fa799ca125c3d88f91a10a8e7fe77b1fbc311ab9c0774da3de88
MD5 af3dbadb329b70f76626b4e41592f84d
BLAKE2b-256 ee2cadc8d02f879ce1be1b01f3e19c50c8f17ba00bd62db6e8ca92f795596b93

See more details on using hashes here.

Provenance

The following attestation bundles were made for servo_client-0.2.0-py3-none-manylinux_2_28_aarch64.whl:

Publisher: pypi-publish.yml on npow/servo

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

File details

Details for the file servo_client-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: servo_client-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 556.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for servo_client-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50f40956211aca4198dd6929fb804008469ca1f66336423c720e630f096968e3
MD5 80d1c10e925bbef93c080b1dde80e4bc
BLAKE2b-256 3b0fd77b7169eba4e5ff4f9f24d634d383d206f918d2b9f4787d1c711754bb4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for servo_client-0.2.0-py3-none-any.whl:

Publisher: pypi-publish.yml on npow/servo

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

Release history Release notifications | RSS feed

0.4.0

4 files

0.2.1

4 files

This release

0.2.0 This release

4 files

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

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