TemplateBase

Base class for building E2B sandbox templates.

Implements

  • TemplateFromImage
  • TemplateBuilder
  • TemplateFinal

Constructors

new TemplateBase(options?: TemplateOptions): TemplateBase
Parameters
ParameterType
options?TemplateOptions
Returns

TemplateBase

Methods

aptInstall()

aptInstall(packages: string | string[]): TemplateBuilder

Install Debian/Ubuntu packages using apt-get.

Parameters
ParameterTypeDescription
packagesstring | string[]Package name(s)
Returns

TemplateBuilder

Example
template.aptInstall('vim')
template.aptInstall(['git', 'curl', 'wget'])
Implementation of

TemplateBuilder.aptInstall

copy()

copy(
   src: PathLike | PathLike[], 
   dest: PathLike, 
   options?: object): TemplateBuilder

Copy files or directories into the template.

Parameters
ParameterTypeDescription
srcPathLike | PathLike[]Source path(s)
destPathLikeDestination path
options?objectCopy options
options.forceUpload?true-
options.mode?number-
options.resolveSymlinks?boolean-
options.user?string-
Returns

TemplateBuilder

Example
template.copy('requirements.txt', '/home/user/')
template.copy(['app.ts', 'config.ts'], '/app/', { mode: 0o755 })
Implementation of

TemplateBuilder.copy

copyItems()

copyItems(items: CopyItem[]): TemplateBuilder

Copy multiple items with individual options.

Parameters
ParameterTypeDescription
itemsCopyItem[]Array of copy items
Returns

TemplateBuilder

Example
template.copyItems([
  { src: 'app.ts', dest: '/app/' },
  { src: 'config.ts', dest: '/app/', mode: 0o644 }
])
Implementation of

TemplateBuilder.copyItems

fromAWSRegistry()

fromAWSRegistry(image: string, credentials: object): TemplateBuilder

Start from a Docker image in AWS ECR.

Parameters
ParameterTypeDescription
imagestringFull ECR image path
credentialsobjectAWS credentials
credentials.accessKeyIdstring-
credentials.regionstring-
credentials.secretAccessKeystring-
Returns

TemplateBuilder

Example
Template().fromAWSRegistry(
  '123456789.dkr.ecr.us-west-2.amazonaws.com/myimage:latest',
  {
    accessKeyId: 'AKIA...',
    secretAccessKey: '...',
    region: 'us-west-2'
  }
)
Implementation of

TemplateFromImage.fromAWSRegistry

fromBaseImage()

fromBaseImage(): TemplateBuilder

Start from E2B's default base image (e2bdev/base:latest).

Returns

TemplateBuilder

Example
Template().fromBaseImage()
Implementation of

TemplateFromImage.fromBaseImage

fromDebianImage()

fromDebianImage(variant: string): TemplateBuilder

Start from a Debian-based Docker image.

Parameters
ParameterTypeDefault valueDescription
variantstring'stable'Debian variant (default: 'stable')
Returns

TemplateBuilder

Example
Template().fromDebianImage('bookworm')
Implementation of

TemplateFromImage.fromDebianImage

fromDockerfile()

fromDockerfile(dockerfileContentOrPath: string): TemplateBuilder

Parse a Dockerfile and convert it to Template SDK format.

Parameters
ParameterTypeDescription
dockerfileContentOrPathstringDockerfile content or path
Returns

TemplateBuilder

Example
Template().fromDockerfile('Dockerfile')
Template().fromDockerfile('FROM python:3\nRUN pip install numpy')
Implementation of

TemplateFromImage.fromDockerfile

fromGCPRegistry()

fromGCPRegistry(image: string, credentials: object): TemplateBuilder

Start from a Docker image in Google Container Registry.

Parameters
ParameterTypeDescription
imagestringFull GCR/GAR image path
credentialsobjectGCP service account credentials
credentials.serviceAccountJSONstring | object-
Returns

TemplateBuilder

Example
Template().fromGCPRegistry(
  'gcr.io/myproject/myimage:latest',
  { serviceAccountJSON: 'path/to/service-account.json' }
)
Implementation of

TemplateFromImage.fromGCPRegistry

fromImage()

fromImage(baseImage: string, credentials?: object): TemplateBuilder

Start from a custom Docker image.

Parameters
ParameterTypeDescription
baseImagestringDocker image name
credentials?objectOptional credentials for private registries
credentials.password?string-
credentials.username?string-
Returns

TemplateBuilder

