prime-sandboxes


Nameprime-sandboxes JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryPrime Intellect Sandboxes SDK - Manage remote code execution environments
upload_time2025-10-09 01:06:50
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords cloud containers remote-execution sandboxes sdk
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Prime Sandboxes SDK

Lightweight Python SDK for managing Prime Intellect sandboxes - secure remote code execution environments.

## Features

- ✅ **Synchronous and async clients** - Use with sync or async/await code
- ✅ **Full sandbox lifecycle** - Create, list, execute commands, upload/download files, delete
- ✅ **Type-safe** - Full type hints and Pydantic models
- ✅ **Authentication caching** - Automatic token management
- ✅ **Bulk operations** - Create and manage multiple sandboxes efficiently
- ✅ **No CLI dependencies** - Pure SDK, ~50KB installed

## Installation

```bash
uv pip install prime-sandboxes
```

Or with pip:
```bash
pip install prime-sandboxes
```

## Quick Start

```python
from prime_sandboxes import APIClient, SandboxClient, CreateSandboxRequest

# Initialize
client = APIClient(api_key="your-api-key")
sandbox_client = SandboxClient(client)

# Create a sandbox
request = CreateSandboxRequest(
    name="my-sandbox",
    docker_image="python:3.11-slim",
    cpu_cores=2,
    memory_gb=4,
)

sandbox = sandbox_client.create(request)
print(f"Created: {sandbox.id}")

# Wait for it to be ready
sandbox_client.wait_for_creation(sandbox.id)

# Execute commands
result = sandbox_client.execute_command(sandbox.id, "python --version")
print(result.stdout)

# Clean up
sandbox_client.delete(sandbox.id)
```

## Async Usage

```python
import asyncio
from prime_sandboxes import AsyncSandboxClient, CreateSandboxRequest

async def main():
    async with AsyncSandboxClient(api_key="your-api-key") as client:
        # Create sandbox
        sandbox = await client.create(CreateSandboxRequest(
            name="async-sandbox",
            docker_image="python:3.11-slim",
        ))

        # Wait and execute
        await client.wait_for_creation(sandbox.id)
        result = await client.execute_command(sandbox.id, "echo 'Hello from async!'")
        print(result.stdout)

        # Clean up
        await client.delete(sandbox.id)

asyncio.run(main())
```

## Authentication

The SDK looks for credentials in this order:

1. **Direct parameter**: `APIClient(api_key="sk-...")`
2. **Environment variable**: `export PRIME_API_KEY="sk-..."`
3. **Config file**: `~/.prime/config.json` (created by `prime login` CLI command)

## Advanced Features

### File Operations

```python
# Upload a file
sandbox_client.upload_file(
    sandbox_id=sandbox.id,
    file_path="/app/script.py",
    local_file_path="./local_script.py"
)

# Download a file
sandbox_client.download_file(
    sandbox_id=sandbox.id,
    file_path="/app/output.txt",
    local_file_path="./output.txt"
)
```

### Bulk Operations

```python
# Create multiple sandboxes
sandbox_ids = []
for i in range(5):
    sandbox = sandbox_client.create(CreateSandboxRequest(
        name=f"sandbox-{i}",
        docker_image="python:3.11-slim",
    ))
    sandbox_ids.append(sandbox.id)

# Wait for all to be ready
statuses = sandbox_client.bulk_wait_for_creation(sandbox_ids)

# Delete by IDs or labels
sandbox_client.bulk_delete(sandbox_ids=sandbox_ids)
# OR by labels
sandbox_client.bulk_delete(labels=["experiment-1"])
```

### Labels & Filtering

```python
# Create with labels
sandbox = sandbox_client.create(CreateSandboxRequest(
    name="labeled-sandbox",
    docker_image="python:3.11-slim",
    labels=["experiment", "ml-training"],
))

# List with filters
sandboxes = sandbox_client.list(
    status="RUNNING",
    labels=["experiment"],
    page=1,
    per_page=50,
)

for s in sandboxes.sandboxes:
    print(f"{s.name}: {s.status}")
```

