contree-client
Python client for the Contree API — sandboxed code execution combining virtual machine isolation with container operational efficiency.
Synchronous clients are named ContreeClient, asynchronous ones are
named ContreeAsyncClient; every backend shares the same interface:
| Backend | Extra | Import |
|---|---|---|
| http.client | — (stdlib) | from contree_client.http import ContreeClient |
| urllib3 | contree-client[urllib3] |
from contree_client.urllib3 import ContreeClient |
| requests | contree-client[requests] |
from contree_client.requests import ContreeClient |
| httpx | contree-client[httpx] |
from contree_client.httpx import ContreeClient / ContreeAsyncClient |
| aiohttp | contree-client[aiohttp] |
from contree_client.aiohttp import ContreeAsyncClient |
Or let the package pick the first installed backend:
from contree_client.sync import ContreeClient
from contree_client.asyncio import ContreeAsyncClient
Quick start
from contree_client.sync import ContreeClient
# reuse a saved Contree profile,
# or pass credentials directly: ContreeClient("IAM_TOKEN", project=...)
with ContreeClient.from_profile() as client:
response = client.spawn_instance("uname -a", "tag:ubuntu:latest", shell=True)
for event in client.iter_operation_events(response.uuid, follow=True):
print(event.type, event.data)
Use cases
Run a command and read its output:
from contree_client import OperationStatus
response = client.spawn_instance(
"echo hello",
"tag:ubuntu:latest",
shell=True,
disposable=True, # do not persist a result image
timeout=60,
)
operation = client.wait_operation(response.uuid)
assert operation.status is OperationStatus.SUCCESS
print(operation.metadata.result.stdout.as_text())
Follow the live event stream with transparent reconnection
(Last-Event-Id resume; ends on the completion event):
import sys
from contree_client import decode_chunk
for event in client.follow_operation_events(response.uuid):
if event.type in ("stdout", "stderr"):
sys.stdout.buffer.write(decode_chunk(event.data))
Retry connection errors and 410/425/429/5xx responses automatically:
from contree_client import RetryPolicy
client = ContreeClient.from_profile(retry=RetryPolicy())
Stage files into the sandbox:
from contree_client import FileSpec
uploaded = client.upload_file(open("data.txt", "rb"))
client.spawn_instance(
"wc -l /work/data.txt",
"tag:ubuntu:latest",
shell=True,
files={"/work/data.txt": FileSpec(uuid=uploaded.uuid, mode="0644")},
)
Import an image and inspect it without spawning anything:
from contree_client import ImageImportRegistry
operation_id = client.import_image(
ImageImportRegistry(url="docker://docker.io/library/busybox:latest"),
tag="busybox:latest",
)
image_uuid = client.inspect_find_image_by_tag("busybox:latest")
print(client.inspect_image_list(image_uuid, "/etc").files)
Download a directory as a tar stream:
with open("etc.tar", "wb") as archive:
for chunk in client.inspect_image_archive(image_uuid, "/etc"):
archive.write(chunk)
Asynchronous flavour mirrors the sync API exactly:
from contree_client.asyncio import ContreeAsyncClient
async with ContreeAsyncClient.from_profile() as client:
me = await client.whoami()
print(me.permissions)
Test your code without a server — the in-memory double from
contree_client.testing implements the same interface as every real
backend; unmocked methods raise, calls are recorded:
from contree_client.testing import ContreeClient
client = ContreeClient()
client.mock("spawn_instance", spawn_response)
client.mock("iter_operation_events", [stdout_event, exit_event])
run_my_code(client)
assert client.calls_for("spawn_instance")
Debug logging (redacted, off by default):
import logging
from contree_client.types import set_log_level
set_log_level(logging.DEBUG)
Copyright
Nebius B.V. 2026, Licensed under the Apache License, Version 2.0 (see "LICENSE" file).
Metadata
Release files for contree-client 0.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| contree_client-0.4.3.tar.gz | 164.8 kB | With provenance | Details for contree_client-0.4.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| contree_client-0.4.3-py3-none-any.whl | Python 3 | none | any | Details for contree_client-0.4.3-py3-none-any.whl |
Total release size: 279.5 kB
Release files / contree_client-0.4.3.tar.gz
| Download URL | contree_client-0.4.3.tar.gz |
|---|---|
| Size | 164.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6316c28da25827deaec6c044def54f358bf3d7bd35581c30ba3836bc5bf48f81
|
|
BLAKE2b-256 checksum How to use checksums |
2a4b81f5d89605c0b5b3de7b7c8eb3c9cf81eb70a8f364932f37918f9aea5044
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logRelease files / contree_client-0.4.3-py3-none-any.whl
| Download URL | contree_client-0.4.3-py3-none-any.whl |
|---|---|
| Size | 114.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c3d3df65d93eaa7de36acd1e9dc7921efba1d73edc73b9f29fd10fa2f4a6c7c
|
|
BLAKE2b-256 checksum How to use checksums |
68021184de8d2186047773f12d69e05c83e7434a57ee7c9c98d06ae685aae039
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logSecurity for contree-client 0.4.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for contree_client-0.4.3.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.