e2b2.52.0
Published
E2B SDK that give agents cloud environments
pip install e2b
Package Downloads
Authors
Project URLs
Requires Python
>=3.10
Dependencies
python-dateutil>=2.8.2wcmatch<12,>=10.1protobuf-py<0.2,>=0.1.1httpx<1.0.0,>=0.27.0h2<5,>=4.4.1attrs>=23.2.0packaging>=24.1typing-extensions>=4.10.0dockerfile-parse<3,>=2.0.1rich>=14.0.0connectrpc<0.12,>=0.11.1pyqwest<0.11,>=0.10.0
What is E2B?
E2B is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our JavaScript SDK or Python SDK.
Run your first Sandbox
1. Install SDK
pip install e2b
2. Get your E2B API key
E2B_API_KEY=e2b_***
3. Start a sandbox and run commands
from e2b import Sandbox
with Sandbox.create() as sandbox:
result = sandbox.commands.run('echo "Hello from E2B!"')
print(result.stdout) # Hello from E2B!
4. Bind the configuration to a client
The top-level Sandbox, AsyncSandbox, Volume, AsyncVolume, Template, AsyncTemplate and Secret exports read their configuration from the environment variables. To use an explicit configuration — e.g. several API keys or domains in one process — create an E2B client and use the resource classes it exposes:
from e2b import E2B
client = E2B(api_key="e2b_***", domain="e2b.dev")
sandbox = client.Sandbox.create()
volume = client.Volume.create("my-volume")
exists = client.Template.exists("my-template")
secret = client.Secret.create("openai-api-key", "sk-***")
# The async variants are exposed as well.
async_sandbox = await client.AsyncSandbox.create()
# The classes can be assigned and used like the top-level ones.
Sandbox = client.Sandbox
paginator = Sandbox.list()
Per-call params still take precedence over the client's params, and clients are isolated from each other and from the env-configured top-level exports.
High-concurrency sandbox streams
Sandbox commands and files traffic from all sandboxes in a process shares one set of HTTP/2 connections. Each request goes to the connection with the fewest streams in flight to its host, and a new connection is dialed only when every existing one already carries E2B_STREAMS_PER_CONNECTION streams to that host (default 100, the usual server limit), up to E2B_MAX_CONNECTIONS (default 200). Long-running streams therefore never queue behind one connection's concurrent-stream limit, and idle processes keep a single connection.
Both variables are read when e2b is imported:
E2B_STREAMS_PER_CONNECTION=50 E2B_MAX_CONNECTIONS=400 python eval.py
5. Code execution with Code Interpreter
If you need run_code(), install the Code Interpreter SDK:
pip install e2b-code-interpreter
from e2b_code_interpreter import Sandbox
with Sandbox.create() as sandbox:
execution = sandbox.run_code("x = 1; x += 1; x")
print(execution.text) # outputs 2
6. Check docs
Visit E2B documentation.
7. E2B cookbook
Visit our Cookbook to get inspired by examples with different LLMs and AI frameworks.