Runtime Python SDK and CLI
Project description
runtime-sdk
Python SDK and CLI for Runtime.
Install
uv tool install runtime-sdk
To upgrade an existing install:
uv tool upgrade runtime-sdk
Configure
The CLI talks to http://127.0.0.1:8080 by default. Override it with:
export RUNTIME_BASE_URL=https://api.runruntime.dev
Or pass --base-url per command.
Usage
# Auth
runtime login you@example.com
runtime verify 123456
runtime whoami
runtime logout
runtime login --api-key rt_live_...
# Computers
runtime create # in a real TTY, creates then drops you into the console
runtime create myapp --command "python3 app.py" --cwd /home/ubuntu --port 3000
runtime enter <name-or-id> # accepts slug/name like test, or the computer id
runtime list
runtime info <id>
runtime start <id>
runtime run <id> "echo hello"
runtime run <id> "apt install -y nodejs" --uid 0
runtime publish <id> 3000
runtime delete <id>
Python
from runtime_sdk import RuntimeClient
client = RuntimeClient(base_url="https://api.runruntime.dev", api_key="rt_live_...")
# Create a computer
computer = client.create_computer()
print(computer["public_url"]) # https://goldbird.runruntime.dev
# Or create one with a durable startup command.
# That startup config is replayed after cold restore / auto-wake.
app = client.create_computer(
slug="myapp",
command="python3 app.py",
cwd="/home/ubuntu",
port=3000,
)
# Run a command
result = client.run_command(computer["id"], "echo hello")
print(result["stdout"])
# Wake a cold computer explicitly
client.start_computer(app["id"])
# Pin the public URL to a local app port
client.publish_port(computer["id"], 3000)
# List, info, delete
computers = client.list_computers()
info = client.get_computer(computer["id"])
client.delete_computer(computer["id"])
Development
For fast local backend iteration:
make local-backend
For deploying and testing against the Hetzner production server:
make sync SERVER_IP=x.x.x.x SSH_USER=root
make smoke
Use make deploy instead of make sync when migrations, env
files, Caddy, or systemd units changed.
Cold restore and public auto-wake replay the saved startup command only for
computers created with --command + --port (or the SDK command/port
arguments). If you start an app later via a one-off runtime run, the
filesystem is restored after going cold, but that ad-hoc process is not.
Run the SDK unit tests through the backend project environment:
uv run python -m unittest scripts.tests.test_runtime_sdk
Release
Preview the next release without changing files:
./scripts/release_runtime_sdk.sh --dry-run
Publish a patch release:
./scripts/release_runtime_sdk.sh --publish
Publish a different version bump:
./scripts/release_runtime_sdk.sh --bump minor --publish
The script loads backend/.env automatically, so UV_PUBLISH_TOKEN can live there.
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 runtime_sdk-0.4.8.tar.gz.
File metadata
- Download URL: runtime_sdk-0.4.8.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
264dfaf588de0da5ae7324b812f14e51f5da70e5046102b7e14f68eee9519676
|
|
| MD5 |
f0fa10a78991e693ff09ad598bcfe848
|
|
| BLAKE2b-256 |
62e875571ca3347b0961a6dbe4f0361bbcbf5a95f6a9da765262d044a303c87c
|
File details
Details for the file runtime_sdk-0.4.8-py3-none-any.whl.
File metadata
- Download URL: runtime_sdk-0.4.8-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3903eea89e51ab4434d6de87508020fb290c49e9b7938b821ad702821b58b5f
|
|
| MD5 |
115e63ebcbc4b75975271867e90a6a27
|
|
| BLAKE2b-256 |
1045adabdd80b1e6ec0e26f9873bdd33371685043799bb878b9af0c60f7c2a36
|