What you’re integrating
Anchor SDK in E2B’s base image → Anchor Cloud. The sandbox stays vanilla and lightweight. Chromium runs as a managed Anchor cloud session; the sandbox just holds the SDK and talks to it over HTTPS + CDP.- E2B stays the code runtime — install packages, run a script, call a model.
- Anchor stays the remote browser — stealth, proxies, live view, and session lifecycle.
- Do not launch a browser inside the sandbox. Skip E2B Computer use (desktop / VNC) and in-sandbox Chromium — live view for this integration is Anchor’s remote session.
Create the sandbox
Pass keys at create time onSandbox.create. Template setEnvs / set_envs is build-time only — secrets and the SDK alias belong on create.
timeoutMs is milliseconds. Python timeout is seconds. That value is the E2B sandbox lifetime (Hobby max 1 hour, Pro max 24 hours) — it is separate from Anchor’s session timeout.max_duration / timeout.idle_timeout.
Run the snippets below inside the sandbox. From the host you can write them in with files.write and commands.run.
Preinstall the SDK
Install into the image app directory — not globally.npm install -g is not importable from user projects.
playwright / playwright-core are only needed for direct CDP control, not for agent.task / agentTask.
Alias the env var the raw SDK actually reads, so code that does not call setConfig / api_key= still works:
Sandbox.create envs (as above) or in the sandbox entrypoint. Without this alias, session and task calls fail auth (401) even when ANCHOR_API_KEY is set.
There is no public Anchor E2B template. Bake anchorbrowser (and Playwright only if you need CDP) into your own tag so every sandbox starts ready:
Sandbox.create('your-tag', { envs, timeoutMs })). Runtime pip install / npm install works if you skip a template, but it adds 30–60s to every sandbox.
API key (BYOK)
Each E2B customer brings their own Anchor API key as a sandbox env:ANCHOR_API_KEY=sk-....
Anchor bills the customer directly on usage — E2B does not meter or bill browser usage.
Keyless trial (optional): agents without a key can self-provision a small trial key via Agent Access — guide → puzzle challenge (120s TTL) → submit the answer for an
api_key, sent as header anchor-api-key. Trial keys are capped (1 credit, 60-minute session cap). Fine for exploration, not a BYOK replacement. Do not market this as unlimited browser access.Expose a browser tool
Wrap the SDK so agents call it declaratively.agent.task (Python) / agentTask (Node) return an object; the result string is result.data.result.
Optional: full Playwright control
Connect over CDP to the created cloud session (session.data.cdp_url).
getHost / get_host and open that public HTTPS URL. The cloud browser cannot reach localhost inside the VM.
Session hygiene
You have two lifecycles to close:- Reuse one Anchor session per agent run — do not create a session per page.
- Set Anchor
timeout.max_duration/timeout.idle_timeout(minutes) so an abandoned sandbox does not hold a browser open. See Session Timeout. - Delete the Anchor session on teardown (
delete_session/deleteSession).sandbox.kill()stops the VM only — it does not end the cloud browser. - Set the E2B sandbox timeout (
timeoutMs/timeout) and callsandbox.kill()when the run finishes. - Show
live_view_urlin the sandbox UI so users can watch the browser run. That stream is the remote Anchor session, not E2B’s desktop / VNC view.
Egress
If E2B sandboxes restrict egress, allowlist:https://api.anchorbrowser.iowss://connect.anchorbrowser.iohttps://live.anchorbrowser.io

