> ## Documentation Index
> Fetch the complete documentation index at: https://e2b-mintlify-f20480e6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Customize the template

> Extend the Code Interpreter sandbox or build the production template from source

The Code Interpreter SDK runs on the public `code-interpreter-v1` sandbox template. You can customize it in two ways:

1. [Create a custom template](#create-a-custom-template) that extends `code-interpreter-v1` with extra packages or a different runtime — this is the recommended approach for most use cases.
2. [Build the production template](#build-the-production-template) directly from the [`code-interpreter` repository](https://github.com/e2b-dev/code-interpreter) — useful when contributing to the SDK or building the official `code-interpreter-v1` template yourself.

***

## Create a custom template

Use this when you need extra preinstalled packages or a different runtime. Your template builds on top of `code-interpreter-v1`, so everything the Code Interpreter SDK relies on stays in place.

### 1. Install the E2B SDK

<CodeGroup>
  ```bash JavaScript & TypeScript theme={null}
  npm install e2b dotenv
  ```

  ```bash Python theme={null}
  pip install e2b python-dotenv
  ```
</CodeGroup>

### 2. Create a template file

<CodeGroup>
  ```typescript JavaScript & TypeScript theme={null}
  // template.ts
  import { Template } from 'e2b';

  export const template = Template().fromTemplate("code-interpreter-v1");
  ```

  ```python Python theme={null}
  # template.py
  from e2b import Template

  template = Template().from_template("code-interpreter-v1")
  ```
</CodeGroup>

### 3. Create a build script

<CodeGroup>
  ```typescript JavaScript & TypeScript theme={null}
  // build.ts
  import "dotenv/config";
  import { Template, defaultBuildLogger } from 'e2b';
  import { template } from './template';

  async function main() {
    await Template.build(template, 'code-interpreter-custom', {
      cpuCount: 2,
      memoryMB: 2048,
      onBuildLogs: defaultBuildLogger(),
    });
  }

  main().catch(console.error);
  ```

  ```python Python theme={null}
  # build.py
  from dotenv import load_dotenv
  from e2b import Template, default_build_logger
  from template import template

  load_dotenv()

  Template.build(
      template,
      alias="code-interpreter-custom",
      cpu_count=2,
      memory_mb=2048,
      on_build_logs=default_build_logger(),
  )
  ```
</CodeGroup>

### 4. Set your environment variables

Create a `.env` file with your API key (loaded by `dotenv` / `load_dotenv()`):

```bash theme={null}
E2B_API_KEY=e2b_***
```

### 5. Build the template

<CodeGroup>
  ```bash JavaScript & TypeScript theme={null}
  npx tsx build.ts
  ```

  ```bash Python theme={null}
  python build.py
  ```
</CodeGroup>

### 6. Use the custom template

<CodeGroup>
  ```js JavaScript & TypeScript theme={null}
  import { Sandbox } from '@e2b/code-interpreter'

  const sbx = await Sandbox.create("code-interpreter-custom")
  const execution = await sbx.runCode("print('Hello, World!')")
  console.log(execution.logs.stdout)
  ```

  ```python Python theme={null}
  from e2b_code_interpreter import Sandbox

  sbx = Sandbox.create("code-interpreter-custom")
  execution = sbx.run_code("print('Hello, World!')")
  print(execution.logs.stdout)
  ```
</CodeGroup>

<Note>
  See [Install custom packages](/docs/quickstart/install-custom-packages) for preinstalling specific Python and Node.js packages with `pip` / `npm`.
</Note>

***

## Build the production template

To build the official `code-interpreter-v1` template from the [`code-interpreter` repository](https://github.com/e2b-dev/code-interpreter), use `build_prod.py`. This is the script CI and releases run, and it's the path to take when you're contributing to the SDK or want to rebuild the production template yourself.

### 1. Clone the repository

The template lives in the `template/` directory — run the remaining steps from there.

```bash theme={null}
git clone https://github.com/e2b-dev/code-interpreter.git
cd code-interpreter/template
```

### 2. Install the build dependencies

```bash theme={null}
pip install -r requirements-dev.txt
```

### 3. Provide your credentials

Create a `.env` file with your API key:

```bash theme={null}
E2B_API_KEY=e2b_***
```

### 4. Build the template

```bash theme={null}
python build_prod.py
```

To force a clean rebuild that ignores the layer cache, set `SKIP_CACHE=true`:

```bash theme={null}
SKIP_CACHE=true python build_prod.py
```
