TemplateBase
Base class for building E2B sandbox templates.
Implements
TemplateFromImage
TemplateBuilder
TemplateFinal
Constructors
new TemplateBase(options?: TemplateOptions): TemplateBase
Parameters
Parameter | Type |
---|---|
options ? | TemplateOptions |
Returns
TemplateBase
Methods
aptInstall()
aptInstall(packages: string | string[]): TemplateBuilder
Install Debian/Ubuntu packages using apt-get.
Parameters
Parameter | Type | Description |
---|---|---|
packages | string | 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
Parameter | Type | Description |
---|---|---|
src | PathLike | PathLike [] | Source path(s) |
dest | PathLike | Destination path |
options ? | object | Copy 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
Parameter | Type | Description |
---|---|---|
items | CopyItem [] | 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
Parameter | Type | Description |
---|---|---|
image | string | Full ECR image path |
credentials | object | AWS credentials |
credentials.accessKeyId | string | - |
credentials.region | string | - |
credentials.secretAccessKey | string | - |
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
Parameter | Type | Default value | Description |
---|---|---|---|
variant | string | '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
Parameter | Type | Description |
---|---|---|
dockerfileContentOrPath | string | Dockerfile 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
Parameter | Type | Description |
---|---|---|
image | string | Full GCR/GAR image path |
credentials | object | GCP service account credentials |
credentials.serviceAccountJSON | string | 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
Parameter | Type | Description |
---|---|---|
baseImage | string | Docker image name |
credentials ? | object | Optional 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
Parameter | Type | Default value | Description |
---|---|---|---|
variant | string | '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
Parameter | Type | Default value | Description |
---|---|---|---|
version | string | '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
Parameter | Type | Description |
---|---|---|
template | string | E2B 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
Parameter | Type | Default value | Description |
---|---|---|---|
variant | string | '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
Parameter | Type | Description |
---|---|---|
url | string | Repository URL |
path ? | PathLike | Optional destination path |
options ? | object | Clone 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
Parameter | Type | Description |
---|---|---|
path | PathLike | PathLike [] | Directory path(s) |
options ? | object | Directory options |
options.mode ? | number | - |
Returns
TemplateBuilder
Example
template.makeDir('/app/data', { mode: 0o755 })
template.makeDir(['/app/logs', '/app/cache'])
Implementation of
TemplateBuilder
.makeDir
makeSymlink()
makeSymlink(src: PathLike, dest: PathLike): TemplateBuilder
Create a symbolic link.
Parameters
Parameter | Type | Description |
---|---|---|
src | PathLike | Source path (target) |
dest | PathLike | Destination 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
Parameter | Type | Description |
---|---|---|
packages ? | string | string [] | Package name(s) or undefined for package.json |
options ? | object | Install 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
Parameter | Type | Description |
---|---|---|
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
Parameter | Type | Description |
---|---|---|
path | PathLike | PathLike [] | Path(s) to remove |
options ? | object | Remove 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
Parameter | Type | Description |
---|---|---|
src | PathLike | Source path |
dest | PathLike | Destination path |
options ? | object | Rename 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
Parameter | Type | Description |
---|---|---|
command | string | Command string |
options ? | object | Command 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
Parameter | Type | Description |
---|---|---|
commands | string [] | - |
options ? | object | Command 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
Parameter | Type | Description |
---|---|---|
envs | Record <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
Parameter | Type | Description |
---|---|---|
readyCommand | string | ReadyCmd | Command 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
Parameter | Type | Description |
---|---|---|
startCommand | string | Command to run on startup |
readyCommand | string | ReadyCmd | Command 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
Parameter | Type | Description |
---|---|---|
user | string | Username |
Returns
TemplateBuilder
Example
template.setUser('root')
Implementation of
TemplateBuilder
.setUser
setWorkdir()
setWorkdir(workdir: PathLike): TemplateBuilder
Set the working directory.
Parameters
Parameter | Type | Description |
---|---|---|
workdir | PathLike | Working 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
Parameter | Type | Description |
---|---|---|
template | TemplateClass | The template to build |
options | BuildOptions | Build 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
Parameter | Type | Description |
---|---|---|
template | TemplateClass | The 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
Parameter | Type | Default value | Description |
---|---|---|---|
template | TemplateClass | undefined | The template to convert |
computeHashes | boolean | true | Whether 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
Parameter | Type | Description |
---|---|---|
packages | string | 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
Parameter | Type | Description |
---|---|---|
src | PathLike | PathLike [] | Source path(s) |
dest | PathLike | Destination path |
options ? | object | Copy 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
Parameter | Type | Description |
---|---|---|
items | CopyItem [] | 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
Parameter | Type | Description |
---|---|---|
url | string | Repository URL |
path ? | PathLike | Optional destination path |
options ? | object | Clone 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
Parameter | Type | Description |
---|---|---|
path | PathLike | PathLike [] | Directory path(s) |
options ? | object | Directory options |
options.mode ? | number | - |
Returns
TemplateBuilder
Example
template.makeDir('/app/data', { mode: 0o755 })
template.makeDir(['/app/logs', '/app/cache'])
makeSymlink()
makeSymlink(src: PathLike, dest: PathLike): TemplateBuilder
Create a symbolic link.
Parameters
Parameter | Type | Description |
---|---|---|
src | PathLike | Source path (target) |
dest | PathLike | Destination 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
Parameter | Type | Description |
---|---|---|
packages ? | string | string [] | Package name(s) or undefined for package.json |
options ? | object | Install 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
Parameter | Type | Description |
---|---|---|
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
Parameter | Type | Description |
---|---|---|
path | PathLike | PathLike [] | Path(s) to remove |
options ? | object | Remove 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
Parameter | Type | Description |
---|---|---|
src | PathLike | Source path |
dest | PathLike | Destination path |
options ? | object | Rename 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
Parameter | Type | Description |
---|---|---|
command | string | Command string |
options ? | object | Command 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
Parameter | Type | Description |
---|---|---|
commands | string [] | Array of command strings |
options ? | object | Command options |
options.user ? | string | - |
Returns
TemplateBuilder
runCmd(commandOrCommands, options)
runCmd(commandOrCommands: string | string[], options?: object): TemplateBuilder
Run command(s).
Parameters
Parameter | Type | Description |
---|---|---|
commandOrCommands | string | string [] | Command or commands |
options ? | object | Command options |
options.user ? | string | - |
Returns
TemplateBuilder
setEnvs()
setEnvs(envs: Record<string, string>): TemplateBuilder
Set environment variables.
Parameters
Parameter | Type | Description |
---|---|---|
envs | Record <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
Parameter | Type | Description |
---|---|---|
readyCommand | string | ReadyCmd | Command 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
Parameter | Type | Description |
---|---|---|
startCommand | string | Command to run on startup |
readyCommand | string | ReadyCmd | Command 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
Parameter | Type | Description |
---|---|---|
user | string | Username |
Returns
TemplateBuilder
Example
template.setUser('root')
setWorkdir()
setWorkdir(workdir: PathLike): TemplateBuilder
Set the working directory.
Parameters
Parameter | Type | Description |
---|---|---|
workdir | PathLike | Working 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
Name | Type | Description |
---|---|---|
apiKey ? | string | E2B API key for authentication. |
domain ? | string | Domain of the E2B API. |
CopyItem
type CopyItem: object;
Configuration for a single file/directory copy operation.
Type declaration
Name | Type |
---|---|
dest | PathLike |
forceUpload ? | true |
mode ? | number |
resolveSymlinks ? | boolean |
src | PathLike | 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
Parameter | Type | Description |
---|---|---|
options ? | TemplateOptions | Optional 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' })