Example
Template().fromImage('python:3')

// With credentials (optional)
Template().fromImage('myregistry.com/myimage:latest', {
  username: 'user',
  password: 'pass'
})
Implementation of

TemplateFromImage.fromImage

fromNodeImage()

fromNodeImage(variant: string): TemplateBuilder

Start from a Node.js-based Docker image.

Parameters
ParameterTypeDefault valueDescription
variantstring'lts'Node.js variant (default: 'lts')
Returns

TemplateBuilder

Example
Template().fromNodeImage('24')
Implementation of

TemplateFromImage.fromNodeImage

fromPythonImage()

fromPythonImage(version: string): TemplateBuilder

Start from a Python-based Docker image.

Parameters
ParameterTypeDefault valueDescription
versionstring'3'Python version (default: '3')
Returns

TemplateBuilder

Example
Template().fromPythonImage('3')
Implementation of

TemplateFromImage.fromPythonImage

fromTemplate()

fromTemplate(template: string): TemplateBuilder

Start from an existing E2B template.

Parameters
ParameterTypeDescription
templatestringE2B template ID or alias
Returns

TemplateBuilder

Example
Template().fromTemplate('my-base-template')
Implementation of

TemplateFromImage.fromTemplate

fromUbuntuImage()

fromUbuntuImage(variant: string): TemplateBuilder

Start from an Ubuntu-based Docker image.

Parameters
ParameterTypeDefault valueDescription
variantstring'lts'Ubuntu variant (default: 'lts')
Returns

TemplateBuilder

Example
Template().fromUbuntuImage('24.04')
Implementation of

TemplateFromImage.fromUbuntuImage

gitClone()

gitClone(
   url: string, 
   path?: PathLike, 
   options?: object): TemplateBuilder

Clone a Git repository.

Parameters
ParameterTypeDescription
urlstringRepository URL
path?PathLikeOptional destination path
options?objectClone options
options.branch?string-
options.depth?number-
Returns

TemplateBuilder

Example
template.gitClone('https://github.com/user/repo.git', '/app/repo')
template.gitClone('https://github.com/user/repo.git', undefined, {
  branch: 'main',
  depth: 1
})
Implementation of

TemplateBuilder.gitClone

makeDir()

makeDir(path: PathLike | PathLike[], options?: object): TemplateBuilder

Create directories.

Parameters
ParameterTypeDescription
pathPathLike | PathLike[]Directory path(s)
options?objectDirectory options
options.mode?number-
Returns

TemplateBuilder

Example
template.makeDir('/app/data', { mode: 0o755 })
template.makeDir(['/app/logs', '/app/cache'])
Implementation of

TemplateBuilder.makeDir

makeSymlink(src: PathLike, dest: PathLike): TemplateBuilder

Create a symbolic link.

Parameters
ParameterTypeDescription
srcPathLikeSource path (target)
destPathLikeDestination path (symlink location)
Returns

TemplateBuilder

Example
template.makeSymlink('/usr/bin/python3', '/usr/bin/python')
Implementation of

TemplateBuilder.makeSymlink

npmInstall()

npmInstall(packages?: string | string[], options?: object): TemplateBuilder

Install Node.js packages using npm.

Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for package.json
options?objectInstall options
options.g?boolean-
Returns

TemplateBuilder

Example
template.npmInstall('express')
template.npmInstall(['lodash', 'axios'])
template.npmInstall('typescript', { g: true })
template.npmInstall()  // Installs from package.json
Implementation of

TemplateBuilder.npmInstall

pipInstall()

pipInstall(packages?: string | string[]): TemplateBuilder

Install Python packages using pip.

Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for current directory
Returns

TemplateBuilder

Example
template.pipInstall('numpy')
template.pipInstall(['pandas', 'scikit-learn'])
template.pipInstall()  // Installs from current directory
Implementation of

TemplateBuilder.pipInstall

remove()

remove(path: PathLike | PathLike[], options?: object): TemplateBuilder

Remove files or directories.

Parameters
ParameterTypeDescription
pathPathLike | PathLike[]Path(s) to remove
options?objectRemove options
options.force?boolean-
options.recursive?boolean-
Returns

TemplateBuilder

Example
template.remove('/tmp/cache', { recursive: true, force: true })
Implementation of

TemplateBuilder.remove

rename()

rename(
   src: PathLike, 
   dest: PathLike, 
   options?: object): TemplateBuilder

Rename or move a file or directory.

