Volver a actualizaciones
Nuevo releaseSep 21, 2026

ironcurtain memory-mcp-server/v0.2.1

Un runtime* seguro para agentes de IA autónomos. Política a partir de constituciones en inglés sencillo. (*https://ironcurtain.dev)

Compartir

IronCurtain

CI npm License Website

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 inmediatamente escéptico. ¿Qué queremos decir con seguro?

[!WARNING] Prototipo de investigación. IronCurtain es un proyecto de investigación en fase 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 los comentarios son bienvenidos.

Demo

IronCurtain mux demo: trusted input from command mode enables auto-approval of git clone and git push

Se le pide al agente que clone un repositorio y suba los cambios. Tanto git_clone como git_push son escalados por el motor de políticas, pero el auto-aprobador los aprueba automáticamente — la entrada de confianza del usuario desde el modo comando (Ctrl-A) proporcionó una intención clara, por lo que no se necesitó un /approve manual.

El Problema

Los agentes de IA autónomos pueden gestionar archivos, ejecutar comandos de git, enviar mensajes e interactuar con APIs en tu nombre. Pero los frameworks de agentes actuales otorgan al agente los mismos privilegios que el 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 multiturno puede provocar que un agente elimine archivos, exfiltre datos o suba 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.

El Enfoque

IronCurtain toma un camino diferente: expresa tu intención de seguridad en inglés sencillo, y luego deja que el sistema se encargue de 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 usando un pipeline de LLM, valida las reglas compiladas contra 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:

  • El agente no es de confianza. IronCurtain asume que el LLM puede estar comprometido por inyección de prompt o deriva. La seguridad no depende de que el modelo "se porte bien".
  • Intención en inglés, aplicación a la salida. Escribes la intención ("sin operaciones git destructivas sin aprobación"); el sistema la compila en reglas deterministas que se aplican sin más intervención del LLM en tiempo de ejecución.
  • Interposición semántica. En lugar de dar al agente acceso directo al sistema, todas las interacciones pasan por servidores MCP (sistema de archivos, git, etc.). Cada llamada a herramienta pasa por un motor de políticas que puede permitir, denegar o escalar al usuario para su aprobación.
  • Defensa en profundidad. El código del agente se ejecuta en un aislamiento de V8 sin acceso directo al host. La única salida es a través de llamadas a herramientas MCP semánticamente significativas, y cada una se verifica contra la política.

Arquitectura

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 de TypeScript que se ejecutan en un sandbox de 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, Codex) se ejecuta dentro de un contenedor sin acceso directo a la red pública. IronCurtain media los efectos externos: las llamadas a la API del LLM pasan por un proxy MITM que termina TLS (lista de hosts permitidos, intercambio de claves falsas por reales), las llamadas a herramientas MCP pasan por el mismo motor de políticas, y las instalaciones de paquetes compatibles pasan por proxies de paquetes con validación.

El Docker anidado opcional proporciona a las sesiones de desarrollador un daemon privado y efímero sin exponer el socket de Docker del host. Los perfiles implementados cubren Apple Container y Docker Desktop en macOS, y WSL2 con Docker Desktop en amd64. Sus modos offline, images y packages separan el uso local de imágenes, las extracciones de imágenes públicas mediadas y las compilaciones de paquetes compatibles. El motor nativo de Linux no está admitido para anidamiento; consulta la referencia de configuración para los requisitos previos y las limitaciones.

En ambos modos, el agente no es de confianza. La seguridad no depende de que el modelo siga las instrucciones — se aplica en la frontera.

Consulta SANDBOXING.md para ver la arquitectura completa con diagramas, análisis de confianza capa por capa y notas sobre la plataforma macOS.

Inicio Rápido

Requisitos previos

  • Node.js 24 o 26 — las líneas de versión mayor pares que IronCurtain prueba. Ambas instalan binarios precompilados de isolated-vm. Node 25 no es compatible ni está probado.
  • Docker — no es obligatorio pero muy recomendado para el Modo Agente Docker, que proporciona el aislamiento más fuerte. En macOS 26+ (Apple silicon), Apple 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)
  • Una clave de API para al menos un proveedor de LLM (Anthropic, Google u OpenAI)

Instalación

Como herramienta CLI global (usuarios finales):

npm install -g @provos/ironcurtain

Desde el código fuente (desarrollo):

git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install

Configuración inicial

1. Establece tu clave de API:

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 mediante dotenv), o añadirlas a ~/.ironcurtain/config.json mediante ironcurtain config. Las variables de entorno tienen prioridad sobre los valores del archivo de configuración. Compatibles: ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, OPENAI_API_KEY.

2. Ejecuta el asistente de primer inicio (ejecútalo explícitamente antes de usar la ruta mux recomendada; también se ejecuta automáticamente en el primer ironcurtain start que no sea mux):

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 de modelo y otros ajustes. Crea ~/.ironcurtain/config.json con tus elecciones.

Ejecutar IronCurtain

Categorías