Python SDK for the Superserve sandbox API
Project description
superserve
Python SDK for the Superserve sandbox API — run code in isolated Firecracker MicroVMs.
Installation
pip install superserve
# or
uv add superserve
# or
poetry add superserve
Requires Python ≥ 3.9.
Quick Start
from superserve import Sandbox
sandbox = Sandbox.create(name="my-sandbox")
result = sandbox.commands.run("echo hello")
print(result.stdout)
sandbox.files.write("/app/data.txt", b"content")
text = sandbox.files.read_text("/app/data.txt")
sandbox.kill()
Authentication
Set the SUPERSERVE_API_KEY environment variable:
export SUPERSERVE_API_KEY=ss_live_...
Or pass it explicitly:
sandbox = Sandbox.create(
name="my-sandbox",
api_key="ss_live_...",
base_url="https://api.superserve.ai", # optional
)
Async usage
import asyncio
from superserve import AsyncSandbox
async def main():
sandbox = await AsyncSandbox.create(name="async-example")
try:
result = await sandbox.commands.run("echo hello")
print(result.stdout)
finally:
await sandbox.kill()
asyncio.run(main())
Streaming command output
result = sandbox.commands.run(
"pip install numpy",
on_stdout=lambda data: print(data, end=""),
on_stderr=lambda data: print(data, end=""),
timeout_seconds=120,
)
Error handling
from superserve import (
SandboxError,
AuthenticationError, # 401
ValidationError, # 400
NotFoundError, # 404
ConflictError, # 409 — invalid state for operation
SandboxTimeoutError, # request timed out (does not shadow builtin TimeoutError)
ServerError, # 500
)
try:
sandbox.pause()
except ConflictError:
# Sandbox is not in a pausable state
pass
Full documentation
Development
# From repo root:
bunx turbo run build --filter=@superserve/python-sdk
bunx turbo run typecheck --filter=@superserve/python-sdk
bunx turbo run lint --filter=@superserve/python-sdk
License
Apache License 2.0.
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
superserve-0.7.3.tar.gz
(33.6 kB
view details)
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 superserve-0.7.3.tar.gz.
File metadata
- Download URL: superserve-0.7.3.tar.gz
- Upload date:
- Size: 33.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b641e176ee6080d0db62f20067c61b93b1cbed180e06cffd9c6c52d85b9c2ecd
|
|
| MD5 |
e69fb39fd7fc77d1631b42502d8ff73d
|
|
| BLAKE2b-256 |
88a67e693b85a778a38ad95854019b0d8d9041cf0eb4cea7c5a97c217f630098
|
File details
Details for the file superserve-0.7.3-py3-none-any.whl.
File metadata
- Download URL: superserve-0.7.3-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90c5d1b1d303487d20807f78d0b52959102a853fe4988db2469c6b9e1bee9d6c
|
|
| MD5 |
82bb634ab06a2b3cc60e7e4e3cdd13a4
|
|
| BLAKE2b-256 |
0b1d8be13151bb59f6ec6a397a6d162c2a5ba294f85bbba1d78ebbb08d20ba49
|