Daytona
Section titled “Daytona”Main class for interacting with the Daytona API. Provides methods for creating, managing, and interacting with Daytona Sandboxes. Can be initialized either with explicit configuration or using environment variables.
Properties:
snapshotSnapshotService - Service for managing Daytona SnapshotsvolumeVolumeService - Service for managing Daytona Volumes
Examples:
// Using environment variables// Uses DAYTONA_API_KEY, DAYTONA_API_URL, DAYTONA_TARGETconst daytona = new Daytona();const sandbox = await daytona.create();// Using explicit configurationconst config: DaytonaConfig = { apiKey: "your-api-key", apiUrl: "https://your-api.com", target: "us"};const daytona = new Daytona(config);// Disposes daytona and flushes traces when doneawait using daytona = new Daytona({ otelEnabled: true,});@classImplements
Section titled “Implements”AsyncDisposable
Constructors
Section titled “Constructors”new Daytona()
Section titled “new Daytona()”new Daytona(config?: DaytonaConfig): DaytonaCreates a new Daytona client instance.
Parameters:
config?DaytonaConfig - Configuration options
Returns:
Daytona
Throws:
When no credentials are provided (neither API key nor JWT token)
When JWT token is provided without an organization ID
Methods
Section titled “Methods”_experimental_fork()
Section titled “_experimental_fork()”_experimental_fork( sandbox: Sandbox, params?: { name: string; },timeout?: number): Promise<Sandbox>Forks a Sandbox, creating a new Sandbox with an identical filesystem.
Parameters:
sandboxSandbox - The Sandbox to forkparams?Fork parametersname?string - Optional name for the forked Sandboxtimeout?number = 60 - Timeout in seconds (0 means no timeout, default is 60)
Returns:
Promise<Sandbox>- The forked Sandbox
Example:
const sandbox = await daytona.get('my-sandbox-id');const forked = await daytona._experimental_fork(sandbox, { name: 'my-fork' });console.log(`Forked sandbox: ${forked.id}`);[asyncDispose]()
Section titled “[asyncDispose]()”asyncDispose: Promise<void>Returns:
Promise<void>
Implementation of
Section titled “Implementation of”AsyncDisposable.[asyncDispose]create()
Section titled “create()”Call Signature
Section titled “Call Signature”create(params?: CreateSandboxFromSnapshotParams, options?: { timeout: number;}): Promise<Sandbox>Creates Sandboxes from specified or default snapshot. You can specify various parameters, including language, image, environment variables, and volumes.
Parameters:
params?CreateSandboxFromSnapshotParams - Parameters for Sandbox creation from snapshotoptions?Options for the create operationtimeout?number - Timeout in seconds (0 means no timeout, default is 60)
Returns:
Promise<Sandbox>- The created Sandbox instance
Examples:
const sandbox = await daytona.create();// Create a custom sandboxconst params: CreateSandboxFromSnapshotParams = { language: 'typescript', snapshot: 'my-snapshot-id', envVars: { NODE_ENV: 'development', DEBUG: 'true' }, autoStopInterval: 60, autoArchiveInterval: 60, autoDeleteInterval: 120};const sandbox = await daytona.create(params, { timeout: 100 });Call Signature
Section titled “Call Signature”create(params?: CreateSandboxFromImageParams, options?: { onSnapshotCreateLogs: (chunk: string) => void; timeout: number;}): Promise<Sandbox>Creates Sandboxes from specified image available on some registry or declarative Daytona Image. You can specify various parameters, including resources, language, image, environment variables, and volumes. Daytona creates snapshot from provided image and uses it to create Sandbox.
Parameters:
params?CreateSandboxFromImageParams - Parameters for Sandbox creation from imageoptions?Options for the create operationonSnapshotCreateLogs?(chunk: string) => void - Callback function to handle snapshot creation logs.timeout?number - Timeout in seconds (0 means no timeout, default is 60)
Returns:
Promise<Sandbox>- The created Sandbox instance
Examples:
const sandbox = await daytona.create({ image: 'debian:12.9' }, { timeout: 90, onSnapshotCreateLogs: console.log });// Create a custom sandboxconst image = Image.base('alpine:3.18').pipInstall('numpy');const params: CreateSandboxFromImageParams = { language: 'typescript', image, envVars: { NODE_ENV: 'development', DEBUG: 'true' }, resources: { cpu: 2, memory: 4 // 4GB RAM }, autoStopInterval: 60, autoArchiveInterval: 60, autoDeleteInterval: 120};const sandbox = await daytona.create(params, { timeout: 100, onSnapshotCreateLogs: console.log });delete()
Section titled “delete()”delete(sandbox: Sandbox, timeout: number): Promise<void>Deletes a Sandbox.
Parameters:
sandboxSandbox - The Sandbox to deletetimeoutnumber = 60 - Timeout in seconds (0 means no timeout, default is 60)
Returns:
Promise<void>
Example:
const sandbox = await daytona.get('my-sandbox-id');await daytona.delete(sandbox);get(sandboxIdOrName: string): Promise<Sandbox>Gets a Sandbox by its ID or name.
Parameters:
sandboxIdOrNamestring - The ID or name of the Sandbox to retrieve
Returns:
Promise<Sandbox>- The Sandbox
Example:
const sandbox = await daytona.get('my-sandbox-id-or-name');console.log(`Sandbox state: ${sandbox.state}`);list()
Section titled “list()”list(query?: ListSandboxesQuery): AsyncIterableIterator<Sandbox>Iterates over Sandboxes matching the given query.
Parameters:
query?ListSandboxesQuery - Optional filters, sorting, and per-page size.
Returns
Section titled “Returns”AsyncIterableIterator<Sandbox>
Example:
for await (const sandbox of daytona.list({ labels: { env: 'dev' } })) { console.log(sandbox.id)}start()
Section titled “start()”start(sandbox: Sandbox, timeout?: number): Promise<void>Starts a Sandbox and waits for it to be ready.
Parameters:
sandboxSandbox - The Sandbox to starttimeout?number - Optional timeout in seconds (0 means no timeout)
Returns:
Promise<void>
Example:
const sandbox = await daytona.get('my-sandbox-id');// Wait up to 60 seconds for the sandbox to startawait daytona.start(sandbox, 60);stop()
Section titled “stop()”stop(sandbox: Sandbox): Promise<void>Stops a Sandbox.
Parameters:
sandboxSandbox - The Sandbox to stop
Returns:
Promise<void>
Example:
const sandbox = await daytona.get('my-sandbox-id');await daytona.stop(sandbox);CodeLanguage
Section titled “CodeLanguage”Supported programming languages for code execution
Python is used as the default sandbox language when no language is explicitly specified.
Enum Members:
JAVASCRIPT(“javascript”)PYTHON(“python”)TYPESCRIPT(“typescript”)
CreateSandboxBaseParams
Section titled “CreateSandboxBaseParams”Base parameters for creating a new Sandbox.
Properties:
autoArchiveInterval?number - Auto-archive interval in minutes (0 means the maximum interval will be used). Default is 7 days.autoDeleteInterval?number - Auto-delete interval in minutes (negative value means disabled, 0 means delete immediately upon stopping). By default, auto-delete is disabled.autoStopInterval?number - Auto-stop interval in minutes (0 means disabled). Default is 15 minutes.envVars?Record<string, string> - Optional environment variables to set in the Sandboxephemeral?boolean - Whether the Sandbox should be ephemeral. If true, autoDeleteInterval will be set to 0.labels?Record<string, string> - Sandbox labelslanguage?string - Programming language for direct code execution. Defaults to “python” if not specified.linkedSandbox?string - ID or name of an existing sandbox to link the new sandbox to. The new sandbox will be scheduled on the same runner as the linked sandbox so a local network can be established between them. Linked sandboxes must be ephemeral (autoDeleteInterval=0) and cannot themselves be linked to another sandbox.name?stringnetworkAllowList?string - Comma-separated list of allowed CIDR network addresses for the SandboxnetworkBlockAll?boolean - Whether to block all network access for the Sandboxpublic?boolean - Is the Sandbox port preview publicuser?string - Optional os user to use for the Sandboxvolumes?VolumeMount[] - Optional array of volumes to mount to the Sandbox
CreateSandboxFromImageParams
Section titled “CreateSandboxFromImageParams”Parameters for creating a new Sandbox.
Properties:
autoArchiveInterval?numberautoDeleteInterval?numberautoStopInterval?numberenvVars?Record<string, string>ephemeral?booleanimagestring | Image - Custom Docker image to use for the Sandbox. If an Image object is provided, the image will be dynamically built.labels?Record<string, string>language?stringlinkedSandbox?stringname?stringnetworkAllowList?stringnetworkBlockAll?booleanpublic?booleanresources?Resources - Resource allocation for the Sandbox. If not provided, sandbox will have default resources.user?stringvolumes?VolumeMount[]
CreateSandboxFromSnapshotParams
Section titled “CreateSandboxFromSnapshotParams”Parameters for creating a new Sandbox from a snapshot.
Properties:
autoArchiveInterval?numberautoDeleteInterval?numberautoStopInterval?numberenvVars?Record<string, string>ephemeral?booleanlabels?Record<string, string>language?stringlinkedSandbox?stringname?stringnetworkAllowList?stringnetworkBlockAll?booleanpublic?booleansnapshot?string - Name of the snapshot to use for the Sandbox.user?stringvolumes?VolumeMount[]
DaytonaConfig
Section titled “DaytonaConfig”Configuration options for initializing the Daytona client.
Properties:
\_experimental?Record<string, any> - Configuration for experimental featuresapiKey?string - API key for authentication with the Daytona APIapiUrl?string - URL of the Daytona API. Defaults to ‘https://app.daytona.io/api’ if not set here and not set in environment variable DAYTONA_API_URL.jwtToken?string - JWT token for authentication with the Daytona API. If not set, it must be provided via the environment variableDAYTONA_JWT_TOKEN, or an API key must be provided instead.organizationId?string - Organization ID used for JWT-based authentication. Required if a JWT token is provided, and must be set either here or in the environment variableDAYTONA_ORGANIZATION_ID.otelEnabled?boolean - OpenTelemetry tracing enabled. If set, all SDK operations will be traced.string - Deprecated - UseserverUrl?apiUrlinstead. This property will be removed in future versions.target?string - Target location for Sandboxes
Example:
const config: DaytonaConfig = { apiKey: "your-api-key", apiUrl: "https://your-api.com", target: "us"};const daytona = new Daytona(config);Resources
Section titled “Resources”Resource allocation for a Sandbox.
Properties:
cpu?number - CPU allocation for the Sandbox in coresdisk?number - Disk space allocation for the Sandbox in GiBgpu?number - GPU allocation for the Sandbox in unitsmemory?number - Memory allocation for the Sandbox in GiB
Example:
const resources: SandboxResources = { cpu: 2, memory: 4, // 4GiB RAM disk: 20 // 20GiB disk};VolumeMount
Section titled “VolumeMount”Represents a volume mount for a Sandbox.
Properties:
-
mountPathstring - Path on the Sandbox to mount the Volume -
subpath?string - Optional subpath within the volume to mount. When specified, only this S3 prefix will be accessible. When omitted, the entire volume is mounted.- Inherited from:
SandboxVolume.subpath
- Inherited from:
-
volumeIdstring - ID of the Volume to mount
Extends:
SandboxVolume
CODE_TOOLBOX_LANGUAGE_LABEL
Section titled “CODE_TOOLBOX_LANGUAGE_LABEL”const CODE_TOOLBOX_LANGUAGE_LABEL: "code-toolbox-language" = 'code-toolbox-language';