Unchained Sky
Servidor MCP de automatización de navegador que conecta agentes de IA a tu navegador Chrome real con comprensión estructurada de páginas en ~500 tokens
Documentación
Infraestructura Unchained
Infraestructura abierta y plano de control para Unchained, un sistema de automatización de navegadores construido sobre el Protocolo de DevTools de Chrome en bruto.
La mayoría de los agentes de navegador fallan en la autenticación. Unchained evita eso manejando la propia sesión de Chrome del usuario, con sus cookies existentes, extensiones, IP y estado de 2FA, en lugar de reproducir inicios de sesión frágiles en un entorno aislado.
Este repositorio contiene las piezas públicas de ese sistema: relay, interfaz web, empaquetado de agentes, puente de navegador, recursos de despliegue y orquestación de servidores. El motor de extracción propietario vive detrás de un límite de tiempo de ejecución documentado en un repositorio privado separado.
Qué hay en este repositorio
unchained/web.py: interfaz de chat, flujos de autenticación, interfaz de programación, transporte de chat SSEunchained/relay.py: relay WebSocket para túneles de agente de navegador y clientes CDPunchained/chrome_bridge.py: puente local o sin cabeza de Chrome CDP al relayunchained/chat_agent_cli.py: carriles de agente local para Claude CLI, Codex CLI, OpenCode CLI y backends de modelos relacionadosunchained/chat_agent_openrouter.py: trabajador de inferencia OpenRouter alojado para el carril de prueba híbrido (el navegador aún se ejecuta a través del conector del usuario)unchained/credit.py: libro mayor de inferencia alojada basado en concesiones y retenciones por llamadaunchained/agent_package.py: generador de paquetes de agente descargabledocker-compose.yml: topología de despliegue de produccióndeploy.shydeploy_headless.sh: puntos de entrada de despliegue EC2
Qué permanece privado
El DDM, la inteligencia de página y la lógica central de ejecución de CDP no se almacenan en este
repositorio. El código público se comunica con esa capa a través de private_core_client.py.
Esa división es intencional:
- el relay, la interfaz de usuario, la autenticación, el empaquetado y el código de despliegue están abiertos para inspección
- las heurísticas de extracción de navegador de alto apalancamiento permanecen en el repositorio central privado
- CI hace cumplir el límite con guardas de importación y verificaciones de artefactos
Consulte docs/open-core-split-plan.md para el modelo actual de código abierto.
Por qué los desarrolladores pueden evaluar este repositorio
- El túnel del navegador está aquí. Puede inspeccionar cómo funcionan realmente la autenticación del agente, el enrutamiento del relay y el proxy CDP.
- La ruta de despliegue está aquí. Docker Compose, enrutamiento Caddy, scripts de despliegue EC2 y definiciones de trabajadores sin cabeza son parte del repositorio público.
- El límite de confianza es explícito. Los servicios públicos no importan directamente módulos privados de inteligencia de navegador.
- La ruta de desarrollo local es real. Puede ejecutar el relay y la aplicación web localmente con
./dev.sh.
Forma del sistema
Phone / browser
|
| HTTPS + SSE
v
Caddy -> web -> private_core_client -> private core service
| |
| +-> local chat-agent websocket
| +-> hosted trial-agent -> OpenRouter
|
+-> relay -> chrome_bridge -> user's Chrome DevTools endpoint
Más detalle: docs/architecture.md
Inicio rápido
Desarrollo local
cd unchained-infra/unchained
uv sync
cd ..
./dev.sh
Luego abra http://localhost:8080.
Si Google OAuth no está configurado, la aplicación recurre a autenticación de desarrollo:
curl -X POST http://localhost:8080/auth/dev \
-H 'Content-Type: application/json' \
-d '{"email":"dev@localhost"}'
dev.sh inicia solo el servidor web local y el relay. Para conectar un cliente de chat local
y Chrome controlado sin enviar tráfico de prueba a producción, siga
docs/local-agent-testing.md. La sesión
del navegador, el cliente de chat y el puente de Chrome deben usar la misma clave de API
almacenada localmente.
El trabajador de prueba alojado no se inicia con dev.sh. Los despliegues de Docker que lo
habiliten deben establecer un HOSTED_AGENT_SERVICE_TOKEN dedicado; no debe reutilizar
TRIAL_AGENT_KEY, PRIVATE_CORE_TOKEN o una clave de API de usuario.
Despliegue de producción
cd ~/Projects/unchainedsky_com/unchained-infra
git switch main
git pull --ff-only origin main
DEPLOY_REVISION="$(git rev-parse HEAD)" \
PRIVATE_CORE_SRC=../unchained-core-private/unchained \
KEY_PATH=~/.ssh/unchained-key.pem \
EC2_HOST=<host> \
EC2_USER=<deploy-user> \
./deploy.sh
deploy.sh rechaza árboles de trabajo sucios y cualquier revisión que no sea la
origin/main actual. Aplica y restaura la superposición del núcleo privado solo después de que esa
verificación de fuente tenga éxito. La guarda requiere que origin sea alcanzable y falla
cerrado si no puede consultar la revisión main actual.
Verificación
Estas son las verificaciones más rápidas para el límite del repositorio público y la pila local:
cd unchained-infra/unchained
uv run python test_open_core_boundary.py
cd ..
python3 tools/oss_guard/check_private_imports.py
python3 tools/oss_guard/check_agent_artifact_leaks.py
Estructura del repositorio
unchained-infra/
├── docs/ # Architecture, setup, roadmap, and design notes
├── deploy/ # Deployment helpers
├── tools/ # Private-core overlay + OSS boundary guards
├── unchained/ # Python application code
├── docker-compose.yml # Production stack
├── docker-compose.headless.yml
└── deploy.sh
Documentación
- docs/README.md: índice de documentación
- docs/architecture.md: diseño de servicios y flujo de solicitudes
- docs/cloud-tools-execution-map.md: dónde se ejecutan las acciones del navegador a través del límite público/privado
- docs/debugging-map.md: eventos de seguimiento y triaje de incidentes
- docs/local-agent-testing.md: ejecute la interfaz web, el cliente de chat, el relay y Chrome controlado completamente en una máquina de desarrollo
- docs/mcp-local-browser-guide.md: ejecute MCP de producción contra su puente de Chrome local
- docs/mcp-frontend-route-plan.md: plan para
una ruta pública de incorporación de
/mcpy texto de posicionamiento - docs/unbrowser-mcp-route.md: ruta MCP unbrowser alojada y notas de despliegue
- docs/fin-terminal-route.md: ruta de terminal financiera autenticada y notas de despliegue
- docs/you-navigate-demo.md: configuración local y marco de recompensa-crítico para la demostración "Unchained conduce. Usted navega."
- docs/split-repo-setup.md: CI y superposición del núcleo privado
- unchained/benchmark/README.md: flujo de referencia local
- unchained/README.md: notas de desarrollador a nivel de paquete