Parameters
ParameterTypeDescription
srcPathLikeSource path
destPathLikeDestination path
options?objectRename options
options.force?boolean-
Returns

TemplateBuilder

Example
template.rename('/tmp/old.txt', '/tmp/new.txt')
Implementation of

TemplateBuilder.rename

runCmd()

runCmd(command, options)
runCmd(command: string, options?: object): TemplateBuilder

Run a shell command.

Parameters
ParameterTypeDescription
commandstringCommand string
options?objectCommand options
options.user?string-
Returns

TemplateBuilder

Example
template.runCmd('apt-get update')
template.runCmd(['pip install numpy', 'pip install pandas'])
template.runCmd('apt-get install vim', { user: 'root' })
Implementation of

TemplateBuilder.runCmd

runCmd(commands, options)
runCmd(commands: string[], options?: object): TemplateBuilder

Run a shell command.

Parameters
ParameterTypeDescription
commandsstring[]-
options?objectCommand options
options.user?string-
Returns

TemplateBuilder

Example
template.runCmd('apt-get update')
template.runCmd(['pip install numpy', 'pip install pandas'])
template.runCmd('apt-get install vim', { user: 'root' })
Implementation of

TemplateBuilder.runCmd

setEnvs()

setEnvs(envs: Record<string, string>): TemplateBuilder

Set environment variables.

Parameters
ParameterTypeDescription
envsRecord<string, string>Environment variables
Returns

TemplateBuilder

Example
template.setEnvs({ NODE_ENV: 'production', PORT: '8080' })
Implementation of

TemplateBuilder.setEnvs

setReadyCmd()

setReadyCmd(readyCommand: string | ReadyCmd): TemplateFinal

Set or update the ready check command.

Parameters
ParameterTypeDescription
readyCommandstring | ReadyCmdCommand to check readiness
Returns

TemplateFinal

Example
// Using a string command
template.setReadyCmd('curl http://localhost:8000/health')

// Using ReadyCmd helpers
import { waitForPort, waitForFile, waitForProcess } from 'e2b'

template.setReadyCmd(waitForPort(3000))

template.setReadyCmd(waitForFile('/tmp/ready'))

template.setReadyCmd(waitForProcess('nginx'))
Implementation of

TemplateBuilder.setReadyCmd

setStartCmd()

setStartCmd(startCommand: string, readyCommand: string | ReadyCmd): TemplateFinal

Set the start command and ready check.

Parameters
ParameterTypeDescription
startCommandstringCommand to run on startup
readyCommandstring | ReadyCmdCommand to check readiness
Returns

TemplateFinal

Example
// Using a string command
template.setStartCmd(
  'node app.js',
  'curl http://localhost:8000/health'
)

// Using ReadyCmd helpers
import { waitForPort, waitForURL } from 'e2b'

template.setStartCmd(
  'python -m http.server 8000',
  waitForPort(8000)
)

template.setStartCmd(
  'npm start',
  waitForURL('http://localhost:3000/health', 200)
)
Implementation of

TemplateBuilder.setStartCmd

setUser()

setUser(user: string): TemplateBuilder

Set the user for subsequent commands.

Parameters
ParameterTypeDescription
userstringUsername
Returns

TemplateBuilder

Example
template.setUser('root')
Implementation of

TemplateBuilder.setUser

setWorkdir()

setWorkdir(workdir: PathLike): TemplateBuilder

Set the working directory.

Parameters
ParameterTypeDescription
workdirPathLikeWorking directory path
Returns

TemplateBuilder

Example
template.setWorkdir('/app')
Implementation of

TemplateBuilder.setWorkdir

skipCache()

skipCache(): this

Skip cache for all subsequent build instructions from this point.

Returns

this

Example
Template().skipCache().fromPythonImage('3')
Implementation of

TemplateBuilder.skipCache

build()

static build(template: TemplateClass, options: BuildOptions): Promise<void>

Build and deploy a template to E2B infrastructure.

Parameters
ParameterTypeDescription
templateTemplateClassThe template to build
optionsBuildOptionsBuild configuration options
Returns

Promise<void>

Example
const template = Template().fromPythonImage('3')
await Template.build(template, {
  alias: 'my-python-env',
  cpuCount: 2,
  memoryMB: 1024
})

toDockerfile()

static toDockerfile(template: TemplateClass): string

Convert a template to Dockerfile format. Note: Templates based on other E2B templates cannot be converted to Dockerfile.

Parameters
ParameterTypeDescription
templateTemplateClassThe template to convert
Returns

string

Dockerfile string representation

Throws

Error if the template is based on another E2B template

toJSON()

static toJSON(template: TemplateClass, computeHashes: boolean): Promise<string>

Convert a template to JSON representation.

Parameters
ParameterTypeDefault valueDescription
templateTemplateClassundefinedThe template to convert
computeHashesbooleantrueWhether to compute file hashes for cache invalidation
Returns

Promise<string>

JSON string representation of the template

Interfaces

TemplateBuilder

Main builder state for constructing templates. Provides methods for customizing the template environment.

Methods

aptInstall()

aptInstall(packages: string | string[]): TemplateBuilder

Install Debian/Ubuntu packages using apt-get.

Parameters
ParameterTypeDescription
packagesstring | string[]Package name(s)
Returns

TemplateBuilder

Example
template.aptInstall('vim')
template.aptInstall(['git', 'curl', 'wget'])

copy()

copy(
   src: PathLike | PathLike[], 
   dest: PathLike, 
   options?: object): TemplateBuilder

Copy files or directories into the template.

Parameters
ParameterTypeDescription
srcPathLike | PathLike[]Source path(s)
destPathLikeDestination path
options?objectCopy options
options.forceUpload?true-
options.mode?number-
options.resolveSymlinks?boolean-
options.user?string-
Returns

TemplateBuilder

Example
template.copy('requirements.txt', '/home/user/')
template.copy(['app.ts', 'config.ts'], '/app/', { mode: 0o755 })

copyItems()

copyItems(items: CopyItem[]): TemplateBuilder

Copy multiple items with individual options.

Parameters
ParameterTypeDescription
itemsCopyItem[]Array of copy items
Returns

TemplateBuilder

Example
template.copyItems([
  { src: 'app.ts', dest: '/app/' },
  { src: 'config.ts', dest: '/app/', mode: 0o644 }
])

gitClone()

gitClone(
   url: string, 
   path?: PathLike, 
   options?: object): TemplateBuilder

Clone a Git repository.

Parameters
ParameterTypeDescription
urlstringRepository URL
path?PathLikeOptional destination path
options?objectClone options
options.branch?string-
options.depth?number-
Returns

TemplateBuilder

Example
template.gitClone('https://github.com/user/repo.git', '/app/repo')
template.gitClone('https://github.com/user/repo.git', undefined, {
  branch: 'main',
  depth: 1
})

makeDir()

makeDir(path: PathLike | PathLike[], options?: object): TemplateBuilder

Create directories.

Parameters
ParameterTypeDescription
pathPathLike | PathLike[]Directory path(s)
options?objectDirectory options
options.mode?number-
Returns

TemplateBuilder

Example
template.makeDir('/app/data', { mode: 0o755 })
template.makeDir(['/app/logs', '/app/cache'])
makeSymlink(src: PathLike, dest: PathLike): TemplateBuilder

Create a symbolic link.

Parameters
ParameterTypeDescription
srcPathLikeSource path (target)
destPathLikeDestination path (symlink location)
Returns

TemplateBuilder

Example
template.makeSymlink('/usr/bin/python3', '/usr/bin/python')

npmInstall()

npmInstall(packages?: string | string[], options?: object): TemplateBuilder

Install Node.js packages using npm.

Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for package.json
options?objectInstall options
options.g?boolean-
Returns

TemplateBuilder

Example
template.npmInstall('express')
template.npmInstall(['lodash', 'axios'])
template.npmInstall('typescript', { g: true })
template.npmInstall()  // Installs from package.json

pipInstall()

pipInstall(packages?: string | string[]): TemplateBuilder

Install Python packages using pip.

Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for current directory
Returns

TemplateBuilder

Example
template.pipInstall('numpy')
template.pipInstall(['pandas', 'scikit-learn'])
template.pipInstall()  // Installs from current directory

remove()

remove(path: PathLike | PathLike[], options?: object): TemplateBuilder

Remove files or directories.

Parameters
ParameterTypeDescription
pathPathLike | PathLike[]Path(s) to remove
options?objectRemove options
options.force?boolean-
options.recursive?boolean-
Returns

TemplateBuilder

Example
template.remove('/tmp/cache', { recursive: true, force: true })

rename()

rename(
   src: PathLike, 
   dest: PathLike, 
   options?: object): TemplateBuilder

Rename or move a file or directory.

Parameters
ParameterTypeDescription
srcPathLikeSource path
destPathLikeDestination path
options?objectRename options
options.force?boolean-
Returns

