From b73ffb9120bf9f08994037e7828432a2223e21f0 Mon Sep 17 00:00:00 2001 From: Tomas Srnka Date: Sun, 26 Jul 2026 22:10:26 +0200 Subject: [PATCH 1/3] docs(template): base images now support Fedora/RHEL/Arch/Alpine, not Debian-only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The base-image page stated "E2B currently supports only Debian-based images … Alpine, RedHat-based … not supported." That's no longer true — the orchestrator now identifies the distro from /etc/os-release and provisions Debian/Ubuntu, Fedora + RHEL family (Rocky/Alma via ID_LIKE), Arch, and Alpine (infra #3381, proven on real KVM). Correct the restriction to an accurate supported-set note, and add the new fromFedoraImage/fromAlpineImage/fromArchImage (and Python from_*_image) convenience helpers to the examples (SDK: E2B #1612). Images with no identifiable distro (no /etc/os-release: scratch/distroless/ pure nixos-nix) and minimal images missing required packages (UBI-minimal) are called out as rejected-with-a-clear-error. --- docs/template/base-image.mdx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/template/base-image.mdx b/docs/template/base-image.mdx index e98a4c11..7248c9a3 100644 --- a/docs/template/base-image.mdx +++ b/docs/template/base-image.mdx @@ -31,19 +31,22 @@ template = Template( Every template starts with a base image that provides the foundation for your sandbox environment. - -E2B currently supports only Debian-based images. Your base image must be Debian or a Debian derivative (e.g., `debian`, `ubuntu`, `python`, `node`). Alpine, RedHat-based, and other non-Debian distributions are not supported. - + +E2B identifies your base image from its `/etc/os-release` and supports **Debian/Ubuntu, Fedora and the RHEL family (including Rocky Linux and AlmaLinux), Arch, and Alpine**. Images with no identifiable distribution — no `/etc/os-release`, e.g. `scratch`, distroless, or pure `nixos/nix` — and minimal images missing required packages (e.g. RHEL UBI-minimal with restricted repositories) are not supported and fail the build with a clear error naming the reason. + ### Predefined base images -Use convenience methods for common base images with Ubuntu, Debian, Python, Node.js, or Bun: +Use convenience methods for common base images with Ubuntu, Debian, Fedora, Alpine, Arch, Python, Node.js, or Bun: ```typescript JavaScript & TypeScript template.fromUbuntuImage("22.04"); // ubuntu:22.04 template.fromDebianImage("stable-slim"); // debian:stable-slim +template.fromFedoraImage("42"); // fedora:42 +template.fromAlpineImage("3.22"); // alpine:3.22 +template.fromArchImage("base-devel"); // archlinux:base-devel template.fromPythonImage("3.13"); // python:3.13 template.fromNodeImage("lts"); // node:lts template.fromBunImage("1.3"); // oven/bun:1.3 @@ -52,6 +55,9 @@ template.fromBunImage("1.3"); // oven/bun:1.3 ```python Python template.from_ubuntu_image("22.04") # ubuntu:22.04 template.from_debian_image("stable-slim") # debian:stable-slim +template.from_fedora_image("42") # fedora:42 +template.from_alpine_image("3.22") # alpine:3.22 +template.from_arch_image("base-devel") # archlinux:base-devel template.from_python_image("3.13") # python:3.13 template.from_node_image("lts") # node:lts template.from_bun_image("1.3") # oven/bun:1.3 From 0c6a4cad31bc0567f0114bebe244baf5294a0813 Mon Sep 17 00:00:00 2001 From: Tomas Srnka Date: Thu, 30 Jul 2026 12:41:51 +0200 Subject: [PATCH 2/3] docs(template): match Fedora/Alpine examples to the SDK defaults The SDK helpers pin fedora:44 and alpine:3.24; fedora:42 is end-of-life. --- docs/template/base-image.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/template/base-image.mdx b/docs/template/base-image.mdx index 7248c9a3..dc42a34b 100644 --- a/docs/template/base-image.mdx +++ b/docs/template/base-image.mdx @@ -44,8 +44,8 @@ Use convenience methods for common base images with Ubuntu, Debian, Fedora, Alpi ```typescript JavaScript & TypeScript template.fromUbuntuImage("22.04"); // ubuntu:22.04 template.fromDebianImage("stable-slim"); // debian:stable-slim -template.fromFedoraImage("42"); // fedora:42 -template.fromAlpineImage("3.22"); // alpine:3.22 +template.fromFedoraImage("44"); // fedora:44 +template.fromAlpineImage("3.24"); // alpine:3.24 template.fromArchImage("base-devel"); // archlinux:base-devel template.fromPythonImage("3.13"); // python:3.13 template.fromNodeImage("lts"); // node:lts @@ -55,8 +55,8 @@ template.fromBunImage("1.3"); // oven/bun:1.3 ```python Python template.from_ubuntu_image("22.04") # ubuntu:22.04 template.from_debian_image("stable-slim") # debian:stable-slim -template.from_fedora_image("42") # fedora:42 -template.from_alpine_image("3.22") # alpine:3.22 +template.from_fedora_image("44") # fedora:44 +template.from_alpine_image("3.24") # alpine:3.24 template.from_arch_image("base-devel") # archlinux:base-devel template.from_python_image("3.13") # python:3.13 template.from_node_image("lts") # node:lts From 2164b84539999133933a6909332dd52516458a8f Mon Sep 17 00:00:00 2001 From: Tomas Beran Date: Fri, 31 Jul 2026 19:27:21 +0200 Subject: [PATCH 3/3] docs(template): document NixOS base image via e2bdev/nixos Add a NixOS base image subsection and reconcile the supported-distros Note to point readers at the official e2bdev/nixos image instead of a raw NixOS image. --- docs/template/base-image.mdx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/template/base-image.mdx b/docs/template/base-image.mdx index dc42a34b..f21e65c8 100644 --- a/docs/template/base-image.mdx +++ b/docs/template/base-image.mdx @@ -32,7 +32,7 @@ template = Template( Every template starts with a base image that provides the foundation for your sandbox environment. -E2B identifies your base image from its `/etc/os-release` and supports **Debian/Ubuntu, Fedora and the RHEL family (including Rocky Linux and AlmaLinux), Arch, and Alpine**. Images with no identifiable distribution — no `/etc/os-release`, e.g. `scratch`, distroless, or pure `nixos/nix` — and minimal images missing required packages (e.g. RHEL UBI-minimal with restricted repositories) are not supported and fail the build with a clear error naming the reason. +E2B identifies your base image from its `/etc/os-release` and supports **Debian/Ubuntu, Fedora and the RHEL family (including Rocky Linux and AlmaLinux), Arch, and Alpine**. Images with no identifiable distribution — no `/etc/os-release`, e.g. `scratch`, distroless, or pure `nixos/nix` — and minimal images missing required packages (e.g. RHEL UBI-minimal with restricted repositories) are not supported and fail the build with a clear error naming the reason. For NixOS, use the official [`e2bdev/nixos`](#nixos-base-image) image instead of a raw NixOS image. ### Predefined base images @@ -99,6 +99,22 @@ template.from_base_image() # e2bdev/base `base` is also the template used when you call `Sandbox.create()` without specifying one. It is Debian-based and comes with common tooling pre-installed: Python 3, Node.js, Yarn, `git`, `curl`, `build-essential`, and the GitHub CLI (`gh`). For the exact contents, see the public Dockerfile: [`templates/base/e2b.Dockerfile`](https://github.com/e2b-dev/E2B/blob/main/templates/base/e2b.Dockerfile). +### NixOS base image + +Arbitrary [NixOS](https://nixos.org/) images (such as `nixos/nix`) aren't supported directly, because they don't expose the `/etc/os-release` metadata E2B needs to identify the distribution. To build NixOS-based sandboxes, use the official `e2bdev/nixos` image, which E2B prepares to work with the sandbox environment: + + + +```typescript JavaScript & TypeScript +template.fromImage("e2bdev/nixos"); +``` + +```python Python +template.from_image("e2bdev/nixos") +``` + + + ### Default resources A sandbox gets its CPU and memory from the template it's built on. A sandbox built from `base` starts with **2 vCPU and 512 MiB of RAM**.