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() 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()
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 defaults to https://api.runta.me; override it with 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://api.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://api.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-openapi/specs/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-openapi/specs/openapi.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
cd ~/RuntaPythonSDK
uv run python -m 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 python -m 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.

Release

This repository publishes runta-sdk to PyPI from GitHub Releases.

  1. Update version in pyproject.toml.
  2. Run uv run --extra dev python -m pytest.
  3. Run rm -rf dist && uv build and uvx twine check dist/*.
  4. Commit the release change and create a GitHub Release whose tag is exactly v{pyproject version}, for example v0.0.5.

The Publish SDK workflow validates that the release tag matches pyproject.toml and publishes the built distributions to PyPI with trusted publishing.

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.6.tar.gz (40.5 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.6-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: runta_sdk-0.0.6.tar.gz
  • Upload date:
  • Size: 40.5 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.6.tar.gz
Algorithm Hash digest
SHA256 64d193f8f31d748e60e230eeaf4eb13e75b6dcc89d47e0f531bdfabb1e2637b4
MD5 2017653acab29e08bbaee107341f0926
BLAKE2b-256 5e3d2a40fda35ef65e5211ad37369f7f9ea9c05a738637f8caf5bc1f4db179bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for runta_sdk-0.0.6.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.6-py3-none-any.whl.

File metadata

  • Download URL: runta_sdk-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 29.5 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a53b8b315052befaf3e13bef813d70f6e4307817011dfe200d2a3917264c87cd
MD5 233fc428e3a58eb4f6962ac04461251a
BLAKE2b-256 8e3e1f3bb8a023c3bb6e2d41ea9b7ac97d56a38db81fbaf113a2e4b1679b8b18

See more details on using hashes here.

Provenance

The following attestation bundles were made for runta_sdk-0.0.6-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