mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 13:03:46 +00:00
81 lines
2.8 KiB
Text
81 lines
2.8 KiB
Text
---
|
|
title: "ComputeSDK"
|
|
description: "Deploy Sandbox Agent using ComputeSDK's provider-agnostic sandbox API."
|
|
---
|
|
|
|
[ComputeSDK](https://computesdk.com) provides a unified interface for managing sandboxes across multiple providers. Write once, deploy anywhere by changing environment variables.
|
|
|
|
## Prerequisites
|
|
|
|
- `COMPUTESDK_API_KEY` from [console.computesdk.com](https://console.computesdk.com)
|
|
- Provider API key (one of: `E2B_API_KEY`, `DAYTONA_API_KEY`, `VERCEL_TOKEN`, `MODAL_TOKEN_ID` + `MODAL_TOKEN_SECRET`, `BLAXEL_API_KEY`, `CSB_API_KEY`)
|
|
- `ANTHROPIC_API_KEY` or `OPENAI_API_KEY`
|
|
|
|
## TypeScript example
|
|
|
|
```bash
|
|
npm install sandbox-agent@0.5.x computesdk
|
|
```
|
|
|
|
```typescript
|
|
import { SandboxAgent } from "sandbox-agent";
|
|
import { computesdk } from "sandbox-agent/computesdk";
|
|
|
|
const envs: Record<string, string> = {};
|
|
if (process.env.ANTHROPIC_API_KEY) envs.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;
|
|
if (process.env.OPENAI_API_KEY) envs.OPENAI_API_KEY = process.env.OPENAI_API_KEY;
|
|
|
|
const sdk = await SandboxAgent.start({
|
|
sandbox: computesdk({
|
|
create: {
|
|
envs,
|
|
image: process.env.COMPUTESDK_IMAGE,
|
|
templateId: process.env.COMPUTESDK_TEMPLATE_ID,
|
|
},
|
|
}),
|
|
});
|
|
|
|
try {
|
|
const session = await sdk.createSession({ agent: "claude" });
|
|
const response = await session.prompt([
|
|
{ type: "text", text: "Summarize this repository" },
|
|
]);
|
|
console.log(response.stopReason);
|
|
} finally {
|
|
await sdk.destroySandbox();
|
|
}
|
|
```
|
|
|
|
The `computesdk` provider handles sandbox creation, Sandbox Agent installation, agent setup, and server startup automatically. ComputeSDK routes to your configured provider behind the scenes.
|
|
The `create` option now forwards the full ComputeSDK sandbox-create payload, including provider-specific fields such as `image` and `templateId` when the selected provider supports them.
|
|
|
|
Before calling `SandboxAgent.start()`, configure ComputeSDK with your provider:
|
|
|
|
```typescript
|
|
import { compute } from "computesdk";
|
|
|
|
compute.setConfig({
|
|
provider: "e2b", // or auto-detect via detectProvider()
|
|
computesdkApiKey: process.env.COMPUTESDK_API_KEY,
|
|
});
|
|
```
|
|
|
|
## Supported providers
|
|
|
|
ComputeSDK auto-detects your provider from environment variables:
|
|
|
|
| Provider | Environment Variables |
|
|
|----------|----------------------|
|
|
| E2B | `E2B_API_KEY` |
|
|
| Daytona | `DAYTONA_API_KEY` |
|
|
| Vercel | `VERCEL_TOKEN` or `VERCEL_OIDC_TOKEN` |
|
|
| Modal | `MODAL_TOKEN_ID` + `MODAL_TOKEN_SECRET` |
|
|
| Blaxel | `BLAXEL_API_KEY` |
|
|
| CodeSandbox | `CSB_API_KEY` |
|
|
|
|
## Notes
|
|
|
|
- **Provider resolution**: Set `COMPUTESDK_PROVIDER` to force a specific provider, or let ComputeSDK auto-detect from API keys.
|
|
- `sandbox.runCommand(..., { background: true })` keeps the server running while your app continues.
|
|
- `sandbox.getUrl({ port })` returns a public URL for the sandbox port.
|
|
- Always destroy the sandbox when done to avoid leaking resources.
|