sistemo (Python)
Run AI agents and untrusted code in real isolated Firecracker microVMs — self-host for free or use the cloud.
pip install sistemo
On Debian, Ubuntu and Fedora the system Python is marked externally managed
(PEP 668), so that call is refused with error: externally-managed-environment.
Install into a virtual environment instead — this is about your OS, not this
package:
python3 -m venv .venv && source .venv/bin/activate
pip install sistemo
Quickstart (< 10 lines)
First, get an API key from the dashboard (Dashboard → API Keys) and export it:
export SISTEMO_API_KEY=sk_live_xxxxxxxx
Then save this as hello.py — it is a Python file, not something to paste at a shell
prompt:
# hello.py
from sistemo import Sandbox
with Sandbox() as sb: # reads SISTEMO_API_KEY
result = sb.run("python3 -c 'print(2 + 2)'")
print(result.stdout, result.exit_code) # "4\n" 0
Then run it:
python hello.py
Configuration
SISTEMO_API_KEY |
your key (sk_live_…). Required. |
SISTEMO_BASE_URL |
override the API URL (default https://api.sistemo.io; e.g. your self-hosted control plane). |
Or pass them explicitly: Sandbox(api_key="sk_live_…", base_url="https://…").
API
sb = Sandbox(vcpus=1, memory_mb=1024, stack="base") # provisions a microVM
res = sb.run("echo hi && uname -a", timeout=30) # -> ExecResult
res.stdout, res.stderr, res.exit_code, res.ok
sb.close() # destroy (or use `with`)
A read API key can list resources but cannot create sandboxes or run code — use a full key with the SDK.
Errors
from sistemo import APIError, AuthError, QuotaExceededError
try:
with Sandbox() as sb:
sb.run("...")
except QuotaExceededError as e:
# An account limit was reached. `detail` names which one and how much is in
# use. Retrying SUCCEEDS once you free that resource — stop or destroy a
# machine, delete a volume — or once the limit is raised.
print(e.detail)
except AuthError:
... # 401/403 — key missing/invalid/revoked, or read-only key
except APIError as e:
print(e.status, e.detail, e.code)
Both QuotaExceededError and AuthError arrive as HTTP 403, so catch
QuotaExceededError first — it is a subclass of APIError, not of AuthError,
precisely because the two need opposite handling: an auth failure never succeeds
on retry, a quota refusal does once you free something. GET /v1/quotas reports
every limit alongside current usage.
Zero runtime dependencies (Python stdlib only). Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 sistemo-0.1.1.tar.gz.
File metadata
- Download URL: sistemo-0.1.1.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38081c355cb34e382282e417e62da01eaab978a66709cb97facca15c677612c0
|
|
| MD5 |
8630b411820ee873b113ca2da74df163
|
|
| BLAKE2b-256 |
852a612efe9a81f24413ad64df472d6a54cea978aa322360823b54dc3be07a05
|
Provenance
The following attestation bundles were made for sistemo-0.1.1.tar.gz:
Publisher:
release.yml on sistemo0/sistemo-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sistemo-0.1.1.tar.gz -
Subject digest:
38081c355cb34e382282e417e62da01eaab978a66709cb97facca15c677612c0 - Sigstore transparency entry: 2729710379
- Sigstore integration time:
-
Permalink:
sistemo0/sistemo-sdk@0c648a4679cce30e97a76c5ba948193b87b5a3cc -
Branch / Tag:
refs/tags/python-v0.1.1 - Owner: https://github.com/sistemo0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0c648a4679cce30e97a76c5ba948193b87b5a3cc -
Trigger Event:
push
-
Statement type:
File details
Details for the file sistemo-0.1.1-py3-none-any.whl.
File metadata
- Download URL: sistemo-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e5864d035b7135050ce68e2bdb0193b9128db251277574049c293e0c65d6250
|
|
| MD5 |
333660f07902542013500772d2e68c14
|
|
| BLAKE2b-256 |
ca7e6c5a16d9c29d1a4638792f32c62c6187fbeb44b0c9fe0cd0ff221649ce58
|
Provenance
The following attestation bundles were made for sistemo-0.1.1-py3-none-any.whl:
Publisher:
release.yml on sistemo0/sistemo-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sistemo-0.1.1-py3-none-any.whl -
Subject digest:
9e5864d035b7135050ce68e2bdb0193b9128db251277574049c293e0c65d6250 - Sigstore transparency entry: 2729710608
- Sigstore integration time:
-
Permalink:
sistemo0/sistemo-sdk@0c648a4679cce30e97a76c5ba948193b87b5a3cc -
Branch / Tag:
refs/tags/python-v0.1.1 - Owner: https://github.com/sistemo0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0c648a4679cce30e97a76c5ba948193b87b5a3cc -
Trigger Event:
push
-
Statement type: