Skip to main content

Python SDK for AgentCube Code Interpreter

Project description

AgentCube Python SDK

The official Python SDK for AgentCube, enabling programmatic interaction with secure, isolated Code Interpreter environments.

This SDK creates a seamless bridge between your application and the AgentCube runtime, handling the complexity of:

  • Session Management: Automatically creating and destroying isolated environments.
  • Security: End-to-end encryption using client-generated RSA keys and JWTs.
  • Execution: Running shell commands and code (Python, Bash) remotely.
  • File Management: Uploading and downloading files to/from the sandbox.

Features

  • Secure by Design: Uses asymmetric cryptography (RSA-2048) to authorize Data Plane requests. Only the client holding the private key can execute code.
  • Simple API: Pythonic context managers (with statement) for automatic resource cleanup.
  • Flexible: Supports both short-lived (ephemeral) and long-running sessions.
  • Kubernetes Native: Automatically authenticates using Service Account tokens when running in-cluster.

Installation

From Source:

git clone https://github.com/volcano-sh/agentcube.git
cd agentcube/sdk-python
pip install .

Development Mode:

pip install -e .

Usage

Quick Start (Context Manager)

The recommended way to use the SDK is with a context manager, which ensures the session is properly closed (and the remote pod deleted) when done.

from agentcube import CodeInterpreterClient

# Initialize client (uses env vars for configuration)
with CodeInterpreterClient() as client:
    # 1. Run a simple shell command
    print("User: whoami")
    print(client.execute_command("whoami"))

    # 2. Execute Python code
    code = """
    import math
    print(f"Pi is approximately {math.pi:.4f}")
    """
    output = client.run_code("python", code)
    print(f"Result: {output}")

File Operations

You can easily move files in and out of the sandbox.

with CodeInterpreterClient() as sandbox:
    # Upload a local dataset
    sandbox.upload_file("./data.csv", "/workspace/data.csv")
    
    # Process it with Python
    script = """
    import pandas as pd
    df = pd.read_csv('/workspace/data.csv')
    df.describe().to_csv('/workspace/summary.csv')
    """
    sandbox.run_code("python", script)
    
    # Download the result
    sandbox.download_file("/workspace/summary.csv", "./summary.csv")

Manual Lifecycle Management

For long-running applications (like a web server managing user sessions), you can manually control the lifecycle.

# Create a session with a 1-hour timeout
client = CodeInterpreterClient(ttl=3600) 

try:
    client.execute_command("echo 'Session started'")
    # ... perform operations ...
finally:
    client.stop() # CRITICAL: Ensure resources are released

Customizing the Environment

client = CodeInterpreterClient(
    name="custom-template",    # Name of the CodeInterpreter CRD template to use
    namespace="agentcube",     # Kubernetes namespace where AgentCube runs
    ttl=7200,                  # 2 hours Time-To-Live
    verbose=True               # Enable debug logging
)

Architecture

The SDK operates on a Split-Plane Architecture:

  1. Control Plane (Workload Manager):
    • The SDK authenticates via K8s Service Account Token.
    • It requests a new session and sends a locally generated Public Key.
    • The Workload Manager creates the Pod and injects this Public Key.
  2. Data Plane (Router -> PicoD):
    • The SDK uses the corresponding Private Key to sign JWTs for every execution request.
    • The agent inside the Pod (PicoD) validates the JWT using the injected Public Key.
    • This ensures that only the SDK instance that created the session can execute code in it.

Development

Building the Package

Use the provided Makefile in the root directory to build the distribution packages (Wheel and Source):

# Build the Python SDK
make build-python-sdk

Artifacts will be generated in sdk-python/dist/.

Running Tests

# Install test dependencies
pip install pytest requests PyJWT cryptography

# Run E2E tests (requires local Docker environment for mocking)
python3 tests/e2e_picod_test.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentcube_sdk-0.0.4.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentcube_sdk-0.0.4-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file agentcube_sdk-0.0.4.tar.gz.

File metadata

  • Download URL: agentcube_sdk-0.0.4.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for agentcube_sdk-0.0.4.tar.gz
Algorithm Hash digest
SHA256 eebf175a3b62f8d902b299ef6bdb62a67ac76b9ffdb7b4e356531b9b6e510780
MD5 e4ba886e12d56f02809b8cf09ea70bbb
BLAKE2b-256 f40ce046c5227c9973e4bea2ec9fa8d009fa5da1916d09d426f58d6bf7fdf0dc

See more details on using hashes here.

File details

Details for the file agentcube_sdk-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: agentcube_sdk-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for agentcube_sdk-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e7831f9b068cdc4a6d66574f0f48633da0e90389960d248b7125a8895d7b67ce
MD5 9c814ca81a58104280b0a4d3adabcc93
BLAKE2b-256 a97b6d7ab19fd70c2c5e7e25bb35499b111fb5b466813f271d26f192aa344109

See more details on using hashes here.

Supported by

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