impello
The Python SDK for Impello sandboxes.
Install
pip install impello
Use
from impello import Sandbox
sandbox = Sandbox.create()
result = sandbox.commands.run("echo hello")
print(result.stdout)
sandbox.pause()
Set your key in the environment, or pass it to each call:
export IMPELLO_API_KEY=imp_...
Sandbox.list(api_key="imp_...")
For a process that talks to more than one account or more than one fleet, bind the settings to a client instead:
from impello import Impello
client = Impello(api_key="imp_...")
sandbox = client.Sandbox.create()
Settings
Every setting reads an IMPELLO_ name first, then the matching E2B_ name.
| Variable | Default | What it does |
|---|---|---|
IMPELLO_API_KEY |
none | The key. Starts with imp_ |
IMPELLO_DOMAIN |
sandbox.impello.ai |
The domain the API and the sandboxes sit on |
IMPELLO_API_URL |
https://api.<domain> |
The API address. Set this to reach a self-hosted API |
IMPELLO_SANDBOX_URL |
derived from the domain | The address a sandbox is reached at |
IMPELLO_DEBUG |
false |
Talk to http://localhost:3000 |
The E2B_ fallback is the migration, not politeness. Callers already export
E2B_API_KEY, E2B_API_URL and E2B_DOMAIN. Rename when it suits you.
Nothing breaks if you never do.
Only the domain has a default. Without one the SDK falls back to E2B's own
e2b.app, and the failure is a connection to somebody else's fleet.
Params passed to a single call beat a client's params, which beat the environment. That is E2B's own rule and this package keeps it.
Why this one is a wrapper, when the TypeScript one is a copy
The TypeScript client cannot talk to Impello at all. Its validateApiKey runs
inside the ApiClient constructor, is not exported, has no off switch, and
accepts only e2b_. So @impello/sdk had to be a copy.
Python has no e2b_ pattern anywhere. It takes an imp_ key today. So the
only thing missing is where to send the request, and that is all this package
supplies.
It supplies it through ClientFactory._resolve_api_params, which is E2B's own
seam for binding defaults. That means one method is overridden rather than the
twelve descriptors on Sandbox, and e2b itself is untouched: importing
impello does not retarget a plain e2b call in the same process, and it
never writes to os.environ. A test holds that.
This package will be replaced
A permanent wrapper is the worst outcome. pip show impello prints e2b, and
the client sends a publisher: e2b header to our own servers. So the wrapper
ships now and the full clone lands before we take payments, with
e2b/api/client/ regenerated from our own spec.
See docs/decisions/sdk-self-contained.md.
Develop
python -m venv .venv
./.venv/bin/pip install -e . pytest
./.venv/bin/python -m pytest
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 impello-0.2.0.tar.gz.
File metadata
- Download URL: impello-0.2.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99632f352f27b0bf1f1b1ff32c383b530f72874488dc9d50de5edc07688d09e4
|
|
| MD5 |
697ec285523c67544b33a05d95a5b047
|
|
| BLAKE2b-256 |
931a5b3b49ab4a79897896dabd7ee5a769ec3e6335a78db9d98c46e22e9eb741
|
Provenance
The following attestation bundles were made for impello-0.2.0.tar.gz:
Publisher:
publish-sdk-python.yml on 21-Dreams/impello
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
impello-0.2.0.tar.gz -
Subject digest:
99632f352f27b0bf1f1b1ff32c383b530f72874488dc9d50de5edc07688d09e4 - Sigstore transparency entry: 2652639016
- Sigstore integration time:
-
Permalink:
21-Dreams/impello@723eb10a8e63886fd3f509f366d59b80c9ead1a7 -
Branch / Tag:
refs/tags/sdk-python-v0.2.0 - Owner: https://github.com/21-Dreams
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk-python.yml@723eb10a8e63886fd3f509f366d59b80c9ead1a7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file impello-0.2.0-py3-none-any.whl.
File metadata
- Download URL: impello-0.2.0-py3-none-any.whl
- Upload date:
- Size: 4.9 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 |
76d7997861731d348f954e3ddcf0e89f283a3882def4788ff2a8c5d82e6c3866
|
|
| MD5 |
3ed4fdd74ee8e212ee0490d10cdbd8e6
|
|
| BLAKE2b-256 |
4d5f4476b63012483361ac4049243668868bb5cdcd6f4a646de3ef687f739b41
|
Provenance
The following attestation bundles were made for impello-0.2.0-py3-none-any.whl:
Publisher:
publish-sdk-python.yml on 21-Dreams/impello
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
impello-0.2.0-py3-none-any.whl -
Subject digest:
76d7997861731d348f954e3ddcf0e89f283a3882def4788ff2a8c5d82e6c3866 - Sigstore transparency entry: 2652639077
- Sigstore integration time:
-
Permalink:
21-Dreams/impello@723eb10a8e63886fd3f509f366d59b80c9ead1a7 -
Branch / Tag:
refs/tags/sdk-python-v0.2.0 - Owner: https://github.com/21-Dreams
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-sdk-python.yml@723eb10a8e63886fd3f509f366d59b80c9ead1a7 -
Trigger Event:
push
-
Statement type: