Skip to main content

E2B SDK that give agents cloud environments

Project description

E2B Python SDK

The E2B Python SDK provides an interface for managing cloud environments for AI agents.

This SDK gives your agent a full cloud development environment that's sandboxed. That means:

  • Access to Linux OS
  • Using filesystem (create, list, and delete files and dirs)
  • Run processes
  • Sandboxed - you can run any code
  • Access to the internet

These cloud environments are meant to be used for agents. Like a sandboxed playgrounds, where the agent can do whatever it wants.

Installation

pip install e2b

Usage

Initialize new cloud environment session

from e2b import Session
# You can use some of the predefined environments by using specific id:
# 'Nodejs', 'Bash', 'Python3', 'Java', 'Go', 'Rust', 'PHP', 'Perl', 'DotNET'
session = Session(id="Nodejs", on_scan_ports=lambda ports: print("Open ports", ports))

# Start a session and create a connection to it
await session.open()

...

# Close the session after you are done
await session.close()

Use filesystem inside cloud environment

# List
dir_b_content = await session.filesystem.list("/dirA/dirB")

# Write
# This will create a new file "file.txt" inside the dir "dirB" with the content "Hello world".
await session.filesystem.write("/dirA/dirB/file.txt", "Hello World")

# Read
file_content = await session.filesystem.read("/dirA/dirB/file.txt")

# Remove
# Remove a file.
await session.filesystem.remove("/dirA/dirB/file.txt")
# Remove a directory and all of its content.
await session.filesystem.remove("/dirA")

# Make dir
# Creates a new directory "dirC" and also "dirA" and "dirB" if those directories don"t already exist.
await session.filesystem.make_dir("/dirA/dirB/dirC")

# Watch dir for changes
watcher = session.filesystem.watch_dir("/dirA/dirB")
watcher.add_event_listener(lambda e: print("Event", e))
await watcher.start()

Start process inside cloud environment

proc = await session.process.start(
  cmd="echo Hello World",
  on_stdout=on_stdout,
  on_stderr=on_stderr,
  on_exit=lambda: print("Exit"),
  rootdir="/code",
)

await proc.send_stdin("\n")

print(proc.process_id)

await proc.kill()

# Wait for process to finish
await proc.finished

Create interactive terminal inside cloud environment

term = await session.terminal.start(
    on_data=lambda data: print("Data", data),
    on_exit=lambda: print("Exit"),
    cols=80,
    rows=24,
    rootdir="/code",
    # If you specify a command, the terminal will be closed after the command finishes.
    # cmd="echo Hello World",
)

await term.send_data("echo 1\n")

await term.resize(80, 30)

print(term.terminal_id)

await term.kill()

Get public hostname for an exposed port inside cloud environment

# Get hostname for port 3000. The hostname is without the protocol (http://).
hostname = session.get_hostname(3000)

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

e2b-0.2.3.tar.gz (38.9 kB view hashes)

Uploaded Source

Built Distribution

e2b-0.2.3-py3-none-any.whl (63.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page