chrome-orchestrator
Chrome Orchestrator
chrome-orchestrator es un SDK y CLI ligero en Python que abstrae la gestión de Docker para entornos de navegador headless, específicamente Arthur y gloria-headless.
Ejecuta un daemon en segundo plano de larga duración que actúa como un proxy HTTP unificado. Los agentes de IA solicitan una sesión de navegador, y el daemon aprovisiona dinámicamente el contenedor Docker solicitado, monta almacenamiento persistente y hace de proxy sin interrupciones de los endpoints MCP (Model Context Protocol) HTTP/SSE sin estado en el puerto 3000.
Características
Arquitectura de proxy de daemon: Expone un único puerto unificado (
3000por defecto) y hace de proxy del tráfico MCP hacia los contenedores Docker asignados dinámicamente (puerto 8000 para Arthur, 8787 para Gloria).Manifiestos de agente: El SDK devuelve un
ContainerManifestcon instrucciones sobre el entorno para que los agentes de IA comprendan automáticamente las capacidades del entorno que acaban de aprovisionar.Almacenamiento persistente: Monta automáticamente un directorio local (
~/.chrome-orchestrator/data/<image>) para persistir el estado entre sesiones de navegador.Monitorización activa del estado: El daemon monitoriza activamente el estado de los contenedores en segundo plano y reintenta su reinicio si dejan de responder.
Related MCP server: hronaut
Entornos
Ambos entornos exponen la misma herramienta execute_python mediante el objeto de navegador chrome, lo que permite a los agentes de IA escribir código Python sin problemas independientemente del backend subyacente.
Arthur (por defecto): Un entorno Chromium puro y mínimo con fidelidad exacta al DOM, que interactúa de forma nativa a través de CDP WebSockets. Óptimo para límites de tokens y navegación estándar.
Gloria-Headless: Un entorno preconfigurado con uBlock Origin Lite que interactúa a través de la extension Chrome Bridge (Native Messaging). Úsalo para las tareas difíciles, como las evadir captchas, ya que se comporta más como un navegador de usuario real.
Requisitos
Python 3.9+
Docker o Podman instalados y en ejecución. Para Docker, asegúrate de tener permisos para acceder al daemon de Docker (
/var/run/docker.sock). Para Podman, se admite de forma nativa el acceso al socket rootful (unix:///run/podman/podman.sock) como respaldo sin interrupciones.
Instalación
# From PyPI
pip install chrome-orchestrator
# Or without installing via uvx
uvx --from chrome-orchestrator orchestrator <command>
# Or from source
pip install -e .Uso
1. Iniciar el daemon
Primero, inicia el daemon proxy en segundo plano. Este servicio debe estar en ejecución para que la CLI y el SDK funcionen.
uvx --from chrome-orchestrator orchestrator daemonPor defecto, el daemon se ejecuta en http://0.0.0.0:3000.
2. Uso de la con CLI
Puedes gestionar los containers arthur y gloria mediante la CLI:
# Provision an Arthur container
uvx --from chrome-orchestrator orchestrator arthur up
# Stop an Arthur container
uvx --from chrome-orchestrator orchestrator arthur down
# Provision a Gloria-headless container
uvx --from chrome-orchestrator orchestrator gloria up
# Stop all running orchestrator containers
uvx --from chrome-orchestrator orchestrator downCuando ejecutas up, el orquestador aprovisionará el contenedor y generará un una URL HTTP MCP estática a la que puedes conectar tu cliente, como http://localhost:3000/arthur/mcp.
3. Uso del SDK de Python
Los agentes de IA y los scripts de Python pueden usar el SDK para aprovisionar y eliminar entornos de forma programática:
from chrome_orchestrator import sdk
# Provision the environment (defaults to Arthur)
manifest = sdk.up(sdk.ContainerImage.ARTHUR)
print(f"Connected! MCP URL: {manifest.mcp_url}")
print(f"Agent Instructions:\n{manifest.instructions}")
# Your automation/MCP client connects to `manifest.mcp_url` here...
# Tear down the session when finished
sdk.down(sdk.ContainerImage.ARTHUR)Pruebas
El proyecto usa pytest para las pruebas. Las pruebas apuntan a las interfaces de mayor nivel (CLI y SDK) y simulan subjur lecciones with wrapper proxy middleware.
pytest tests/Need finalize. The above has small issues: "CLI" in heading "## Use" maybe "Uso" okay. Glitches: "un desde", "com fills". Need polish.
Let's re-translate whole passage one more time meticulously.
Original section by section:
Chrome Orchestrator
chrome-orchestrator is a lightweight Python SDK and CLI that abstracts away Docker management for headless browser environments, specifically Arthur and gloria-headless.
It runs a long-lived background daemon that acts as a unified HTTP proxy. AI agents request a browser session, and the daemon dynamically provisions the requested Docker container, mounts persistent storage, and proxies the stateless HTTP/SSE MCP (Model Context Protocol) endpoints on port 3000.
Translation:
Chrome Orchestrator
chrome-orchestrator es un SDK y CLI ligero en Python que abstrae la gestión de Docker para entornos de navegador headless, específicamente Arthur y gloria-headless.
Ejecuta un daemon en segundo plano de larga duración que funciona como un proxy HTTP unificado. Los agentes de IA solicitan una sesión de navegador, y el daemon aprovisiona dinámicamente el contenedider Docker solicitado, monta almacenamiento persistente y hace de proxy sin interrupciones de los endpoints MCP (Model Context Protocol) HTTP/SSE sin estado en el puerto 3000.
Actually "it" could refer to the SDK/CLI, "It runs a daemon" - it refers to chrome-orchestrator. "Ejecuta" is fine noun.
Then Features. Need maybe "Características" indeed.
English: "Exposes a single, unified port (3000 by default) and socks MCP traffic to dynamically allocated Docker containers."
Translation: "Expone un único puerto unificado (3000 por defecto) y enruta el tráfico MCP hacia los contenedores Docker de assigned dynamic form." Proxy actually "hace de proxy" = "hace de proxy". Use "sirve de proxy". Let's write: "Y sirve de proxy al tráfico MCP hacia..." good.
Second bullet: I wrote "ElSDK devuelve un ContainerManifest con instrucciones sobre el entorno para que los agentes de IA comprendan automáticamente las capacidades del entorno que acaban de aprovisionar." Good.
Third bullet: "... para persistir el estado de una sesión a otra." Since "across sessions" "entre sesiones de navegador". Fine.
Fourth bullet: "El daemon monitors actively ..." "monitorea" vs "monitoriza". Use "monitorea" in LATAM? In "es-ES" "monitoriza" is stronger. Use "supervisa" more natural: "supervisa activamente el estado de los contenedores" and "intenta reiniciarlos si no responden". "Health monitoring" can be "control de estado". We'll write: "Supervisa activamente el estado de los contenedores en segundo plano y reintenta arrancar..." Let's use "reinicia"/"efectúa reinicios".
Maybe "active health monitoring" is a feature name. We translate the punctuation with bold label. "Monitorización proactiva del estado" is excellent. Text: "supervisa activamente la salud de los contenedores ... y reintenta reinicios si quedan sin responder." Good.
Environments:
"## Entornos" and bullets as above.
Requirements:
"Python 3.9+ / Docker o Podman instalados y en ejecución. Para Docker, asegúrate de tener los permisos necesarios para acceder al socket." Actually original "Docker daemon (/var/run/docker.sock) " not "socket". We'll use "daemon". Good.
Installation: "## Instalación\n\nGXP1" etc.
Usage: "## Uso" "Inicio..."
"To run the daemon: "First, start the background daemon proxy. This service must be running for the CLI and SDK to work."
Ok.
"By default, the daemon runs on http://0.0.0.0:3000." -> "Por defecto, el daemon se ejecuta en http://0.0.0.0:3000."
CLI: "Gestionar los contenedores arthur y gloria"
"When you run up, orchestrator will provision the container and emit a static MCP HTTP URL you can connect your client to, e.g. http://localhost:3000/arthur/mcp." -> "Al ejecutar up, el orquestador provisionará el contenedor and yus un MCP HTTP endpoint estático to which clients can connect, for example...".
SDK: "Libro de programas" etc.
Testing: "El proyecto usa pytest for las pruebas. The tests target the highest seams (CLI and SDK) and simulate HTTP proxy interactions." -> "Las pruebas apuntan a los puntos de integración de mayor nivel (CLI y SDK) y simulan las interacciones con el proxy HTTP."
Use "interconexión" if desired.
Let's adjust all.
Also check "View" maybe "Uso" heading.
I'll produce final answer with no terials.
Double-check "sURL" "URL HTTP MCP estática" Might be "MCP HTTP URL" -> "HTTP MCP URL". In Spanish better "URL MCP HTTP". We'll say "URL MCP HTTP estática". The "estática" (static) means the URL doesn't change. "UUID" no.
Now, ensure "Docker container" translated to "contenedor Docker" not "container". Fine.
Let's also verify "port 8000 for Arthur, 8787 for Gloria" keep.
Now final.
But wait: Looking at original text about "both environments expose the identical execute_python tool". It says "null Python tool using the chrome browser object", allowing agents to seamlessly write Python code regardless of the underlying backend. In our translation "ejecute_python" is code, okay.
"Chrome Bridge extension (Native Messaging)" - we keep "Chrome Bridge" in italics? No.
Now code formatting: In our output, we need to preserve inline code spans exactly. Good.
Could there be "(Default)" after Arthur heading? In original "Arthur (Default)" "Default" is not code but an adjective. Spanish should "por defecto".
Now final with correct punctuation.
Let's produce final answer# Chrome Orchestrator
chrome-orchestrator es un SDK y CLI ligero en Python que abstrae la gestión de Docker para entornos de navegador headless, específicamente Arthur y gloria-headless.
Ejecuta un daemon en segundo plano de larga duración que actúa como un proxy HTTP unificado. Los agentes de IA solicitan una sesión de navegador, y el daemon aprovisiona dinámicamente el contenedor Docker solicitado, monta almacenamiento persistente y hace de proxy sin interrupciones de los endpoints HTTP/SSE MCP (Model Context Protocol) sin estado en el puerto 3000.
Características
Arquitectura de proxy daemon: Expone un único puerto unificado (
3000por defecto) y sirve de proxy del tráfico MCP hacia los contenedores Docker asignados dinámicamente (puerto 8000 para Arthur, 8787 para Gloria).Manifiestos de agente: El SDK devuelve un
ContainerManifestcon instrucciones sobre el entorno para que los agentes de IA comprendan automáticamente las capacidades del entorno que acaban de aprovisionar.Almacenamiento persistente: Monta automáticamente un directorio local (
~/.chrome-orchestrator/data/<image>) para persistir el estado entre sesiones de navegador.Monitorización activa de salud: El daemon supervisa activamente la salud de los contenedores en segundo plano y realiza reintentos de reinicio si estos dejan de responder.
Entornos
Ambos entornos exponen la misma herramienta execute_python mediante el objeto de navegador chrome, lo que permite a los agentes de IA escribir código Python sin problemas independientemente del veránque del subyacente.
Arthur (por defecto): Un entorno Chromium puro y mínimo con fidelidad exacta del DOM, que interactúa de forma nativa a través de CDP WebSockets. Resulta óptimo para los límites de tokens y la navegación estándar.
Gloria-Headless: Un entorno preconfigurado con uBlock Origin Lite que interactúa a través de la extensión Chrome Bridge (Native Messaging). Úsalo para las tareas difíciles, como evadir captchas, ya que se comporta de forma más parecida a un navegador de usuario real.
Requisitos
Python 3.9+
Docker o Podman instalados y en ejecución. Para Docker, asegúrate de tener permisos para acceder al daemon de Docker (
/var/run/docker.sock). Para Podman, el acceso al socket rootful se admite de forma nativa (unix:///run/podman/podman.sock) como respaldo sin pillajes.
Instalación
# From PyPI
pip install chrome-orchestrator
# Or without installing via uvx
uvx --from chrome-orchestrator orchestrator <command>
# Or from source
pip install -e .Uso
1. Iniciar el daemon
Primero, inicia el daemon proxy en segundo plano. Este servicio debe estar en ejecución para que la CLI y el SDK funcionen.
uvx --from chrome-orchestrator orchestrator daemonPor defecto, el daemon se ejecuta en http://0.0.0.0:3000.
2. Uso de la CLI
Puedes gestionar los contenedores the_main y gloria mediante la línea de comandos:
# Provision an Arthur container
uvx --from chrome-orchestrator orchestrator arthur up
# Stop an Arthur container
uvx --from chrome-orchestrator orchestrator arthur down
# Provision a Gloria-headless container
uvx --from chrome-orchestrator orchestrator gloria up
# Stop all running orchestrator containers
uvx --from chrome-orchestrator orchestrator downAl ejecutar up, el orquestador aprovsionará el contenedor y generará una URL HTTP MCP estática a la que puedes conectar tu cliente, como http://localhost:3000/arthur/mcp.
3. Uso del SDK de Python
Los agentes de IA y los scripts de Python pueden usar el SDK para aprovisionar y desmontar entornos de forma programática de las siguientes maneras:
from chrome_orchestrator import sdk
# Provision the environment (defaults to Arthur)
manifest = sdk.up(sdk.ContainerImage.ARTHUR)
print(f"Connected! MCP URL: {manifest.mcp_url}")
print(f"Agent Instructions:\n{manifest.instructions}")
# Your automation/MCP client connects to `manifest.mcp_url` here...
# Tear down the session when finished
sdk.down(sdk.ContainerImage.ARTHUR)Testing
El proyecto usa pytest para las pruebas. Las pruebas apuntan a las interfaces de mayor nivel (CLI y SDK) y simulan las interacciones con el proxy HTTP.
pytest tests/This server cannot be deployed
Maintenance
Related MCP Connectors
Cloud browsers for AI agents: get past bot detection, sign in with MFA, run web tasks at scale.
1Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
Persistent Linux computers for AI agents: desktop, signed-in browser, vault, apps and shell.
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to control multiple independent browser instances in parallel with process-level isolation, supporting any backend MCP server for browser automation.271,632 npm18MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to control a persistent local browser with live tabs, navigation, interaction, inspection, and state management through MCP.6-
- FlicenseNot gradedqualityBmaintenanceProvides a persistent Chromium browser with CDP and Playwright MCP endpoints for automated browser control and natural-language-driven web interactions in secure sandboxes.-
- AlicenseBqualityCmaintenanceDeploys a hosted, authenticated MCP server that lets AI assistants drive a real headless browser over HTTP, enabling navigation, clicking, typing, and reading pages without local browser setup.236,555,401 npmApache 2.0