## Documentation

Full API reference: https://github.com/PrimeIntellect-ai/prime-cli/tree/main/packages/prime-sandboxes

## Related Packages

- **`prime`** - Full CLI + SDK with pods, inference, and more (includes this package)

## License

MIT License - see LICENSE file for details

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "prime-sandboxes",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "cloud, containers, remote-execution, sandboxes, sdk",
    "author": null,
    "author_email": "Prime Intellect <contact@primeintellect.ai>",
    "download_url": "https://files.pythonhosted.org/packages/4d/bb/f7c8b0f3dd73651b456a6e2dbb6b7154c19aa7ed699b1faacd88dd82b9fa/prime_sandboxes-0.1.0.tar.gz",
    "platform": null,
    "description": "# Prime Sandboxes SDK\n\nLightweight Python SDK for managing Prime Intellect sandboxes - secure remote code execution environments.\n\n## Features\n\n- \u2705 **Synchronous and async clients** - Use with sync or async/await code\n- \u2705 **Full sandbox lifecycle** - Create, list, execute commands, upload/download files, delete\n- \u2705 **Type-safe** - Full type hints and Pydantic models\n- \u2705 **Authentication caching** - Automatic token management\n- \u2705 **Bulk operations** - Create and manage multiple sandboxes efficiently\n- \u2705 **No CLI dependencies** - Pure SDK, ~50KB installed\n\n## Installation\n\n```bash\nuv pip install prime-sandboxes\n```\n\nOr with pip:\n```bash\npip install prime-sandboxes\n```\n\n## Quick Start\n\n```python\nfrom prime_sandboxes import APIClient, SandboxClient, CreateSandboxRequest\n\n# Initialize\nclient = APIClient(api_key=\"your-api-key\")\nsandbox_client = SandboxClient(client)\n\n# Create a sandbox\nrequest = CreateSandboxRequest(\n    name=\"my-sandbox\",\n    docker_image=\"python:3.11-slim\",\n    cpu_cores=2,\n    memory_gb=4,\n)\n\nsandbox = sandbox_client.create(request)\nprint(f\"Created: {sandbox.id}\")\n\n# Wait for it to be ready\nsandbox_client.wait_for_creation(sandbox.id)\n\n# Execute commands\nresult = sandbox_client.execute_command(sandbox.id, \"python --version\")\nprint(result.stdout)\n\n# Clean up\nsandbox_client.delete(sandbox.id)\n```\n\n## Async Usage\n\n```python\nimport asyncio\nfrom prime_sandboxes import AsyncSandboxClient, CreateSandboxRequest\n\nasync def main():\n    async with AsyncSandboxClient(api_key=\"your-api-key\") as client:\n        # Create sandbox\n        sandbox = await client.create(CreateSandboxRequest(\n            name=\"async-sandbox\",\n            docker_image=\"python:3.11-slim\",\n        ))\n\n        # Wait and execute\n        await client.wait_for_creation(sandbox.id)\n        result = await client.execute_command(sandbox.id, \"echo 'Hello from async!'\")\n        print(result.stdout)\n\n        # Clean up\n        await client.delete(sandbox.id)\n\nasyncio.run(main())\n```\n\n## Authentication\n\nThe SDK looks for credentials in this order:\n\n1. **Direct parameter**: `APIClient(api_key=\"sk-...\")`\n2. **Environment variable**: `export PRIME_API_KEY=\"sk-...\"`\n3. **Config file**: `~/.prime/config.json` (created by `prime login` CLI command)\n\n## Advanced Features\n\n### File Operations\n\n```python\n# Upload a file\nsandbox_client.upload_file(\n    sandbox_id=sandbox.id,\n    file_path=\"/app/script.py\",\n    local_file_path=\"./local_script.py\"\n)\n\n# Download a file\nsandbox_client.download_file(\n    sandbox_id=sandbox.id,\n    file_path=\"/app/output.txt\",\n    local_file_path=\"./output.txt\"\n)\n```\n\n### Bulk Operations\n\n```python\n# Create multiple sandboxes\nsandbox_ids = []\nfor i in range(5):\n    sandbox = sandbox_client.create(CreateSandboxRequest(\n        name=f\"sandbox-{i}\",\n        docker_image=\"python:3.11-slim\",\n    ))\n    sandbox_ids.append(sandbox.id)\n\n# Wait for all to be ready\nstatuses = sandbox_client.bulk_wait_for_creation(sandbox_ids)\n\n# Delete by IDs or labels\nsandbox_client.bulk_delete(sandbox_ids=sandbox_ids)\n# OR by labels\nsandbox_client.bulk_delete(labels=[\"experiment-1\"])\n```\n\n### Labels & Filtering\n\n```python\n# Create with labels\nsandbox = sandbox_client.create(CreateSandboxRequest(\n    name=\"labeled-sandbox\",\n    docker_image=\"python:3.11-slim\",\n    labels=[\"experiment\", \"ml-training\"],\n))\n\n# List with filters\nsandboxes = sandbox_client.list(\n    status=\"RUNNING\",\n    labels=[\"experiment\"],\n    page=1,\n    per_page=50,\n)\n\nfor s in sandboxes.sandboxes:\n    print(f\"{s.name}: {s.status}\")\n```\n\n## Documentation\n\nFull API reference: https://github.com/PrimeIntellect-ai/prime-cli/tree/main/packages/prime-sandboxes\n\n## Related Packages\n\n- **`prime`** - Full CLI + SDK with pods, inference, and more (includes this package)\n\n## License\n\nMIT License - see LICENSE file for details\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Prime Intellect Sandboxes SDK - Manage remote code execution environments",
    "version": "0.1.0",
    "project_urls": {
        "Documentation": "https://github.com/PrimeIntellect-ai/prime-cli/tree/main/packages/prime-sandboxes",
        "Homepage": "https://github.com/PrimeIntellect-ai/prime-cli",
        "Repository": "https://github.com/PrimeIntellect-ai/prime-cli.git"
    },
    "split_keywords": [
        "cloud",
        " containers",
        " remote-execution",
        " sandboxes",
        " sdk"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e76bbfaa9d100a398c227e6af790452fd818f210a2f070e62391e7648da77009",
                "md5": "aeca2adea84a06e36eade9dfb629959b",
                "sha256": "67a408d2bc4f96d73f8266f01582ab402d566b96ad941f031d4c37bf95753767"
            },
            "downloads": -1,
            "filename": "prime_sandboxes-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aeca2adea84a06e36eade9dfb629959b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 14798,
            "upload_time": "2025-10-09T01:06:49",
            "upload_time_iso_8601": "2025-10-09T01:06:49.403261Z",
            "url": "https://files.pythonhosted.org/packages/e7/6b/bfaa9d100a398c227e6af790452fd818f210a2f070e62391e7648da77009/prime_sandboxes-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4dbbf7c8b0f3dd73651b456a6e2dbb6b7154c19aa7ed699b1faacd88dd82b9fa",
                "md5": "b397ba09cb97cdcf5d574304214b636e",
                "sha256": "99d7c0a799aba8685a9583446886eb258a579be2b741066708a9afab6737212e"
            },
            "downloads": -1,
            "filename": "prime_sandboxes-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b397ba09cb97cdcf5d574304214b636e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 34581,
            "upload_time": "2025-10-09T01:06:50",
            "upload_time_iso_8601": "2025-10-09T01:06:50.710283Z",
            "url": "https://files.pythonhosted.org/packages/4d/bb/f7c8b0f3dd73651b456a6e2dbb6b7154c19aa7ed699b1faacd88dd82b9fa/prime_sandboxes-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-09 01:06:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "PrimeIntellect-ai",
    "github_project": "prime-cli",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "prime-sandboxes"
}
        
Elapsed time: 0.53912s