Este artículo describe cómo Browser Use construyó una infraestructura segura y escalable para ejecutar 'agentes' (programas autónomos) que pueden ejecutar código arbitrario, como Python o comandos shell. Inicialmente, la empresa usaba AWS Lambda para ejecutar agentes con código limitado, pero a medida que la complejidad aumentó, se necesitaba una solución más robusta.
El problema principal era la seguridad: los agentes con capacidad de ejecutar código podían potencialmente acceder a información sensible en la infraestructura. Se identificaron dos patrones para abordar esto: aislar la herramienta (el código ejecutable) o aislar el agente completo. Browser Use optó por el segundo patrón, que implica encapsular el agente en un 'sandbox' con acceso limitado y utilizar un 'control plane' como intermediario para todas las interacciones con el mundo exterior.
El sandbox se ejecuta como una micro-VM Unikraft en producción (para escalabilidad y eficiencia) y como un contenedor Docker en desarrollo. La clave es que la misma imagen de contenedor se utiliza en ambos entornos, simplificando el desarrollo y la implementación. El sandbox recibe solo tres variables de entorno: un token de sesión, la URL del control plane y un ID de sesión, eliminando cualquier credencial sensible. Además, se aplican medidas de endurecimiento como la compilación a bytecode, la reducción de privilegios y la eliminación de variables de entorno después de su uso.
El control plane actúa como un proxy, gestionando las solicitudes del sandbox a servicios externos como modelos de lenguaje grandes (LLMs) y almacenamiento en S3. Utiliza un protocolo de 'Bearer token' para autenticar las solicitudes y aplica límites de costos. Para la sincronización de archivos, se utilizan URLs pre-firmadas de S3, evitando que el sandbox tenga acceso directo a las credenciales de AWS. La arquitectura es escalable: el control plane es stateless y puede ampliarse horizontalmente, mientras que los sandboxes se escalan independientemente a través de Unikraft.
En resumen, la solución de Browser Use prioriza la seguridad y la escalabilidad al aislar completamente los agentes y utilizar un control plane para gestionar el acceso a los recursos, lo que permite una gestión más segura y eficiente de los agentes que ejecutan código arbitrario.
