Skip to main content

Python SDK for the Brimble Sandbox API

Project description

brimble-sandbox

Python SDK for the Brimble Sandbox API.

Install

pip install brimble-sandbox

Quickstart

from brimble_sandbox import Sandbox

client = Sandbox()  # reads BRIMBLE_SANDBOX_KEY from env

sandbox = client.sandboxes.create_ready(
    {
        "template": "node-22",
        "persistent": True,
        "persistentDiskGB": 20,
        "mountPath": "/workspace",
    }
)

result = sandbox.exec({"cmd": "node -v", "env": {"NODE_ENV": "production"}})
print(result["stdout"])

sandbox.put_files(
    [
        {"path": "/tmp/hello.txt", "body": "hello from batch"},
        {"path": "/tmp/config.json", "body": '{"mode":"dev"}'},
    ]
)

existing = client.sandboxes.get(sandbox.id)
existing.destroy()

Ergonomic helpers

# Create + wait in one call
created = client.sandboxes.create_ready({"template": "node-22"})

# Get + wait in one call
loaded = client.sandboxes.get_ready(created.id)

# Create volume + attach at sandbox creation time
with_volume = client.sandboxes.with_volume(
    {
        "sandbox": {"template": "node-22", "mountPath": "/var/www/html"},
        "volume": {"name": "workspace-disk", "sizeGB": 20},
    }
)

# Auto-wait on runtime calls
with_volume.exec({"cmd": "npm -v"}, wait_until_ready=True)

# Streaming SSE output
stream = with_volume.exec_stream({"cmd": "for i in 1 2 3; do echo $i; done"})

# Templates + regions
templates = client.sandboxes.list_templates()
node_template = client.sandboxes.get_template("node-22")
regions = client.sandboxes.list_regions()

# Iterate through all sandboxes
for sb in client.sandboxes.iterate({"teamId": "<team>"}):
    print(sb.id, sb.status)

Volume attachment is create-time only. Use create(..., volumeId=...) or with_volume(...).

Auth

Requests are authenticated with the x-brimble-key header.

  • Pass api_key to Sandbox(...)
  • Or set BRIMBLE_SANDBOX_KEY in your environment

Retry, timeout, idempotency

from brimble_sandbox import RetryOptions, Sandbox

client = Sandbox(
    retry=RetryOptions(max_attempts=3, base_delay_ms=250, max_delay_ms=2000),
)

sandbox = client.sandboxes.create(
    {"template": "node-22"},
    idempotency_key="create-sandbox-123",
)

If region is omitted, the SDK resolves the first available sandbox region automatically.

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

brimble_sandbox-0.1.2.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

brimble_sandbox-0.1.2-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file brimble_sandbox-0.1.2.tar.gz.

File metadata

  • Download URL: brimble_sandbox-0.1.2.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for brimble_sandbox-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8e0bddfde3bbc5639289907996a5df0f015eacebae30a3d5639400a2791ef3ea
MD5 6d14c11fb4448f5362c342a19953ad57
BLAKE2b-256 411e2487dd1f89c26a16f56ff455b3f9c14abac3b4a4fb152ff57e09a97cc5cd

See more details on using hashes here.

File details

Details for the file brimble_sandbox-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for brimble_sandbox-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b81f67fd903fdbbfefa0af2b2a24a8c95f404002f4ebbe1f12e3d1805e485b83
MD5 17fa76744d9464b8928b86a36ad16d02
BLAKE2b-256 073965c84ebd5a911982e3e6818c237ea2469831efe4f7dc57b717dd428ecf4b

See more details on using hashes here.

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