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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
774fb9221ec2aff07f185d17a7b2f3d2f9d5a9d1bfe7ad1056ae0bc359e7a5e9
|
|
| MD5 |
cb6cdfce45e0826aed8a6a9d677a87b0
|
|
| BLAKE2b-256 |
f2cdaa656af9a8c771d60c833be642e8a83281c6d24dee95f5ea7087fd2ef075
|
Provenance
The following attestation bundles were made for runta_sdk-0.0.4.tar.gz:
Publisher:
publish-sdk.yml on runta-dev/python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
runta_sdk-0.0.4.tar.gz -
Subject digest:
774fb9221ec2aff07f185d17a7b2f3d2f9d5a9d1bfe7ad1056ae0bc359e7a5e9 - Sigstore transparency entry: 1782559342
- Sigstore integration time:
-
Permalink:
runta-dev/python-sdk@9e50801e9dd14e8e69bd2b3ae91ae0740fa0c516 -
Branch / Tag:
refs/tags/v0.0.4 - Owner: https://github.com/runta-dev
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk.yml@9e50801e9dd14e8e69bd2b3ae91ae0740fa0c516 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4ee0362ba4709cb947f56cbe985eea42953e65c0a65e2ccd0f0a78c41cfc55b
|
|
| MD5 |
725ac4ebfb8deb75d431c8aa5168a0e6
|
|
| BLAKE2b-256 |
32a91d1bb09d1fbf5abdfea7de699bda0b908fd0f22f8b2650294207815b63a2
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
runta_sdk-0.0.4-py3-none-any.whl -
Subject digest:
f4ee0362ba4709cb947f56cbe985eea42953e65c0a65e2ccd0f0a78c41cfc55b - Sigstore transparency entry: 1782559495
- Sigstore integration time:
-
Permalink:
runta-dev/python-sdk@9e50801e9dd14e8e69bd2b3ae91ae0740fa0c516 -
Branch / Tag:
refs/tags/v0.0.4 - Owner: https://github.com/runta-dev
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk.yml@9e50801e9dd14e8e69bd2b3ae91ae0740fa0c516 -
Trigger Event:
release
-
Statement type: