Skip to main content

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

addMcpServer()

addMcpServer(servers: keyof McpServer | keyof McpServer[]): TemplateBuilder
Install MCP servers using mcp-gateway. Note: Requires a base image with mcp-gateway pre-installed (e.g., mcp-gateway).
Parameters
ParameterTypeDescription
serverskeyof McpServer | keyof McpServer[]MCP server name(s)
Returns
TemplateBuilder
Throws
If the base template is not mcp-gateway
Example
template.addMcpServer('exa')
template.addMcpServer(['brave', 'firecrawl', 'duckduckgo'])
Implementation of
TemplateBuilder.addMcpServer

aptInstall()

aptInstall(packages: string | string[], options?: object): TemplateBuilder
Install Debian/Ubuntu packages using apt-get.
Parameters
ParameterTypeDescription
packagesstring | string[]Package name(s)
options?object-
options.noInstallRecommends?boolean-
Returns
TemplateBuilder
Example
template.aptInstall('vim')
template.aptInstall(['git', 'curl', 'wget'])
template.aptInstall(['vim'], { noInstallRecommends: true })
Implementation of
TemplateBuilder.aptInstall

betaDevContainerPrebuild()

betaDevContainerPrebuild(devcontainerDirectory: string): TemplateBuilder
Prebuild a devcontainer from the specified directory.
Parameters
ParameterTypeDescription
devcontainerDirectorystringPath to the devcontainer directory
Returns
TemplateBuilder
Example
template
 .gitClone('https://myrepo.com/project.git', '/my-devcontainer')
 .betaDevContainerPrebuild('/my-devcontainer')
Implementation of
TemplateBuilder.betaDevContainerPrebuild

betaSetDevContainerStart()

betaSetDevContainerStart(devcontainerDirectory: string): TemplateFinal
Start a devcontainer from the specified directory.
Parameters
ParameterTypeDescription
devcontainerDirectorystringPath to the devcontainer directory
Returns
TemplateFinal
Example
template
 .gitClone('https://myrepo.com/project.git', '/my-devcontainer')
 .startDevcontainer('/my-devcontainer')

// Prebuild and start
template
 .gitClone('https://myrepo.com/project.git', '/my-devcontainer')
 .betaDevContainerPrebuild('/my-devcontainer')
 // Other instructions...
 .betaSetDevContainerStart('/my-devcontainer')
Implementation of
TemplateBuilder.betaSetDevContainerStart

bunInstall()

bunInstall(packages?: string | string[], options?: object): TemplateBuilder
Install Bun packages using bun.
Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for package.json
options?objectInstall options
options.dev?boolean-
options.g?boolean-
Returns
TemplateBuilder
Example
template.bunInstall('express')
template.bunInstall(['lodash', 'axios'])
template.bunInstall('tsx', { g: true })
template.bunInstall('typescript', { dev: true })
template.bunInstall()  // Installs from package.json
Implementation of
TemplateBuilder.bunInstall

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

fromBunImage()

fromBunImage(variant: string): TemplateBuilder
Start from a Bun-based Docker image.
Parameters
ParameterTypeDefault valueDescription
variantstring'latest'Bun variant (default: ‘latest’)
Returns
TemplateBuilder
Example
Template().fromBunImage('1.3')
Implementation of
TemplateFromImage.fromBunImage

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'latest'Ubuntu variant (default: ‘latest’)
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-
options.user?string-
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
})
template.gitClone('https://github.com/user/repo.git', '/app/repo', {
  user: 'root'
})
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-
options.user?string-
Returns
TemplateBuilder
Example
template.makeDir('/app/data', { mode: 0o755 })
template.makeDir(['/app/logs', '/app/cache'])
template.makeDir('/app/data', { mode: 0o755, user: 'root' })
Implementation of
TemplateBuilder.makeDir
makeSymlink(
   src: PathLike, 
   dest: PathLike, 
   options?: object): TemplateBuilder
Create a symbolic link.
Parameters
ParameterTypeDescription
srcPathLikeSource path (target)
destPathLikeDestination path (symlink location)
options?objectSymlink options
options.force?boolean-
options.user?string-
Returns
TemplateBuilder
Example
template.makeSymlink('/usr/bin/python3', '/usr/bin/python')
template.makeSymlink('/usr/bin/python3', '/usr/bin/python', { user: 'root' })
template.makeSymlink('/usr/bin/python3', '/usr/bin/python', { force: true })
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.dev?boolean-
options.g?boolean-
Returns
TemplateBuilder
Example
template.npmInstall('express')
template.npmInstall(['lodash', 'axios'])
template.npmInstall('tsx', { g: true })
template.npmInstall('typescript', { dev: true })
template.npmInstall()  // Installs from package.json
Implementation of
TemplateBuilder.npmInstall

