AVM provider for ComputeSDK - isolated code execution environments
npm install @computesdk/avmAVM provider for ComputeSDK that enables creating and managing containerized sandboxes on AVM's infrastructure.
``bash`
npm install @computesdk/avm
The AVM provider requires the following environment variable:
`bash`
AVM_API_KEY=your_avm_api_key
You can get your API key from AVM Sandbox Platform.
Use the gateway for zero-config auto-detection:
`typescript
import { compute } from 'computesdk';
// Auto-detects AVM from AVM_API_KEY environment variable
const sandbox = await compute.sandbox.create();
console.log(Created sandbox: ${sandbox.id});
// List all sandboxes
const sandboxes = await compute.sandbox.list();
console.log(Found ${sandboxes.length} sandboxes);
// Destroy the sandbox
await sandbox.destroy();
`
For direct SDK usage without the gateway:
`typescript
import { avm } from '@computesdk/avm';
const compute = avm({
apiKey: 'your_api_key'
});
// Create a sandbox
const sandbox = await compute.sandbox.create({
name: 'my-sandbox',
image: 'node:alpine',
resources: {
cpus: 0.25,
memory: 512
}
});
console.log(Created sandbox: ${sandbox.id});
// List all sandboxes
const sandboxes = await compute.sandbox.list();
console.log(Found ${sandboxes.length} sandboxes);
// Destroy the sandbox
await sandbox.destroy();
`
#### create(options?)
Creates a new AVM sandbox with the specified configuration.
Options:
- name (string, optional) - Sandbox name (defaults to computesdk-{timestamp})image
- (string, optional) - Docker image to use (defaults to node:alpine)resources
- (object, optional) - Resource allocationcpus
- (number) - CPU allocation (default: 0.25)memory
- (number) - Memory in MB (default: 512)volumes
- (array, optional) - Volume configurationsvolume_name
- (string) - Name of the volumemount_path
- (string) - Mount path in the container
Returns: Promise<{ sandbox: AVMSandbox, sandboxId: string }>
#### getById(sandboxId)
Retrieves logs for a specific sandbox.
Parameters:
- sandboxId (string) - The ID of the sandbox
Returns: Promise<{ sandbox: any, sandboxId: string } | null>
Returns null if the sandbox is not found.
#### list()
Lists all sandboxes in your AVM account.
Returns: Promise
#### destroy(sandboxId)
Deletes a sandbox.
Parameters:
- sandboxId (string) - The ID of the sandbox to destroy
Returns: Promise
The AVM provider accepts the following configuration:
`typescript`
interface AVMConfig {
apiKey?: string; // AVM API key (falls back to AVM_API_KEY env var)
}
`typescript`
interface AVMSandbox {
id: string;
name: string;
created_at: string;
cpu: number;
memory: number;
status: string;
volumes?: Array<{
volume_id: string;
mount_path: string;
volume_name: string;
}>;
}
The following methods are planned for future releases:
- runCode() - Execute code in the sandboxrunCommand()
- - Run shell commandsgetInfo()
- - Get sandbox metadatagetUrl()
- - Get sandbox URL for web access
- Sandboxes are created with the specified resource allocation
- Default image is node:alpinegetById()` method returns sandbox logs, not metadata
- Default resources: 0.25 CPUs, 512 MB memory
- Sandbox names are auto-generated with timestamp if not provided
- All operations use AVM's REST API v1
- Environment variables take precedence over config options
- The
- Sandboxes are immediately deleted when destroyed
For more information about the AVM Sandbox Platform API, visit:
- API Docs: https://api.avm.codes/
- Website: https://avm.codes/
MIT