
Un runtime* seguro para agentes de IA autónomos. Política a partir de constituciones en inglés sencillo. (*https://ironcurtain.dev)
Un runtime seguro* para agentes de IA autónomos, donde la política de seguridad se deriva de una constitución legible por humanos.
*Cuando alguien escribe "seguro", deberías ser escéptico de inmediato. ¿Qué queremos decir con seguro?
[!WARNING] Prototipo de investigación. IronCurtain es un proyecto de investigación en etapa temprana que explora cómo hacer que los agentes de IA sean lo suficientemente seguros como para ser genuinamente útiles. Las APIs, los formatos de configuración y la arquitectura pueden cambiar. Las contribuciones y comentarios son bienvenidos.
Se le pide al agente que clone un repositorio y realice cambios. Tanto git_clone como git_push son escalados por el motor de políticas, pero el aprobador automático los aprueba automáticamente — la entrada confiable del usuario desde el modo de comando (Ctrl-A) proporcionó una intención clara, por lo que no fue necesaria una /approve manual.
Los agentes de IA autónomos pueden gestionar archivos, ejecutar comandos git, enviar mensajes e interactuar con APIs en tu nombre. Pero los frameworks actuales de agentes otorgan al agente los mismos privilegios que al usuario, como acceso completo al sistema de archivos, credenciales y red. Los investigadores de seguridad llaman a esto autoridad ambiental, y significa que una sola inyección de prompt o una deriva en múltiples turnos puede hacer que un agente elimine archivos, exfiltre datos o envíe código malicioso.
La respuesta común es restringir a los agentes a un sandbox estrecho (limitando su utilidad) o pedir al usuario que apruebe cada acción (limitando su autonomía). Ninguna de las dos es satisfactoria.
IronCurtain toma un camino diferente: expresa tu intención de seguridad en inglés sencillo, luego deja que el sistema determine la aplicación.
Escribes una constitución, que es un documento breve que describe lo que tu agente puede y no puede hacer. IronCurtain compila esto en una política de seguridad determinista utilizando un pipeline de LLM, valida las reglas compiladas frente a escenarios de prueba generados, y luego aplica la política en tiempo de ejecución en cada llamada a herramienta. El resultado es un agente que puede trabajar de forma autónoma dentro de los límites que defines en lenguaje natural.
Las ideas clave:
IronCurtain admite dos modos de sesión con diferentes modelos de confianza:
Agente Integrado (Modo Código) — El propio agente LLM de IronCurtain escribe fragmentos TypeScript que se ejecutan en un sandbox V8. IronCurtain controla el agente, el sandbox y el motor de políticas. Cada llamada a herramienta sale del sandbox como una solicitud MCP estructurada, pasa por el motor de políticas (permitir / denegar / escalar), y solo entonces llega al servidor MCP real.
Modo Agente Docker — Un agente externo (Claude Code, Goose, etc.) se ejecuta dentro de un contenedor Docker sin acceso a la red. IronCurtain media los efectos externos: las llamadas a la API LLM pasan a través de un proxy MITM que termina TLS (lista blanca de hosts, intercambio de clave falsa por real), las llamadas a herramientas MCP pasan por el mismo motor de políticas, y las instalaciones de paquetes (npm/PyPI) pasan por un proxy de registro validador.
En ambos modos, el agente no es confiable. La seguridad no depende de que el modelo siga instrucciones — se aplica en el límite.
Consulta SANDBOXING.md para la arquitectura completa con diagramas, análisis de confianza capa por capa y notas sobre la plataforma macOS.
isolated-vm; 24 y 26 instalan binarios precompilados, Node 22 compila desde la fuente en la instalación y necesita un conjunto de herramientas C/C++). Las líneas impares (23, 25) se ejecutan pero no están probadas — ironcurtain doctor advierte.container funciona como backend alternativo (VM por contenedor; se usa automáticamente cuando sus servicios están en ejecución — consulta containerRuntime en ironcurtain config)Como herramienta CLI global (usuarios finales):```bash npm install -g @provos/ironcurtain
**Desde el código fuente (desarrollo):**```bash
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. Establece tu clave API:```bash export ANTHROPIC_API_KEY=sk-ant-...
También puedes colocar las claves en un archivo `.env` en la raíz del proyecto (cargado automáticamente a través de `dotenv`), o agregarlas a `~/.ironcurtain/config.json` mediante `ironcurtain config`. Las variables de entorno tienen prioridad sobre los valores del archivo de configuración. Soportadas: `ANTHROPIC_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY`, `OPENAI_API_KEY`.
**2. Ejecuta el asistente de primera ejecución** (ejecuta esto explícitamente antes de usar la ruta mux recomendada; también se ejecuta automáticamente en el primer `ironcurtain start` que no sea mux):```bash
ironcurtain setup
Te guía a través de la configuración del token de GitHub, el proveedor de búsqueda web, la selección del modelo y otras opciones. Crea ~/.ironcurtain/config.json con tus elecciones.
IronCurtain viene con una política predeterminada orientada a la experiencia del desarrollador: las operaciones de solo lectura están permitidas, las mutaciones (escrituras, envíos, creación de PR) escalan para aprobación humana. Puedes comenzar a usarlo inmediatamente después de la configuración.