From 42620f69f7b9b86fe080ecaa780ae958f9291f4f Mon Sep 17 00:00:00 2001 From: Tomas Beran Date: Tue, 17 Feb 2026 18:04:23 -0800 Subject: [PATCH 1/3] Standardize title capitalization to sentence case across docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Converts all Title Case headings, page titles, sidebar titles, and navigation group names to sentence case — only the first word and proper nouns/acronyms remain capitalized. --- docs.json | 10 +++---- docs.mdx | 2 +- docs/agents/amp-code.mdx | 8 +++--- docs/agents/claude-code.mdx | 16 +++++------ docs/agents/codex.mdx | 12 ++++---- docs/agents/examples.mdx | 2 +- docs/agents/openclaw.mdx | 12 ++++---- docs/agents/opencode.mdx | 8 +++--- docs/api-key.mdx | 6 ++-- docs/byoc.mdx | 6 ++-- docs/code-interpreting/contexts.mdx | 2 +- docs/filesystem/watch.mdx | 2 +- docs/mcp/available-servers.mdx | 2 +- docs/mcp/custom-servers.mdx | 2 +- docs/mcp/custom-templates.mdx | 2 +- docs/mcp/quickstart.mdx | 2 +- docs/migration/v2.mdx | 2 +- docs/sandbox-template/ready-cmd.mdx | 2 +- docs/sandbox-template/start-cmd.mdx | 2 +- docs/sandbox/custom-domain.mdx | 10 +++---- docs/sandbox/git-integration.mdx | 2 +- docs/sandbox/ip-tunneling.mdx | 8 +++--- docs/sandbox/lifecycle-events-api.mdx | 2 +- docs/sandbox/persistence.mdx | 2 +- docs/sandbox/rate-limits.mdx | 2 +- docs/template/base-image.mdx | 2 +- docs/template/caching.mdx | 8 +++--- docs/template/defining-template.mdx | 2 +- docs/template/error-handling.mdx | 2 +- docs/template/examples/desktop.mdx | 6 ++-- docs/template/examples/expo.mdx | 2 +- docs/template/how-it-works.mdx | 4 +-- docs/template/logging.mdx | 4 +-- docs/template/migration-v2.mdx | 6 ++-- docs/template/names.mdx | 16 +++++------ docs/template/private-registries.mdx | 4 +-- docs/template/start-ready-command.mdx | 2 +- docs/template/tags.mdx | 28 +++++++++---------- docs/template/user-and-workdir.mdx | 2 +- .../templates/49999-port-not-open.mdx | 4 +-- docs/use-cases/ci-cd.mdx | 4 +-- docs/use-cases/computer-use.mdx | 8 +++--- 42 files changed, 115 insertions(+), 115 deletions(-) diff --git a/docs.json b/docs.json index 24e37900..3219cf9b 100644 --- a/docs.json +++ b/docs.json @@ -23,7 +23,7 @@ "icon": "book-open-cover", "groups": [ { - "group": "Getting Started", + "group": "Getting started", "pages": [ "docs", { @@ -50,7 +50,7 @@ ] }, { - "group": "Agents in Sandbox", + "group": "Agents in sandbox", "pages": [ "docs/agents/amp-code", "docs/agents/claude-code", @@ -59,7 +59,7 @@ ] }, { - "group": "Code Interpreting", + "group": "Code interpreting", "pages": [ { "group": "Analyze data with AI", @@ -173,7 +173,7 @@ ] }, { - "group": "MCP Gateway", + "group": "MCP gateway", "pages": [ "docs/mcp", "docs/mcp/quickstart", @@ -218,7 +218,7 @@ ] }, { - "anchor": "SDK Reference", + "anchor": "SDK reference", "icon": "brackets-curly", "href": "https://e2b.dev/docs/sdk-reference" } diff --git a/docs.mdx b/docs.mdx index 2909075f..a3b8533a 100644 --- a/docs.mdx +++ b/docs.mdx @@ -38,7 +38,7 @@ print(result.stdout) ``` -## E2B Building Blocks +## E2B building blocks A quick overview of the core building blocks you'll interact with when using E2B. diff --git a/docs/agents/amp-code.mdx b/docs/agents/amp-code.mdx index ea2bb0d2..579c54e1 100644 --- a/docs/agents/amp-code.mdx +++ b/docs/agents/amp-code.mdx @@ -20,7 +20,7 @@ Once inside the sandbox, start AMP. amp ``` -## Run Headless +## Run headless Use `-x` for non-interactive mode and `--dangerously-allow-all` to auto-approve all tool calls (safe inside E2B sandboxes). AMP uses its own API key from [ampcode.com/settings](https://ampcode.com/settings). @@ -170,7 +170,7 @@ sandbox.kill() ``` -## Thread Management +## Thread management AMP persists conversations as threads that can be resumed or continued with follow-up tasks. @@ -236,7 +236,7 @@ sandbox.kill() ``` -## Build a Custom Template +## Build a custom template If you need to customize the environment (e.g. pre-install dependencies, add config files), build your own template on top of the pre-built `amp-code` template. @@ -295,7 +295,7 @@ python build.py ``` -## Related Guides +## Related guides diff --git a/docs/agents/claude-code.mdx b/docs/agents/claude-code.mdx index 4a71b579..9623013b 100644 --- a/docs/agents/claude-code.mdx +++ b/docs/agents/claude-code.mdx @@ -20,7 +20,7 @@ Once inside the sandbox, start Claude Code. claude ``` -## Run Headless +## Run headless Use `-p` for non-interactive mode and `--dangerously-skip-permissions` to auto-approve all tool calls (safe inside E2B sandboxes). @@ -111,7 +111,7 @@ sandbox.kill() ``` -## Structured Output +## Structured output Use `--output-format json` to get machine-readable responses — useful for building pipelines or extracting specific results. @@ -152,7 +152,7 @@ sandbox.kill() ``` -## Streaming Output +## Streaming output Use `--output-format stream-json` to get a real-time JSONL event stream — including tool calls, token usage, and result metadata. @@ -210,7 +210,7 @@ sandbox.kill() ``` -## Resume a Session +## Resume a session Claude Code persists conversations that can be resumed with follow-up tasks using `--session-id`. @@ -274,7 +274,7 @@ sandbox.kill() ``` -## Custom System Prompt +## Custom system prompt Write a `CLAUDE.md` file into the sandbox for project context or use `--system-prompt` to provide task-specific instructions. @@ -324,7 +324,7 @@ sandbox.kill() ``` -## Connect MCP Tools +## Connect MCP tools Claude Code has built-in support for [MCP](https://modelcontextprotocol.io/). E2B provides an [MCP gateway](/docs/mcp) that gives Claude access to 200+ tools from the [Docker MCP Catalog](https://hub.docker.com/mcp). @@ -385,7 +385,7 @@ sandbox.kill() ``` -## Build a Custom Template +## Build a custom template If you need to customize the environment (e.g. pre-install dependencies, add config files), build your own template on top of the pre-built `claude` template. @@ -444,7 +444,7 @@ python build.py ``` -## Related Guides +## Related guides diff --git a/docs/agents/codex.mdx b/docs/agents/codex.mdx index ba2b7dfd..fe8d2abb 100644 --- a/docs/agents/codex.mdx +++ b/docs/agents/codex.mdx @@ -20,7 +20,7 @@ Once inside the sandbox, start Codex. codex ``` -## Run Headless +## Run headless Use `codex exec` for non-interactive mode and `--full-auto` to auto-approve tool calls (safe inside E2B sandboxes). Pass `--skip-git-repo-check` to bypass git directory ownership checks inside the sandbox. Pass `CODEX_API_KEY` as an environment variable. @@ -113,7 +113,7 @@ sandbox.kill() ``` -## Schema-Validated Output +## Schema-validated output Use `--output-schema` to constrain the agent's final response to a JSON Schema. This ensures the output conforms to a specific structure — useful for building reliable pipelines. @@ -194,7 +194,7 @@ sandbox.kill() ``` -## Streaming Events +## Streaming events Use `--json` to get a JSONL event stream. Each line is a JSON object representing an agent event (tool calls, file changes, messages). Progress goes to stderr; events go to stdout. @@ -244,7 +244,7 @@ sandbox.kill() ``` -## Image Input +## Image input Pass screenshots or design mockups with `--image` to give Codex visual context alongside the prompt. @@ -292,7 +292,7 @@ sandbox.kill() ``` -## Build a Custom Template +## Build a custom template If you need to customize the environment (e.g. pre-install dependencies, add config files), build your own template on top of the pre-built `codex` template. @@ -351,7 +351,7 @@ python build.py ``` -## Related Guides +## Related guides diff --git a/docs/agents/examples.mdx b/docs/agents/examples.mdx index 42277345..2f84fe70 100644 --- a/docs/agents/examples.mdx +++ b/docs/agents/examples.mdx @@ -1,5 +1,5 @@ --- url: https://github.com/e2b-dev -title: All Examples +title: All examples icon: "github" --- diff --git a/docs/agents/openclaw.mdx b/docs/agents/openclaw.mdx index 4d57585e..51a27a97 100644 --- a/docs/agents/openclaw.mdx +++ b/docs/agents/openclaw.mdx @@ -20,7 +20,7 @@ Once inside the sandbox, start OpenClaw. openclaw agent --local --message "Hello" ``` -## Run Headless +## Run headless Use `openclaw agent --message` for non-interactive mode. Pass `--local` to use API keys from environment variables and `--thinking` to control reasoning depth. @@ -111,7 +111,7 @@ sandbox.kill() ``` -## Structured Output +## Structured output Use `--json` to get machine-readable responses with structured payload and metadata. @@ -270,7 +270,7 @@ sandbox.kill() ``` -## Add Skills +## Add skills OpenClaw supports a [skills ecosystem](https://docs.openclaw.ai/tools/skills) via [ClawHub](https://clawhub.com). Skills are markdown files (`SKILL.md`) that extend the agent with additional tools. Install them with the `clawhub` CLI or write them directly into the workspace. @@ -382,7 +382,7 @@ sandbox.kill() ``` -## Launch the Gateway +## Launch the gateway OpenClaw has a built-in [web UI and chat interface](https://openclaw.ai) served by its gateway. Start it inside a sandbox and connect from your browser. @@ -426,7 +426,7 @@ print(f"Sandbox ID: {sandbox.sandbox_id}") ``` -## Build a Custom Template +## Build a custom template If you need to customize the environment (e.g. pre-install dependencies, add config files), build your own template on top of the pre-built `openclaw` template. @@ -495,7 +495,7 @@ python build.py ``` -## Related Guides +## Related guides diff --git a/docs/agents/opencode.mdx b/docs/agents/opencode.mdx index a8d9e01f..1f0852fb 100644 --- a/docs/agents/opencode.mdx +++ b/docs/agents/opencode.mdx @@ -20,7 +20,7 @@ Once inside the sandbox, start OpenCode. opencode ``` -## Run Headless +## Run headless Use `opencode run` for non-interactive mode. Pass your LLM provider's API key as an environment variable — OpenCode supports `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, and [others](https://opencode.ai/docs/config/). @@ -111,7 +111,7 @@ sandbox.kill() ``` -## Launch the Web UI +## Launch the web UI OpenCode has a [built-in web interface](https://opencode.ai/docs/web/). Start it inside a sandbox and connect from your browser. @@ -163,7 +163,7 @@ print(f"Sandbox ID: {sandbox.sandbox_id}") ``` -## Build a Custom Template +## Build a custom template If you need to customize the environment (e.g. pre-install dependencies, add config files), build your own template on top of the pre-built `opencode` template. @@ -238,7 +238,7 @@ python build.py ``` -## Related Guides +## Related guides diff --git a/docs/api-key.mdx b/docs/api-key.mdx index ce52f088..a436f71e 100644 --- a/docs/api-key.mdx +++ b/docs/api-key.mdx @@ -1,5 +1,5 @@ --- -title: "API Key" +title: "API key" icon: "key" --- @@ -27,7 +27,7 @@ You can get your API key at [dashboard](https://e2b.dev/dashboard?tab=keys).
-# Access Token +# Access token The access token is used only in the CLI and is **not needed in the SDK**. There's no need to set it when logging into the CLI using `e2b auth login`. @@ -35,7 +35,7 @@ The access token is used only in the CLI and is **not needed in the SDK**. There To authenticate without the browser, you can set `E2B_ACCESS_TOKEN` as an environment variable. This is useful for CI/CD pipelines. -## Where to find Access token +## Where to find access token You can get your **Access token key** at the [dashboard](https://e2b.dev/dashboard/account). diff --git a/docs/byoc.mdx b/docs/byoc.mdx index 50b974fc..e6b7f2c2 100644 --- a/docs/byoc.mdx +++ b/docs/byoc.mdx @@ -1,6 +1,6 @@ --- -title: "BYOC (Bring Your Own Cloud)" -sidebarTitle: Bring Your Own Cloud +title: "BYOC (bring your own cloud)" +sidebarTitle: Bring your own cloud --- BYOC (Bring Your Own Cloud) allows you to deploy E2B sandboxes to your own cloud infrastructure within your VPC. @@ -29,7 +29,7 @@ sandbox traffic, and logs, is transmitted directly from the client to the custom -### BYOC Cluster Components +### BYOC cluster components - **Orchestrator**: Represents a node that is responsible for managing sandboxes and their lifecycle. Optionally, it can also run the template builder component. - **Edge Controller**: Routes traffic to sandboxes, exposes API for cluster management, and gRPC proxy used by E2B control plane to communicate with orchestrators. - **Monitoring**: Collector that receives sandbox and build logs and system metrics from orchestrators and edge controllers. Only anonymized metrics are sent to the E2B Cloud for observability purposes. diff --git a/docs/code-interpreting/contexts.mdx b/docs/code-interpreting/contexts.mdx index 8834e2b3..5529ff0b 100644 --- a/docs/code-interpreting/contexts.mdx +++ b/docs/code-interpreting/contexts.mdx @@ -1,5 +1,5 @@ --- -title: "Code Contexts" +title: "Code contexts" --- Run code in different code execution contexts with E2B Code Interpreter SDK. This allows you to parallelize code execution by running code in different contexts at the same time. diff --git a/docs/filesystem/watch.mdx b/docs/filesystem/watch.mdx index 8da5d02a..55fe18f4 100644 --- a/docs/filesystem/watch.mdx +++ b/docs/filesystem/watch.mdx @@ -49,7 +49,7 @@ for event in events: -## Recursive Watching +## Recursive watching You can enable recursive watching using the parameter `recursive`. diff --git a/docs/mcp/available-servers.mdx b/docs/mcp/available-servers.mdx index b030cd41..7cf25ad5 100644 --- a/docs/mcp/available-servers.mdx +++ b/docs/mcp/available-servers.mdx @@ -1,5 +1,5 @@ --- -title: Available Servers +title: Available servers description: Browse available MCP servers --- diff --git a/docs/mcp/custom-servers.mdx b/docs/mcp/custom-servers.mdx index 7a2d818c..6549761e 100644 --- a/docs/mcp/custom-servers.mdx +++ b/docs/mcp/custom-servers.mdx @@ -1,5 +1,5 @@ --- -title: Custom Servers +title: Custom servers description: Use custom MCP servers from GitHub repositories --- diff --git a/docs/mcp/custom-templates.mdx b/docs/mcp/custom-templates.mdx index ab7a6a59..d23ca86e 100644 --- a/docs/mcp/custom-templates.mdx +++ b/docs/mcp/custom-templates.mdx @@ -1,5 +1,5 @@ --- -title: Custom Templates +title: Custom templates description: Use MCP servers with custom sandbox templates --- diff --git a/docs/mcp/quickstart.mdx b/docs/mcp/quickstart.mdx index 159fb991..5cb03677 100644 --- a/docs/mcp/quickstart.mdx +++ b/docs/mcp/quickstart.mdx @@ -154,7 +154,7 @@ asyncio.run(main()) ``` -## Official MCP Client +## Official MCP client ```typescript Typescript diff --git a/docs/migration/v2.mdx b/docs/migration/v2.mdx index 24b577eb..5d06336b 100644 --- a/docs/migration/v2.mdx +++ b/docs/migration/v2.mdx @@ -1,5 +1,5 @@ --- -title: "SDK v2 Migration Guide" +title: "SDK v2 migration guide" --- This guide helps you migrate from E2B SDK v1 to v2, covering all breaking changes and new patterns. diff --git a/docs/sandbox-template/ready-cmd.mdx b/docs/sandbox-template/ready-cmd.mdx index cf3f82ee..4a5e9a7a 100644 --- a/docs/sandbox-template/ready-cmd.mdx +++ b/docs/sandbox-template/ready-cmd.mdx @@ -1,5 +1,5 @@ --- -title: "Ready Command" +title: "Ready command" sidebarTitle: Ready command --- diff --git a/docs/sandbox-template/start-cmd.mdx b/docs/sandbox-template/start-cmd.mdx index 1e7422cf..c6018843 100644 --- a/docs/sandbox-template/start-cmd.mdx +++ b/docs/sandbox-template/start-cmd.mdx @@ -1,5 +1,5 @@ --- -title: "Start Command" +title: "Start command" sidebarTitle: Start command --- diff --git a/docs/sandbox/custom-domain.mdx b/docs/sandbox/custom-domain.mdx index f08720c0..1fa46272 100644 --- a/docs/sandbox/custom-domain.mdx +++ b/docs/sandbox/custom-domain.mdx @@ -1,5 +1,5 @@ --- -title: "Custom Domain" +title: "Custom domain" --- How to set up a custom domain for Sandboxes hosted on E2B. @@ -15,7 +15,7 @@ We will set up a GCP VM running Caddy server with Docker and Cloudflare DNS to p - Domain name registered and configured with Cloudflare DNS. - Cloudflare API Token that allows you to manage DNS records. -### GCP VM Setup +### GCP VM setup 1. Create a VM instance by running the following command: @@ -48,7 +48,7 @@ We will set up a GCP VM running Caddy server with Docker and Cloudflare DNS to p --zone=us-west1-a ``` -### Server Setup +### Server setup 1. Install the latest stable version of Docker: @@ -159,7 +159,7 @@ We will set up a GCP VM running Caddy server with Docker and Cloudflare DNS to p docker compose up -d ``` -### Domain Setup +### Domain setup Log into the Cloudflare dashboard and create a new A wildcard DNS record pointing to the IP address of the GCP VM. @@ -179,7 +179,7 @@ Log into the Cloudflare dashboard and create a new A wildcard DNS record pointin *.mydomain.com A GCP_VM_IP ``` -### Testing the Setup +### Testing the setup We will create a new Sandbox on E2B and install a simple HTTP server in it. diff --git a/docs/sandbox/git-integration.mdx b/docs/sandbox/git-integration.mdx index a673f9b4..f4618fe7 100644 --- a/docs/sandbox/git-integration.mdx +++ b/docs/sandbox/git-integration.mdx @@ -1,5 +1,5 @@ --- -title: "Git Integration" +title: "Git integration" description: "Clone repositories, manage branches, and push changes using the sandbox.git methods." --- diff --git a/docs/sandbox/ip-tunneling.mdx b/docs/sandbox/ip-tunneling.mdx index 640406ce..3b21e2f7 100644 --- a/docs/sandbox/ip-tunneling.mdx +++ b/docs/sandbox/ip-tunneling.mdx @@ -1,5 +1,5 @@ --- -title: "Proxy Tunneling" +title: "Proxy tunneling" description: "How to tunnel Sandbox network traffic through a proxy server" --- @@ -8,7 +8,7 @@ description: "How to tunnel Sandbox network traffic through a proxy server" We will set up a proxy server on a GCP VM instance running [Shadowsocks](https://shadowsocks.org) and use it to tunnel the Sandbox network traffic. This will allow you to use a dedicated IP address for outgoing requests. -### GCP VM Setup +### GCP VM setup 1. Create a firewall rule to allow all tcp/udp traffic to port 8388. @@ -60,7 +60,7 @@ This will allow you to use a dedicated IP address for outgoing requests. --zone=us-west1-a ``` -### Shadowsocks Server Setup (VM) +### Shadowsocks server setup (VM) SSH into the VM and follow the instructions below to install and configure Shadowsocks. @@ -158,7 +158,7 @@ SSH into the VM and follow the instructions below to install and configure Shado sudo systemctl status ssserver ``` -### Shadowsocks Client Setup (Sandbox) +### Shadowsocks client setup (sandbox) Create a custom Sandbox template that uses the shadowsocks client to tunnel TCP traffic through the proxy server we set up above. diff --git a/docs/sandbox/lifecycle-events-api.mdx b/docs/sandbox/lifecycle-events-api.mdx index a58e6011..9b573d30 100644 --- a/docs/sandbox/lifecycle-events-api.mdx +++ b/docs/sandbox/lifecycle-events-api.mdx @@ -1,5 +1,5 @@ --- -title: "Monitor sandbox lifecycle Events" +title: "Monitor sandbox lifecycle events" sidebarTitle: Lifecycle events API --- diff --git a/docs/sandbox/persistence.mdx b/docs/sandbox/persistence.mdx index c34f67a8..e35359b1 100644 --- a/docs/sandbox/persistence.mdx +++ b/docs/sandbox/persistence.mdx @@ -13,7 +13,7 @@ The sandbox persistence allows you to pause your sandbox and resume it later fro This includes not only state of the sandbox's filesystem but also the sandbox's memory. This means all running processes, loaded variables, data, etc. -## Sandbox State Transitions +## Sandbox state transitions Understanding how sandboxes transition between different states is crucial for managing their lifecycle effectively. Here's a diagram showing the possible state transitions: diff --git a/docs/sandbox/rate-limits.mdx b/docs/sandbox/rate-limits.mdx index 9d3dfc23..2a1618f0 100644 --- a/docs/sandbox/rate-limits.mdx +++ b/docs/sandbox/rate-limits.mdx @@ -1,5 +1,5 @@ --- -title: "Rate Limits" +title: "Rate limits" sidebarTitle: "Rate limits" --- diff --git a/docs/template/base-image.mdx b/docs/template/base-image.mdx index 8f3a8b15..1accfe4c 100644 --- a/docs/template/base-image.mdx +++ b/docs/template/base-image.mdx @@ -1,5 +1,5 @@ --- -title: "Base Image" +title: "Base image" description: "How to define a base image for your template" --- diff --git a/docs/template/caching.mdx b/docs/template/caching.mdx index 585adec8..25b3fa42 100644 --- a/docs/template/caching.mdx +++ b/docs/template/caching.mdx @@ -38,7 +38,7 @@ template = ( This will force rebuild from the next instruction, invalidating the cache for all subsequent instructions in the template. -### Whole Template +### Whole template To force rebuild the whole template, you can use also `skipCache`/`skip_cache` parameter in the `Template.build` method: @@ -61,7 +61,7 @@ Template.build( This will skip the cache usage for the whole template build. -## Files Caching +## Files caching When using the `.copy()` command, we cache the files based on their content. If the files haven't changed since the last build, we reuse them from the files cache. We differ from Docker here. Because we build the template on our infrastructure, we use improved caching on files level. @@ -88,9 +88,9 @@ template = ( -## Use Case for Caching +## Use case for caching You can leverage caching to create templates with multiple variants (e.g., different RAM or CPU) while reusing the common layers. When building the template, just change the template name to a specific RAM/CPU configuration (e.g., `my-template-2cpu-2gb`, `my-template-1cpu-4gb`), keep the rest of the template definition the same, and the build process will reuse the cached layers. -## Optimize Build Times +## Optimize build times To optimize build times, place frequently changing commands (e.g., copying source code) towards the end of your template definition. This way, earlier layers can be cached and reused more often. diff --git a/docs/template/defining-template.mdx b/docs/template/defining-template.mdx index 1ebc144a..c4671ac4 100644 --- a/docs/template/defining-template.mdx +++ b/docs/template/defining-template.mdx @@ -1,5 +1,5 @@ --- -title: "Defining Template" +title: "Defining template" description: "How to create your own template" --- diff --git a/docs/template/error-handling.mdx b/docs/template/error-handling.mdx index 38f3033d..b59126e2 100644 --- a/docs/template/error-handling.mdx +++ b/docs/template/error-handling.mdx @@ -1,5 +1,5 @@ --- -title: "Error Handling" +title: "Error handling" description: "Handle errors in your template" --- diff --git a/docs/template/examples/desktop.mdx b/docs/template/examples/desktop.mdx index c080d71d..4d8b09a0 100644 --- a/docs/template/examples/desktop.mdx +++ b/docs/template/examples/desktop.mdx @@ -11,7 +11,7 @@ The template includes: - **Pre-installed applications**: LibreOffice, text editors, file manager, and common utilities - **Automation tools**: [xdotool](https://github.com/jordansissel/xdotool) and [scrot](https://github.com/resurrecting-open-source-projects/scrot) for programmatic desktop control -## Template Definition +## Template definition The template installs the desktop environment, sets up VNC streaming via [x11vnc](https://github.com/LibVNC/x11vnc) and noVNC, and configures a startup script. @@ -143,7 +143,7 @@ template = ( -## Startup Script +## Startup script The startup script initializes the virtual display using [Xvfb](https://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml) (X Virtual Framebuffer), launches the XFCE desktop session, starts the VNC server, and exposes the desktop via noVNC on port 6080. This script runs automatically when the sandbox starts. @@ -171,7 +171,7 @@ cd /opt/noVNC/utils && ./novnc_proxy --vnc localhost:5900 --listen 6080 --web /o sleep 2 ``` -## Building the Template +## Building the template Build the template with increased CPU and memory allocation to handle the desktop environment installation. The build process may take several minutes due to the size of the packages being installed. diff --git a/docs/template/examples/expo.mdx b/docs/template/examples/expo.mdx index c60b6314..f7840fda 100644 --- a/docs/template/examples/expo.mdx +++ b/docs/template/examples/expo.mdx @@ -1,5 +1,5 @@ --- -title: "Expo App" +title: "Expo app" description: "Expo web app running in the sandbox using Node.js" --- diff --git a/docs/template/how-it-works.mdx b/docs/template/how-it-works.mdx index 5e20f4b7..a806441a 100644 --- a/docs/template/how-it-works.mdx +++ b/docs/template/how-it-works.mdx @@ -1,5 +1,5 @@ --- -title: "How It Works" +title: "How it works" description: "How the template building process works" --- @@ -23,7 +23,7 @@ We call this sandbox snapshot a _sandbox template_. and the filesystem exactly as it was. -## Default User And Workdir +## Default user and workdir To learn more about default user and workdir, please refer to the [User And Workdir](/docs/template/user-and-workdir) section. diff --git a/docs/template/logging.mdx b/docs/template/logging.mdx index fd97c323..81a42b60 100644 --- a/docs/template/logging.mdx +++ b/docs/template/logging.mdx @@ -5,7 +5,7 @@ description: "How to view logs from the template build" You can retrieve the build logs using the SDK. -## Default Logger +## Default logger We provide a default logger that you can use to filter logs by level: @@ -34,7 +34,7 @@ Template.build( -## Custom Logger +## Custom logger You can customize how logs are handled: diff --git a/docs/template/migration-v2.mdx b/docs/template/migration-v2.mdx index a2488e66..bec6875c 100644 --- a/docs/template/migration-v2.mdx +++ b/docs/template/migration-v2.mdx @@ -1,5 +1,5 @@ --- -title: "V2 Migration Guide" +title: "V2 migration guide" description: "How to migrate from the legacy template definition" --- @@ -15,7 +15,7 @@ We've made ready for you three ways how to migrate existing template to the new The default user for the template is `user` with the working directory set to the user home directory. This is a difference from the Docker defaults. -## Migration Command (Recommended) +## Migration command (recommended) To migrate the existing template definition to the new format, follow these steps: @@ -40,7 +40,7 @@ To migrate the existing template definition to the new format, follow these step -### Generated Output +### Generated output The migration command generates three files (based on the selected language). diff --git a/docs/template/names.mdx b/docs/template/names.mdx index b6435416..7386bf81 100644 --- a/docs/template/names.mdx +++ b/docs/template/names.mdx @@ -1,12 +1,12 @@ --- -title: "Template Names" +title: "Template names" sidebarTitle: "Names" description: "Understanding and managing template names" --- Template names are unique identifiers used to reference and create sandboxes from your templates. They serve as human-readable names that make it easy to identify and use your templates across your applications. -## What is a Template Name? +## What is a template name? A name is a string identifier that you assign to a template when building it. Once a template is built with a name, you can use that name to create sandboxes from the template. @@ -38,7 +38,7 @@ sandbox = Sandbox.create('my-python-env') -## Team-Local Naming +## Team-local naming Template names are scoped to your team. This means: @@ -51,9 +51,9 @@ Template names are scoped to your team. This means: **Backwards Compatibility**: Existing public templates remain accessible without the team slug prefix. New public templates should be referenced using the full namespaced format (`team-slug/template-name`). -## Common Use Cases +## Common use cases -### Development and Production Environments +### Development and production environments Use different names for different environments: @@ -93,7 +93,7 @@ Template.build( -### Multiple Template Variants +### Multiple template variants Create different variants of the same template with different configurations: @@ -137,7 +137,7 @@ Template.build( When building variants with the same template definition but different CPU/RAM configurations, E2B's caching system will reuse common layers, making subsequent builds much faster. -## Checking Name Availability +## Checking name availability You can check if a name is already in use within your team with the `exists` method. @@ -159,7 +159,7 @@ print(f"Name {'is taken' if exists else 'is available'}") -## Best Practices +## Best practices 1. **Use descriptive names**: Choose names that clearly indicate the template's purpose or configuration 2. **Use tags for versioning**: Instead of baking version numbers into names, use [tags](/docs/template/tags) for version management (e.g., `myapp:v1`, `myapp:v2`) diff --git a/docs/template/private-registries.mdx b/docs/template/private-registries.mdx index 6b4ca9bb..4d47cec7 100644 --- a/docs/template/private-registries.mdx +++ b/docs/template/private-registries.mdx @@ -1,5 +1,5 @@ --- -title: "Private Registries" +title: "Private registries" description: "Access private registries as the base image" --- @@ -8,7 +8,7 @@ If your base image is hosted in a private registry, you can provide credentials - GCP Artifact Registry - AWS ECR -## General Registry +## General registry diff --git a/docs/template/start-ready-command.mdx b/docs/template/start-ready-command.mdx index ae581e4f..0c0cc3fc 100644 --- a/docs/template/start-ready-command.mdx +++ b/docs/template/start-ready-command.mdx @@ -1,5 +1,5 @@ --- -title: "Start & Ready Commands" +title: "Start & ready commands" description: "Define running processes for the sandbox" --- diff --git a/docs/template/tags.mdx b/docs/template/tags.mdx index 72f91890..c1216aa4 100644 --- a/docs/template/tags.mdx +++ b/docs/template/tags.mdx @@ -1,12 +1,12 @@ --- -title: "Template Tags & Versioning" -sidebarTitle: "Tags & Versioning" +title: "Template tags & versioning" +sidebarTitle: "Tags & versioning" description: "Use tags to version your templates and manage environment-based deployments" --- Template versioning allows you to maintain multiple versions of the same template using tags. This enables workflows like semantic versioning, environment-based deployments, and gradual rollouts. -## Tag Format +## Tag format Tags follow the `name:tag` format, where `name` is your template's identifier and `tag` is the version label. @@ -16,7 +16,7 @@ my-template:production // Within your team acme/my-template:v1.0.0 // Full namespaced reference ``` -## The Default Tag +## The default tag When you build or reference a template without specifying a tag, E2B uses the `default` tag automatically. This means: @@ -39,11 +39,11 @@ sandbox2 = Sandbox.create('my-template:default') -## Building with Tags +## Building with tags You can build templates with one or more tags to create versioned builds. -### Single Tag +### Single tag @@ -63,7 +63,7 @@ Template.build(template, 'my-template:v1.0.0') -### Multiple Tags +### Multiple tags Build with multiple tags to assign several version labels to the same build artifact. @@ -86,11 +86,11 @@ Template.build(template, 'my-template', tags=['v1.2.0', 'latest']) -## Managing Tags +## Managing tags You can manage tags on existing template builds without rebuilding. -### Assign Tags +### Assign tags Assign new tag(s) to an existing build. This is useful for promoting a tested version to production or marking a version as stable. @@ -118,7 +118,7 @@ Template.assign_tags('my-template:v1.2.0', tags=['production', 'stable']) -### Remove Tags +### Remove tags Remove a tag from a template. The underlying build artifact remains accessible via other tags. @@ -144,9 +144,9 @@ Template.remove_tags('my-template', 'staging') Removing a tag does not delete the build artifact. Other tags pointing to the same build will continue to work. -## Use Cases +## Use cases -### Semantic Versioning +### Semantic versioning Use semantic version tags to track releases and enable rollbacks. @@ -174,7 +174,7 @@ sandbox = Sandbox.create('api-server:v1.1.0') -### Environment Tags +### Environment tags Use environment tags for deployment pipelines. @@ -214,7 +214,7 @@ sandbox = Sandbox.create(f'my-app:{env}') -### Latest and Stable Tags +### Latest and stable tags Maintain rolling tags that always point to specific versions. diff --git a/docs/template/user-and-workdir.mdx b/docs/template/user-and-workdir.mdx index 19ce6329..c4288f05 100644 --- a/docs/template/user-and-workdir.mdx +++ b/docs/template/user-and-workdir.mdx @@ -1,5 +1,5 @@ --- -title: "User And Workdir" +title: "User and workdir" description: "Default user and working directory in the sandbox and template" --- diff --git a/docs/troubleshooting/templates/49999-port-not-open.mdx b/docs/troubleshooting/templates/49999-port-not-open.mdx index 77b2ccc2..f662d79f 100644 --- a/docs/troubleshooting/templates/49999-port-not-open.mdx +++ b/docs/troubleshooting/templates/49999-port-not-open.mdx @@ -15,7 +15,7 @@ The reason for this is that either the default start command is not specified on ## Solution -### Current Build System (V2) +### Current build system (V2) With the current build system, you need to use the `code-interpreter` as a base template in your template definition. @@ -59,7 +59,7 @@ template = ( ``` -### Legacy Build System +### Legacy build system If you are using the legacy build system, you need to use Code Interpreter image as a base image: diff --git a/docs/use-cases/ci-cd.mdx b/docs/use-cases/ci-cd.mdx index 951c4bf9..2fba974d 100644 --- a/docs/use-cases/ci-cd.mdx +++ b/docs/use-cases/ci-cd.mdx @@ -83,7 +83,7 @@ jobs: ``` -## Review Script +## Review script The workflow calls this script on every PR. It runs five steps inside an E2B sandbox, keeping all untrusted code isolated from the CI runner. @@ -266,7 +266,7 @@ print("Done") 4. **Run tests** — `commands.run()` streams output in real time and throws on failure (`CommandExitError` / `CommandExitException`) 5. **Post results** — comments the review on the PR via the GitHub REST API, then destroys the sandbox -## Related Guides +## Related guides diff --git a/docs/use-cases/computer-use.mdx b/docs/use-cases/computer-use.mdx index 29b3396f..06e6219c 100644 --- a/docs/use-cases/computer-use.mdx +++ b/docs/use-cases/computer-use.mdx @@ -1,5 +1,5 @@ --- -title: "Computer Use" +title: "Computer use" description: "Build AI agents that see, understand, and control virtual Linux desktops using E2B Desktop sandboxes." icon: "desktop" --- @@ -8,7 +8,7 @@ Computer use agents interact with graphical desktops the same way a human would For a complete working implementation, see [E2B Surf](https://github.com/e2b-dev/surf) — an open-source computer use agent you can try via the [live demo](https://surf.e2b.dev). -## How It Works +## How it works The computer use agent loop follows this pattern: @@ -32,7 +32,7 @@ pip install e2b-desktop ``` -## Core Implementation +## Core implementation The following snippets are adapted from [E2B Surf](https://github.com/e2b-dev/surf). @@ -228,7 +228,7 @@ sandbox.kill() The `getNextActionFromLLM` / `get_next_action_from_llm` function is where you integrate your chosen LLM. See [Connect LLMs to E2B](/docs/quickstart/connect-llms) for integration patterns with OpenAI, Anthropic, and other providers. -## Related Guides +## Related guides From de7392ea33e3f7d248000cbc04dfa7c087eea44d Mon Sep 17 00:00:00 2001 From: Tomas Beran Date: Tue, 17 Feb 2026 18:43:36 -0800 Subject: [PATCH 2/3] Fix sentence case in Card, Accordion, Tab, Step, and Note titles Extends the capitalization fix to component title attributes (Card, Accordion, Tab, Step, Note) that render as visible section headings on the page. --- docs/agents/amp.mdx | 6 +++--- docs/agents/claude-code.mdx | 6 +++--- docs/agents/codex.mdx | 6 +++--- docs/agents/openclaw.mdx | 6 +++--- docs/agents/opencode.mdx | 6 +++--- docs/byoc.mdx | 2 +- docs/mcp.mdx | 6 +++--- docs/mcp/examples.mdx | 8 ++++---- docs/quickstart.mdx | 4 ++-- docs/sandbox/ip-tunneling.mdx | 8 ++++---- docs/template/how-it-works.mdx | 2 +- docs/use-cases/ci-cd.mdx | 4 ++-- docs/use-cases/computer-use.mdx | 4 ++-- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/agents/amp.mdx b/docs/agents/amp.mdx index b1ddc696..707351ca 100644 --- a/docs/agents/amp.mdx +++ b/docs/agents/amp.mdx @@ -298,13 +298,13 @@ python build.py ## Related guides - + Auto-pause, resume, and manage sandbox lifecycle - + Clone repos, manage branches, and push changes - + Connect to the sandbox via SSH for interactive sessions diff --git a/docs/agents/claude-code.mdx b/docs/agents/claude-code.mdx index 9623013b..57b65356 100644 --- a/docs/agents/claude-code.mdx +++ b/docs/agents/claude-code.mdx @@ -447,13 +447,13 @@ python build.py ## Related guides - + Connect Claude Code to 200+ MCP tools - + Auto-pause, resume, and manage sandbox lifecycle - + Clone repos, manage branches, and push changes diff --git a/docs/agents/codex.mdx b/docs/agents/codex.mdx index fe8d2abb..a4364ea5 100644 --- a/docs/agents/codex.mdx +++ b/docs/agents/codex.mdx @@ -354,13 +354,13 @@ python build.py ## Related guides - + Auto-pause, resume, and manage sandbox lifecycle - + Clone repos, manage branches, and push changes - + Connect to the sandbox via SSH for interactive sessions diff --git a/docs/agents/openclaw.mdx b/docs/agents/openclaw.mdx index 51a27a97..374a4509 100644 --- a/docs/agents/openclaw.mdx +++ b/docs/agents/openclaw.mdx @@ -498,13 +498,13 @@ python build.py ## Related guides - + Auto-pause, resume, and manage sandbox lifecycle - + Clone repos, manage branches, and push changes - + Connect to the sandbox via SSH for interactive sessions diff --git a/docs/agents/opencode.mdx b/docs/agents/opencode.mdx index 1f0852fb..98e88879 100644 --- a/docs/agents/opencode.mdx +++ b/docs/agents/opencode.mdx @@ -241,13 +241,13 @@ python build.py ## Related guides - + Auto-pause, resume, and manage sandbox lifecycle - + Clone repos, manage branches, and push changes - + Connect to the sandbox via SSH for interactive sessions diff --git a/docs/byoc.mdx b/docs/byoc.mdx index e6b7f2c2..01cfa257 100644 --- a/docs/byoc.mdx +++ b/docs/byoc.mdx @@ -48,7 +48,7 @@ When provisioning is done and running, we will create a new team under your E2B ## FAQ - + Cluster is forwarding anonymized metrics such as machine cpu/memory usage to E2B Control plane for advanced observability and alerting. The whole observability stack is anonymized and does not contain any sensitive information. diff --git a/docs/mcp.mdx b/docs/mcp.mdx index e2a2f3f1..8c0b969c 100644 --- a/docs/mcp.mdx +++ b/docs/mcp.mdx @@ -93,13 +93,13 @@ if __name__ == "__main__": Get started with MCP - + Browse 200+ pre-built MCP servers - + Prepull MCP servers for faster runtime - + Use custom MCP servers from GitHub diff --git a/docs/mcp/examples.mdx b/docs/mcp/examples.mdx index 5b80b98e..a13f35d5 100644 --- a/docs/mcp/examples.mdx +++ b/docs/mcp/examples.mdx @@ -13,16 +13,16 @@ description: Example projects using MCP servers in E2B sandboxes AI research using Groq and Exa - + Research Agent using the OpenAI Agents framework - + Basic MCP client connecting to an E2B Sandbox - + Use custom MCP servers installed from GitHub - + Create a custom E2B Sandbox with pre-installed MCP servers diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx index 49e7f195..5895d54e 100644 --- a/docs/quickstart.mdx +++ b/docs/quickstart.mdx @@ -27,7 +27,7 @@ pip install e2b-code-interpreter python-dotenv ``` - + We'll write the minimal code for starting Sandbox, executing Python inside it and listing all files inside the root directory. ```javascript JavaScript & TypeScript @@ -57,7 +57,7 @@ print(files) ``` - + Run the code with the following command: ```bash JavaScript & TypeScript diff --git a/docs/sandbox/ip-tunneling.mdx b/docs/sandbox/ip-tunneling.mdx index 3b21e2f7..82927194 100644 --- a/docs/sandbox/ip-tunneling.mdx +++ b/docs/sandbox/ip-tunneling.mdx @@ -163,7 +163,7 @@ SSH into the VM and follow the instructions below to install and configure Shado Create a custom Sandbox template that uses the shadowsocks client to tunnel TCP traffic through the proxy server we set up above. - + Route only designated traffic through the proxy. 1. Create a configuration file for the shadowsocks client: @@ -268,7 +268,7 @@ Create a custom Sandbox template that uses the shadowsocks client to tunnel TCP ``` - + Route all traffic through the proxy. 1. Create a configuration file for the shadowsocks client: @@ -400,7 +400,7 @@ Create a custom Sandbox template that uses the shadowsocks client to tunnel TCP Create a new Sandbox from the built template and run a curl command to verify that the traffic is routed through the proxy: - + Only designated traffic should be routed through the proxy. @@ -440,7 +440,7 @@ Create a new Sandbox from the built template and run a curl command to verify th You should see the IP address of the proxy server. - + All traffic should be routed through the proxy. diff --git a/docs/template/how-it-works.mdx b/docs/template/how-it-works.mdx index a806441a..1b604acd 100644 --- a/docs/template/how-it-works.mdx +++ b/docs/template/how-it-works.mdx @@ -15,7 +15,7 @@ Then, these steps happen: We call this sandbox snapshot a _sandbox template_. - + Snapshots are saved running sandboxes. We serialize and save the whole sandbox's filesystem together with all the running processes in a way that can be loaded later. diff --git a/docs/use-cases/ci-cd.mdx b/docs/use-cases/ci-cd.mdx index 2fba974d..0f5e19f6 100644 --- a/docs/use-cases/ci-cd.mdx +++ b/docs/use-cases/ci-cd.mdx @@ -269,13 +269,13 @@ print("Done") ## Related guides - + Clone repos, manage branches, and push changes from sandboxes Integrate AI models with sandboxes using tool calling - + Build reproducible sandbox environments for your pipelines diff --git a/docs/use-cases/computer-use.mdx b/docs/use-cases/computer-use.mdx index 06e6219c..851087b9 100644 --- a/docs/use-cases/computer-use.mdx +++ b/docs/use-cases/computer-use.mdx @@ -231,13 +231,13 @@ The `getNextActionFromLLM` / `get_next_action_from_llm` function is where you in ## Related guides - + Build desktop sandboxes with Ubuntu, XFCE, and VNC streaming Integrate AI models with sandboxes using tool calling - + Create, manage, and control sandbox lifecycle From 11e2ebcf591b5b23a0f20fd0606343a4c4c24441 Mon Sep 17 00:00:00 2001 From: Tomas Beran Date: Tue, 17 Feb 2026 19:07:11 -0800 Subject: [PATCH 3/3] Address PR review feedback - Fix missed headings in cli/auth.mdx, ci-cd.mdx - Fix missed titles in nextjs.mdx, nextjs-bun.mdx - Revert BYOC title/sidebarTitle to capitalized form (proper name) - Fix stale link text "User And Workdir" in how-it-works.mdx --- docs/byoc.mdx | 4 ++-- docs/cli/auth.mdx | 4 ++-- docs/template/examples/nextjs-bun.mdx | 2 +- docs/template/examples/nextjs.mdx | 2 +- docs/template/how-it-works.mdx | 2 +- docs/use-cases/ci-cd.mdx | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/byoc.mdx b/docs/byoc.mdx index 01cfa257..63b98f0c 100644 --- a/docs/byoc.mdx +++ b/docs/byoc.mdx @@ -1,6 +1,6 @@ --- -title: "BYOC (bring your own cloud)" -sidebarTitle: Bring your own cloud +title: "BYOC (Bring Your Own Cloud)" +sidebarTitle: Bring Your Own Cloud --- BYOC (Bring Your Own Cloud) allows you to deploy E2B sandboxes to your own cloud infrastructure within your VPC. diff --git a/docs/cli/auth.mdx b/docs/cli/auth.mdx index 000bc0f9..1ef2efa3 100644 --- a/docs/cli/auth.mdx +++ b/docs/cli/auth.mdx @@ -5,7 +5,7 @@ sidebarTitle: Authentication There are two ways to authenticate with the E2B CLI: -## Option 1: Browser Authentication +## Option 1: browser authentication This option requires an interactive browser environment. @@ -19,7 +19,7 @@ e2b auth login This will open your default browser and prompt you to authenticate with your E2B account. -## Option 2: Setup Environment Variables +## Option 2: setup environment variables Set your environment variables: diff --git a/docs/template/examples/nextjs-bun.mdx b/docs/template/examples/nextjs-bun.mdx index 36ea65a8..9ec9a7a8 100644 --- a/docs/template/examples/nextjs-bun.mdx +++ b/docs/template/examples/nextjs-bun.mdx @@ -1,5 +1,5 @@ --- -title: "Next.js App (Bun)" +title: "Next.js app (Bun)" description: "Next.js web app running in the sandbox using Bun" --- diff --git a/docs/template/examples/nextjs.mdx b/docs/template/examples/nextjs.mdx index eb175bb7..a919d6e9 100644 --- a/docs/template/examples/nextjs.mdx +++ b/docs/template/examples/nextjs.mdx @@ -1,5 +1,5 @@ --- -title: "Next.js App" +title: "Next.js app" description: "Next.js web app running in the sandbox using Node.js" --- diff --git a/docs/template/how-it-works.mdx b/docs/template/how-it-works.mdx index 1b604acd..aed47559 100644 --- a/docs/template/how-it-works.mdx +++ b/docs/template/how-it-works.mdx @@ -24,7 +24,7 @@ We call this sandbox snapshot a _sandbox template_. ## Default user and workdir -To learn more about default user and workdir, please refer to the [User And Workdir](/docs/template/user-and-workdir) section. +To learn more about default user and workdir, please refer to the [User and workdir](/docs/template/user-and-workdir) section. ## Caching diff --git a/docs/use-cases/ci-cd.mdx b/docs/use-cases/ci-cd.mdx index 0f5e19f6..29997425 100644 --- a/docs/use-cases/ci-cd.mdx +++ b/docs/use-cases/ci-cd.mdx @@ -6,7 +6,7 @@ icon: "gears" CI/CD pipelines can use AI agents to review pull requests, generate tests, and validate code changes automatically. E2B sandboxes provide the secure, isolated execution environment where these agents can safely clone repositories, run untrusted code, and report results — all triggered by [GitHub Actions](https://docs.github.com/en/actions) on every pull request. Since each run gets a fresh sandbox, malicious or buggy PR code never touches your CI runner. -## GitHub Actions Workflow +## GitHub Actions workflow The workflow triggers on pull request events and runs a review script. `E2B_API_KEY` and the LLM API key are stored as [GitHub Actions secrets](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions), while the built-in `GITHUB_TOKEN` is available automatically. The `permissions` block grants write access so the script can post PR comments.