Skip to main content
Glama
cubesandbox-browser-sandbox

cubesandbox-browser-sandbox

by hirotasoshu

CubeSandbox Browser Runtime

Una imagen de producción y un contrato de plantilla para browser_use en CubeSandbox, basado en la imagen sandbox-browser de TencentCloud con digest fijado. Cada sandbox contiene ambas capacidades de carga de trabajo:

  • Chromium/CDP ascendente persistente en 9000 y un servicio HTTP @playwright/mcp@0.0.79 gestionado por s6 en 8931, ejecutándose como UID 1000;

  • almacenamiento de ejecución del supervisor Run escribible y no root en /run/browser-use/runs y dos ranuras CDP de Chromium headless propiedad de Run en 10000-10001.

El objetivo runtime requiere RUNTIME_MARKER=sha256:<64 lowercase hex>. El marcador se escribe en /etc/browser-use/runtime-marker y debe coincidir con el promovido con el ID de plantilla único en browser_use.

Compilar y verificar

source_digest="$(git archive HEAD | sha256sum | cut -d' ' -f1)"
marker="sha256:$(printf '%s:runtime' "${source_digest}" | sha256sum | cut -d' ' -f1)"

docker build --target runtime --build-arg "RUNTIME_MARKER=${marker}" \
  -t cubesandbox-browser-sandbox .
docker run -d --cap-add=SYS_ADMIN --shm-size=2g --name browser-runtime \
  cubesandbox-browser-sandbox
docker exec --user user browser-runtime browser-sandbox-smoke mcp
docker exec --user user browser-runtime browser-sandbox-smoke run
docker exec --user user browser-runtime browser-sandbox-mcp-smoke

La secuencia demuestra que el MCP persistente sobrevive a dos procesos Chromium propiedad de Run concurrentes en el mismo sandbox. SYS_ADMIN solo lo necesita Docker local para que Chromium pueda crear namespaces de sandbox; CubeSandbox proporciona el aislamiento desplegado.

Las dependencias y las imágenes base son inmutables: los paquetes npm están bloqueados por integridad, las dependencias del verificador Python están bloqueadas por hash, ambas etapas de compilación usan digests de imagen, y la publicación emite SBOM y atestaciones de procedencia SLSA y firma sin clave el digest enviado con Cosign. Regenera el bloqueo de Python con uv pip compile requirements.in -o requirements.txt --generate-hashes.

Related MCP server: sa2web-mcp

Publicar y plantilla

El flujo de trabajo publica latest, sha-<commit> y etiquetas de release bajo ghcr.io/hirotasoshu/cubesandbox-browser-sandbox. La promoción debe resolver una etiqueta a image@sha256:...; las referencias de imagen flotantes se rechazan:

scripts/create-template.sh \
  ghcr.io/hirotasoshu/cubesandbox-browser-sandbox@sha256:<digest>

El alias de plantilla predeterminado es browser-use-runtime-medium, con 2 vCPU, 4 GiB de RAM y una capa escribible de 20 GiB. Expone envd 49983, CDP persistente 9000, MCP 8931 y ranuras CDP de Run 10000-10001. Solo el CDP persistente es una sonda de inicio porque los puertos de Run están inactivos hasta que un Run los posee.

Los tokens de acceso de tráfico de Cube son el límite de entrada. MCP permite solo hostnames dinámicos de Cube porque Cube valida el token antes de reenviar el tráfico. Después de la creación de la plantilla, configura el límite de PID del proveedor y la denegación obligatoria de egress privado/link-local, luego ejecuta el contrato en vivo:

python -m venv .venv
.venv/bin/pip install -r requirements.txt

CUBE_TEMPLATE_ID=<template-id> \
CUBE_RUNTIME_MARKER=sha256:<runtime-marker> \
E2B_API_KEY=<cube-api-key> \
E2B_API_URL=<cube-api-url> \
  .venv/bin/python scripts/verify-template.py

La verificación en vivo crea un sandbox seguro y verifica simultáneamente ambas cargas de trabajo: APIs de marcador y archivos, política de red pública/privada, CDP autenticado en los tres endpoints de navegador, rechazo de token de tráfico, definiciones exactas de herramientas MCP, navegación MCP y confinamiento de herramientas no seguras.

La autoridad final de promoción sigue siendo el conjunto de conformidad de proveedor de browser_use. No habilites el modo de producción solo por el éxito de la compilación de la imagen.

Seguridad

CDP y Playwright MCP otorgan control del navegador; la herramienta no segura de MCP es equivalente a RCE de host. Nunca inyectes secretos de aplicación en un sandbox. Mantén habilitada la aplicación de tokens de tráfico, usa solo valores de imagen y marcador inmutables, aplica límites de PID del proveedor y exige denegación privada/link-local.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation and web scraping by exposing Playwright tools through an HTTP-based MCP server. Users can navigate pages, interact with web elements, capture screenshots, and extract structured content using a persistent Chromium instance.
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Exposes a remote browser as MCP tools via Playwright, enabling AI agents to navigate and interact with web pages through DOM snapshots, clicks, typing, and form operations.
    40
    2 npm
    14
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to operate an isolated local Chromium browser through MCP, with semantic snapshots, ref-based actions, search, research, crawling, and CDP access.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents and clients to control a real Chromium browser through MCP tool calls, including navigation, clicking, typing, JavaScript evaluation, screenshots, and DOM snapshots. Supports multiple isolated sessions over authenticated HTTP with no disk writes.
    Apache 2.0