pipInstall()

pipInstall(packages?: string | string[], options?: object): TemplateBuilder
Install Python packages using pip.
Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for current directory
options?objectInstall options
options.g?booleanInstall globally as root (default: true). Set to false for user-only installation with —user flag
Returns
TemplateBuilder
Example
template.pipInstall('numpy')  // Installs globally (default)
template.pipInstall(['pandas', 'scikit-learn'])
template.pipInstall('numpy', { g: false })  // Install for user only
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-
options.user?string-
Returns
TemplateBuilder
Example
template.remove('/tmp/cache', { recursive: true, force: true })
template.remove('/tmp/cache', { recursive: true, force: true, user: 'root' })
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-
options.user?string-
Returns
TemplateBuilder
Example
template.rename('/tmp/old.txt', '/tmp/new.txt')
template.rename('/tmp/old.txt', '/tmp/new.txt', { user: 'root' })
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. Note: Environment variables defined here are available only during template build.
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<BuildInfo>
Build and deploy a template to E2B infrastructure.
Parameters
ParameterTypeDescription
templateTemplateClassThe template to build
optionsBuildOptionsBuild configuration options
Returns
Promise<BuildInfo>
Example
const template = Template().fromPythonImage('3')
await Template.build(template, {
  alias: 'my-python-env',
  cpuCount: 2,
  memoryMB: 1024
})

buildInBackground()

static buildInBackground(template: TemplateClass, options: BuildOptions): Promise<BuildInfo>
Build and deploy a template to E2B infrastructure.
Parameters
ParameterTypeDescription
templateTemplateClassThe template to build
optionsBuildOptionsBuild configuration options
Returns
Promise<BuildInfo>
Example
const template = Template().fromPythonImage('3')
const data = await Template.buildInBackground(template, {
  alias: 'my-python-env',
  cpuCount: 2,
  memoryMB: 1024
})

getBuildStatus()

static getBuildStatus(data: Pick<BuildInfo, "templateId" | "buildId">, options?: GetBuildStatusOptions): Promise<object>
Get the status of a build.
Parameters
ParameterTypeDescription
dataPick<BuildInfo, "templateId" | "buildId">Build identifiers
options?GetBuildStatusOptionsAuthentication options
Returns
Promise<object>
NameTypeDescription
buildIDstringDescription Identifier of the build
logEntriesobject[]Description Build logs structured Default []
logsstring[]Description Build logs Default []
reason?object-
reason.logEntries?object[]Description Log entries related to the status reason Default []
reason.messagestringDescription Message with the status reason, currently reporting only for error status
reason.step?stringDescription Step that failed
status"error" | "ready" | "building" | "waiting"-
templateIDstringDescription Identifier of the template
Example
const status = await Template.getBuildStatus(data, { logsOffset: 0 })

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

addMcpServer()

addMcpServer(servers: keyof McpServer | keyof McpServer[]): TemplateBuilder
Install MCP servers using mcp-gateway. Note: Requires a base image with mcp-gateway pre-installed (e.g., mcp-gateway).
Parameters
ParameterTypeDescription
serverskeyof McpServer | keyof McpServer[]MCP server name(s)
Returns
TemplateBuilder
Throws
If the base template is not mcp-gateway
Example
template.addMcpServer('exa')
template.addMcpServer(['brave', 'firecrawl', 'duckduckgo'])

aptInstall()

aptInstall(packages: string | string[], options?: object): TemplateBuilder
Install Debian/Ubuntu packages using apt-get.
Parameters
ParameterTypeDescription
packagesstring | string[]Package name(s)
options?object-
options.noInstallRecommends?boolean-
Returns
TemplateBuilder
Example
template.aptInstall('vim')
template.aptInstall(['git', 'curl', 'wget'])
template.aptInstall(['vim'], { noInstallRecommends: true })

betaDevContainerPrebuild()

betaDevContainerPrebuild(devcontainerDirectory: string): TemplateBuilder
Prebuild a devcontainer from the specified directory.
Parameters
ParameterTypeDescription
devcontainerDirectorystringPath to the devcontainer directory
Returns
TemplateBuilder
Example
template
 .gitClone('https://myrepo.com/project.git', '/my-devcontainer')
 .betaDevContainerPrebuild('/my-devcontainer')

