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,
    }
)

result = sandbox.exec({"cmd": "node -v"})
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"},
        "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.1.tar.gz (16.4 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.1-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: brimble_sandbox-0.1.1.tar.gz
  • Upload date:
  • Size: 16.4 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.1.tar.gz
Algorithm Hash digest
SHA256 0f31c507c1a7b52dd1dd458d7728ef26892d436991ef683b5327d1b924c17731
MD5 d41034d1f21760bc03695ede60bc9e0b
BLAKE2b-256 eb8b41c0ca98846899884b3dd032aab3264ee24dd559072bd1329593bde4f674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for brimble_sandbox-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 28245a70ba7f95fba0e1aecc38cacb0a088800421d23bfa111fc2e5eaaf304d5
MD5 90b2d9020d21c3a92817309bdc0552c3
BLAKE2b-256 92336d5c69bd28056da11e3bc7eb695f91f45d5da727c5e3eba0e5ea0be51700

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