TemplateBuilder

Example
template.rename('/tmp/old.txt', '/tmp/new.txt')

runCmd()

runCmd(command, options)
runCmd(command: string, options?: object): TemplateBuilder

Run a shell command.

Parameters
ParameterTypeDescription
commandstringCommand string
options?objectCommand options
options.user?string-
Returns

TemplateBuilder

Example
template.runCmd('apt-get update')
template.runCmd(['pip install numpy', 'pip install pandas'])
template.runCmd('apt-get install vim', { user: 'root' })
runCmd(commands, options)
runCmd(commands: string[], options?: object): TemplateBuilder

Run multiple shell commands.

Parameters
ParameterTypeDescription
commandsstring[]Array of command strings
options?objectCommand options
options.user?string-
Returns

TemplateBuilder

runCmd(commandOrCommands, options)
runCmd(commandOrCommands: string | string[], options?: object): TemplateBuilder

Run command(s).

Parameters
ParameterTypeDescription
commandOrCommandsstring | string[]Command or commands
options?objectCommand options
options.user?string-
Returns

TemplateBuilder

setEnvs()

setEnvs(envs: Record<string, string>): TemplateBuilder

Set environment variables.

Parameters
ParameterTypeDescription
envsRecord<string, string>Environment variables
Returns

TemplateBuilder

Example
template.setEnvs({ NODE_ENV: 'production', PORT: '8080' })

setReadyCmd()

setReadyCmd(readyCommand: string | ReadyCmd): TemplateFinal

Set or update the ready check command.

Parameters
ParameterTypeDescription
readyCommandstring | ReadyCmdCommand to check readiness
Returns

TemplateFinal

Example
// Using a string command
template.setReadyCmd('curl http://localhost:8000/health')

// Using ReadyCmd helpers
import { waitForPort, waitForFile, waitForProcess } from 'e2b'

template.setReadyCmd(waitForPort(3000))

template.setReadyCmd(waitForFile('/tmp/ready'))

template.setReadyCmd(waitForProcess('nginx'))

setStartCmd()

setStartCmd(startCommand: string, readyCommand: string | ReadyCmd): TemplateFinal

Set the start command and ready check.

Parameters
ParameterTypeDescription
startCommandstringCommand to run on startup
readyCommandstring | ReadyCmdCommand to check readiness
Returns

TemplateFinal

Example
// Using a string command
template.setStartCmd(
  'node app.js',
  'curl http://localhost:8000/health'
)

// Using ReadyCmd helpers
import { waitForPort, waitForURL } from 'e2b'

template.setStartCmd(
  'python -m http.server 8000',
  waitForPort(8000)
)

template.setStartCmd(
  'npm start',
  waitForURL('http://localhost:3000/health', 200)
)

setUser()

setUser(user: string): TemplateBuilder

Set the user for subsequent commands.

Parameters
ParameterTypeDescription
userstringUsername
Returns

TemplateBuilder

Example
template.setUser('root')

setWorkdir()

setWorkdir(workdir: PathLike): TemplateBuilder

Set the working directory.

Parameters
ParameterTypeDescription
workdirPathLikeWorking directory path
Returns

TemplateBuilder

Example
template.setWorkdir('/app')

skipCache()

skipCache(): this

Skip cache for all subsequent build instructions from this point.

Returns

this

Example
template.skipCache().runCmd('apt-get update')

Type Aliases

BuildOptions

type BuildOptions: BasicBuildOptions & object;

Options for building a template with authentication.

Type declaration

NameTypeDescription
apiKey?stringE2B API key for authentication.
domain?stringDomain of the E2B API.

CopyItem

type CopyItem: object;

Configuration for a single file/directory copy operation.

Type declaration

NameType
destPathLike
forceUpload?true
mode?number
resolveSymlinks?boolean
srcPathLike | PathLike[]
user?string

TemplateClass

type TemplateClass: TemplateBuilder | TemplateFinal;

Type representing a template in any state (builder or final).

Functions

Template()

function Template(options?: TemplateOptions): TemplateFromImage

Create a new E2B template builder instance.

Parameters

ParameterTypeDescription
options?TemplateOptionsOptional configuration for the template builder

Returns

TemplateFromImage

A new template builder instance

Example

import { Template } from 'e2b'

const template = Template()
  .fromPythonImage('3')
  .copy('requirements.txt', '/app/')
  .pipInstall()

await Template.build(template, { alias: 'my-python-app' })