Runtime Cloud Python SDK
One client for every Runtime Cloud product, sync and async. Python 3.10 or later, standard library only.
pip install withruntime
The client uses RUNTIME_API_KEY when it is set, and otherwise the connection
this machine saved when npx withruntime login connected it (one browser
approval, no key to copy). On a server, set RUNTIME_API_KEY from your secret
manager (create a key at https://withruntime.com/account/keys). Never put a key
in source code, a URL or a command-line argument.
from withruntime import Sandbox
with Sandbox.create() as sbx:
result = sbx.exec("python3 -c 'print(6 * 7)'")
print(result.exit_code, result.stdout)
Sandbox.create() needs no arguments and returns once the sandbox is running;
leaving the with block stops it. AsyncRuntime is the same client for
asyncio, method for method:
import asyncio
from withruntime import AsyncRuntime
async def main():
async with AsyncRuntime() as runtime:
async with await runtime.sandboxes.create() as sbx:
print((await sbx.exec("uname -a")).stdout)
asyncio.run(main())
A sandbox has exec, exec_stream, spawn, terminal, files (read, write,
list, glob, stat, move, remove, upload and download directories), pause,
wake, extend, fork and snapshot, and the interpreter, network,
previews and desktop products. The client has sandboxes, images,
volumes, snapshots, limits, feedback and support;
runtime.limits.get() (0.3.1 and later) says whether the key is read-only and
what its agent may still spend today. Every write carries an
idempotency key, so retries never do anything twice; errors are typed and carry
code, hint and request_id.
Behind a proxy
The client reads HTTPS_PROXY, HTTP_PROXY and NO_PROXY (upper or lower
case; lower wins when both are set), sync and async. Calls to the API and
terminal WebSockets go through HTTPS_PROXY as a CONNECT tunnel, with any
user:password@ in its address sent to the proxy. HTTP_PROXY is used only
for http:// addresses, never for the HTTPS API. NO_PROXY lists hosts to
reach directly, split by commas or spaces: a name covers its subdomains, a
leading dot is allowed, host:port limits it to one port, and * means every
host. A proxy address without a scheme is http://; only http:// proxies are
supported, and anything else fails at once with invalid_proxy. When a call
cannot get through, the error names the proxy it tried (without the password),
for example No answer from Runtime at https://api.withruntime.com through the proxy http://proxy.internal:3128 (HTTPS_PROXY).
Code written for E2B
withruntime.e2b runs code written for E2B's Python SDK on Runtime. Change
the import and set RUNTIME_API_KEY:
from withruntime.e2b import Sandbox, AsyncSandbox # was: from e2b import ...
from withruntime.e2b.code_interpreter import Sandbox # was: from e2b_code_interpreter import Sandbox
Sandboxes get E2B's defaults: 2 vCPU, 512 MiB and a 300-second timeout.
Timeouts are in seconds, as in E2B's Python SDK. runtime_create={...} passes
Runtime's own create fields, for example {"funding": "trial"}. What Runtime
does not do the way E2B does raises NotSupportedException before anything
happens, naming what to use instead. Importing withruntime alone does not
load it. The sync Sandbox is generated from the async one by
scripts/generate_e2b_sync.py.
Docs: https://withruntime.com/docs/python.
The package was called withruntime-cloud, imported as runtime_cloud, until
0.3.0. Both names still work: withruntime-cloud installs this package and
import runtime_cloud gives you the same classes.
Release files for withruntime 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| withruntime-0.4.0.tar.gz | 90.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| withruntime-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 181.2 kB
Release files / withruntime-0.4.0.tar.gz
| Download URL | withruntime-0.4.0.tar.gz |
|---|---|
| Size | 90.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
82b25b23c63c48e92cc1516ac0a30fae313b0064ad895ef60eed6ead58967621
|
|
BLAKE2b-256 checksum How to use checksums |
d9acb111e2adc3e1e2da18e4fe1e5d5d2c5ecf9043cf48484a1cbe9f5b09c6a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / withruntime-0.4.0-py3-none-any.whl
| Download URL | withruntime-0.4.0-py3-none-any.whl |
|---|---|
| Size | 90.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
937d5924b582663f37da5cb2892dc8ebbc70369ed4616c3d89d4bfba5dd097ac
|
|
BLAKE2b-256 checksum How to use checksums |
d5bd9f43c2f414e12be17ff238be59252454337f196ad5ef3b08ebd197e74103
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|