Metadata-Version: 2.4
Name: buildfunctions
Version: 0.2.1
Summary: The Buildfunctions SDK for Agents: Hardware-isolated CPU and GPU Sandboxes for untrusted AI actions
Project-URL: Homepage, https://www.buildfunctions.com
Project-URL: Documentation, https://www.buildfunctions.com/docs/sdk/quickstart
Project-URL: Repository, https://github.com/buildfunctions/sdk-python
Project-URL: Issues, https://github.com/buildfunctions/sdk-python/issues
Author: Buildfunctions
Keywords: AIAgents,AIApps,AIInfrastructure,DeveloperExperience,GPUs,Sandboxes,Serverless
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: python-dotenv>=1.0
Provides-Extra: dev
Requires-Dist: mypy>=1.13; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Description-Content-Type: text/markdown

<p align="center">
  <h1 align="center">
  <a href="https://www.buildfunctions.com" target="_blank">
    <img src="./static/readme/buildfunctions-header.svg" alt="logo" width="900">
  </a>
  </h1>
</p>

<h1 align="center">The Buildfunctions SDK for Agents</h1>

<p align="center">
  <!-- <a href="https://discord.com/users/buildfunctions" target="_blank">
    <img src="./static/readme/discord-button.png" height="32" />
  </a>&nbsp; -->
  <a href="https://www.buildfunctions.com/docs/sdk/quickstart" target="_blank">
    <img src="./static/readme/read-the-docs-button.png" height="32" />
  </a>&nbsp;
</p>

<p align="center">
<a href="https://pypi.org/project/buildfunctions" target="_blank">
  <img src="https://img.shields.io/badge/pypi-buildfunctions-green">
</a>
</p>

<p align="center">
  <h1 align="center">
  <a href="https://www.buildfunctions.com" target="_blank">
    <img src="./static/readme/buildfunctions-logo-and-servers-dark.svg" alt="logo" width="900">
  </a>
  </h1>
</p>

> Hardware-isolated execution environments for AI agents

## Installation

```bash
pip install buildfunctions
```

## Quick Start

### 1. Create an API Token

Get your API token at [buildfunctions.com/settings](https://www.buildfunctions.com/settings)

### 2. CPU Function

```python
import asyncio
import os
from buildfunctions import Buildfunctions, CPUFunction

async def main():
    client = await Buildfunctions({"apiToken": os.environ["BUILDFUNCTIONS_API_TOKEN"]})

    deployed_function = await CPUFunction.create({
        "name": "my-cpu-function",
        "code": "./cpu_function_code.py",
        "language": "python",
        "memory": 128,
        "timeout": 30,
    })

    print(f"Endpoint: {deployed_function.endpoint}")

    await deployed_function.delete()

asyncio.run(main())
```

### 3. CPU Sandbox

```python
import asyncio
import os
from buildfunctions import Buildfunctions, CPUSandbox

async def main():
    client = await Buildfunctions({"apiToken": os.environ["BUILDFUNCTIONS_API_TOKEN"]})

    sandbox = await CPUSandbox.create({
        "name": "my-cpu-sandbox",
        "language": "python",
        "code": "/path/to/code/cpu_sandbox_code.py",
        "memory": 128,
        "timeout": 30,
    })

    result = await sandbox.run()
    print(f"Result: {result}")

    await sandbox.delete()

asyncio.run(main())
```

### 4. GPU Function

```python
import asyncio
import os
from buildfunctions import Buildfunctions, GPUFunction

async def main():
    client = await Buildfunctions({"apiToken": os.environ["BUILDFUNCTIONS_API_TOKEN"]})

    deployed_function = await GPUFunction.create({
        "name": "my-gpu-function",
        "code": "/path/to/code/gpu_function_code.py",
        "language": "python",
        "gpu": "T4",
        "vcpus": 30,
        "memory": "50000MB",
        "timeout": 300,
        "requirements": ["transformers==4.47.1", "torch", "accelerate"],
    })

    print(f"Endpoint: {deployed_function.endpoint}")

    await deployed_function.delete()

asyncio.run(main())
```

### 5. GPU Sandbox with Local Model

```python
import asyncio
import os
from buildfunctions import Buildfunctions, GPUSandbox

async def main():
    client = await Buildfunctions({"apiToken": os.environ["BUILDFUNCTIONS_API_TOKEN"]})

    sandbox = await GPUSandbox.create({
        "name": "my-gpu-sandbox",
        "language": "python",
        "memory": 10000,
        "timeout": 300,
        "vcpus": 6,
        "code": "./gpu_sandbox_code.py",
        "model": "/path/to/models/Qwen/Qwen3-8B",
        "requirements": "torch",
    })

    result = await sandbox.run()
    print(f"Response: {result}")

    await sandbox.delete()

asyncio.run(main())
```

The SDK is currently in beta.
