Skip to main content

Python SDK for Runta runtime management

Project description

Runta Python SDK

This package provides matching async and sync SDKs. Both call the public runta-api HTTP/JSON service; they do not speak control-plane gRPC directly.

Install

pip install runta-sdk

For user-facing installation, configuration, and workflow examples, see doc.md.

For a full API reference with every public method, parameter, return value, and model field, see manual.md.

import asyncio

from runta import AsyncRunta


async def main():
    async with AsyncRunta(endpoint="http://127.0.0.1:8080") as runta:
        runtime = await runta.runtimes.create("example")
        result = await runtime.exec("echo hello")
        print(result.stdout_text)


asyncio.run(main())
from runta import Runta

runta = Runta(endpoint="http://127.0.0.1:8080")
runtime = runta.runtimes.create("example")
result = runtime.exec("echo hello")
print(result.stdout_text)
runta.close()

Authentication uses Runta(token="rt_...") or RUNTA_TOKEN. The endpoint uses Runta(endpoint="..."), RUNTA_ENDPOINT, or endpoint from the optional Runta config file.

Public REST endpoint lifecycle test

You can test the SDK against the hosted REST API by pointing the client at https://rest.runta.me and providing a Runta token:

export RUNTA_TOKEN="rt_..."
uv run python scripts/runta-lifecycle.py

The lifecycle script creates a runtime, starts it, runs a command, writes and reads a remote file, uploads a local file, downloads it back, pauses/resumes the runtime, then stops and deletes it. To pass credentials explicitly:

uv run python scripts/runta-lifecycle.py \
  --endpoint https://rest.runta.me \
  --token "$RUNTA_TOKEN"

Use --keep to leave the runtime behind for inspection.

The SDK is aligned with the current crates/runta-api REST routes. The OpenAPI contract exposes single-file raw byte routes at /v1/runtimes/{runtime_id}/files for runtime.files.read, runtime.files.write, runtime.files.upload, and runtime.files.download. SDK sessions are SDK-owned handles because persistent server-side session routes are not exposed.

REST contract

contracts/runta-api.openapi.yaml is copied from runta/crates/runta-api/openapi.yaml and is used by the SDK contract tests. CI refreshes this file from the latest successful runta OpenAPI contract artifact before running tests. If the artifact is unavailable, it falls back to the dev branch raw YAML and then to the checked-in contract.

To refresh it locally after changing runta-api:

cd ~/runta
cargo make openapi
cp crates/runta-api/openapi.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
cd ~/RuntaPythonSDK
uv run pytest tests/test_openapi_contract.py

To fetch the latest published contract directly:

scripts/fetch-runta-openapi.py

Live tests

The live test module runs mocked SDK workflow tests by default:

python -m unittest tests/test_live.py -v

Pass --live to run the real runtime tests. They create real runtimes and use external egress, so run them only with scripts/dev-api.sh already running:

uv run pytest --live

Local pytest loads .env automatically. The default local file uses:

RUNTA_ENDPOINT=http://127.0.0.1:8080
RUNTA_TOKEN_FILE=../runta/.dev/cli_token_dev-a

Copy or edit .env.example if your checkout paths differ.

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

runta_sdk-0.0.4.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

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

runta_sdk-0.0.4-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file runta_sdk-0.0.4.tar.gz.

File metadata

  • Download URL: runta_sdk-0.0.4.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for runta_sdk-0.0.4.tar.gz
Algorithm Hash digest
SHA256 774fb9221ec2aff07f185d17a7b2f3d2f9d5a9d1bfe7ad1056ae0bc359e7a5e9
MD5 cb6cdfce45e0826aed8a6a9d677a87b0
BLAKE2b-256 f2cdaa656af9a8c771d60c833be642e8a83281c6d24dee95f5ea7087fd2ef075

See more details on using hashes here.

Provenance

The following attestation bundles were made for runta_sdk-0.0.4.tar.gz:

Publisher: publish-sdk.yml on runta-dev/python-sdk

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

File details

Details for the file runta_sdk-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: runta_sdk-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for runta_sdk-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f4ee0362ba4709cb947f56cbe985eea42953e65c0a65e2ccd0f0a78c41cfc55b
MD5 725ac4ebfb8deb75d431c8aa5168a0e6
BLAKE2b-256 32a91d1bb09d1fbf5abdfea7de699bda0b908fd0f22f8b2650294207815b63a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for runta_sdk-0.0.4-py3-none-any.whl:

Publisher: publish-sdk.yml on runta-dev/python-sdk

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