browser-broker
Proxy local que gestiona el puerto 9222 de Chrome DevTools Protocol (CDP) para aislar pestañas entre agentes de IA, evitando que compitan por la misma ventana o robo de pestañas.
Ficha actualizada 27 sept 2026, 14:37 · upstream 27 sept 2026, 14:17 · release v0.1.0
Qué es browser-broker
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
browser-broker es un proxy transparente escrito en Python que se sitúa entre las herramientas de automatización y tu navegador real. Toma el puerto 9222 (el estándar para CDP) y traslada tu navegador a 9229, permitiendo que las herramientas existentes sigan usando el mismo comando sin modificaciones.
El proxy filtra las llamadas Target.* del protocolo CDP para mostrar solo las pestañas asignadas a cada cliente. Bloquea comandos de cambio de foco como Page.bringToFront y Target.activateTarget, impidiendo que un agente ponga su ventana por delante de la tuya. Las sesiones son leases temporales con renovación automática cada 60 segundos y expiración por defecto de 300 segundos.
Incluye una API REST en el puerto 9223 para gestión de leases (/lease, /renew, /release, /status) y un sistema de cola llamado stage para cuando un agente necesita mostrar contenido en pantalla. El sistema usa LaunchAgent en macOS para reinicio automático si el proxy cae.
- Ejecutar múltiples agentes de IA (Claude Code, Playwright, browser-use) simultáneamente sin que compitan por pestañas
- Mantener sesiones iniciadas en un solo navegador mientras se automatizan tareas con diferentes herramientas
- Prevenir que agentes robén la ventana activa o accedan a pestañas no asignadas
- Gestionar leases de pestañas con renovación automática y liberación al salir del contexto
- Usar bb-show para solicitar pantalla de forma cooperativa cuando un agente necesita mostrar contenido
- No requiere cambios en las herramientas existentes: siguen usando port 9222 sin modificaciones
- Aislamiento verificado con issue #1: dos clientes no ven pestañas del otro, comprobado bidireccionalmente
- Leases temporales con auto-renew cada 60s y reaping cada 5s para evitar deadlocks
- Sistema de stage cooperativo con POST /show y POST /unstage para gestión de pantalla
- Proxy reinicia automáticamente vía LaunchAgent si pierde conexión con el navegador
- Solo scripts en macOS: get.sh, install.sh y bb-show son específicos de macOS; Windows/Linux requieren ejecutar proxy.py manualmente
- No hay suite de pruebas automatizada; verificación manual mediante issue #1 y stage timing run
- Pestañas existentes no se pueden adoptar por defecto: POST /adopt devuelve 410 en el proxy
- Fallo conocido en get.sh e install.sh: solo instalan websocket-client, falta pip3 install websockets para websockets.asyncio
- Pestañas ocultas no pintan: requestAnimationFrame no dispara en visibilityState hidden sin importar flags de Chrome
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Ejecuta curl -fsSL https://raw.githubusercontent.com/nicedreamzapp/browser-broker/main/get.sh | bash en macOS. Para Windows/Linux, clona el repo, instala pip3 install websockets websocket-client, ejecuta launch-browser.sh con --remote-debugging-port=9229 y luego python proxy.py. Configura BROKER_PROXY_PORT=9222, BROKER_UPSTREAM_PORT=9229, BROKER_PORT=9223. Usa flags de Chrome: --disable-backgrounding-occluded-windows --disable-renderer-backgrounding para evitar throttling en pestañas ocultas.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.