betaSetDevContainerStart()

betaSetDevContainerStart(devcontainerDirectory: string): TemplateFinal
Start a devcontainer from the specified directory.
Parameters
ParameterTypeDescription
devcontainerDirectorystringPath to the devcontainer directory
Returns
TemplateFinal
Example
template
 .gitClone('https://myrepo.com/project.git', '/my-devcontainer')
 .startDevcontainer('/my-devcontainer')

// Prebuild and start
template
 .gitClone('https://myrepo.com/project.git', '/my-devcontainer')
 .betaDevContainerPrebuild('/my-devcontainer')
 // Other instructions...
 .betaSetDevContainerStart('/my-devcontainer')

bunInstall()

bunInstall(packages?: string | string[], options?: object): TemplateBuilder
Install Bun packages using bun.
Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for package.json
options?objectInstall options
options.dev?boolean-
options.g?boolean-
Returns
TemplateBuilder
Example
template.bunInstall('express')
template.bunInstall(['lodash', 'axios'])
template.bunInstall('tsx', { g: true })
template.bunInstall('typescript', { dev: true })
template.bunInstall()  // Installs from package.json

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-
options.user?string-
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
})
template.gitClone('https://github.com/user/repo.git', '/app/repo', {
  user: 'root'
})

makeDir()

makeDir(path: PathLike | PathLike[], options?: object): TemplateBuilder
Create directories.
Parameters
ParameterTypeDescription
pathPathLike | PathLike[]Directory path(s)
options?objectDirectory options
options.mode?number-
options.user?string-
Returns
TemplateBuilder
Example
template.makeDir('/app/data', { mode: 0o755 })
template.makeDir(['/app/logs', '/app/cache'])
template.makeDir('/app/data', { mode: 0o755, user: 'root' })
makeSymlink(
   src: PathLike, 
   dest: PathLike, 
   options?: object): TemplateBuilder
Create a symbolic link.
Parameters
ParameterTypeDescription
srcPathLikeSource path (target)
destPathLikeDestination path (symlink location)
options?objectSymlink options
options.force?boolean-
options.user?string-
Returns
TemplateBuilder
Example
template.makeSymlink('/usr/bin/python3', '/usr/bin/python')
template.makeSymlink('/usr/bin/python3', '/usr/bin/python', { user: 'root' })
template.makeSymlink('/usr/bin/python3', '/usr/bin/python', { force: true })

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.dev?boolean-
options.g?boolean-
Returns
TemplateBuilder
Example
template.npmInstall('express')
template.npmInstall(['lodash', 'axios'])
template.npmInstall('tsx', { g: true })
template.npmInstall('typescript', { dev: true })
template.npmInstall()  // Installs from package.json

pipInstall()

pipInstall(packages?: string | string[], options?: object): TemplateBuilder
Install Python packages using pip.
Parameters
ParameterTypeDescription
packages?string | string[]Package name(s) or undefined for current directory
options?objectInstall options
options.g?booleanInstall globally as root (default: true). Set to false for user-only installation with —user flag
Returns
TemplateBuilder
Example
template.pipInstall('numpy')  // Installs globally (default)
template.pipInstall(['pandas', 'scikit-learn'])
template.pipInstall('numpy', { g: false })  // Install for user only
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-
options.user?string-
Returns
TemplateBuilder
Example
template.remove('/tmp/cache', { recursive: true, force: true })
template.remove('/tmp/cache', { recursive: true, force: true, user: 'root' })

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-
options.user?string-
Returns
TemplateBuilder
Example
template.rename('/tmp/old.txt', '/tmp/new.txt')
template.rename('/tmp/old.txt', '/tmp/new.txt', { user: 'root' })

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. Note: Environment variables defined here are available only during template build.
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

BuildInfo

type BuildInfo: object;
Information about a built template.

Type declaration

NameType
aliasstring
buildIdstring
templateIdstring

BuildOptions

type BuildOptions: AuthOptions & BasicBuildOptions;
Options for building a template with authentication.

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

GetBuildStatusOptions

type GetBuildStatusOptions: AuthOptions & object;
Response from getting build status.

Type declaration

NameType
logsOffset?number

McpServerName

type McpServerName: keyof McpServer;
MCP server names that can be installed.

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' })