
Un runtime sicuro* per agenti AI autonomi. Policy da costituzioni in inglese semplice. (*https://ironcurtain.dev)
Un runtime sicuro* per agenti AI autonomi, in cui la politica di sicurezza deriva da una costituzione leggibile dall'uomo.
*Quando qualcuno scrive "sicuro", dovresti essere immediatamente scettico. Cosa intendiamo per sicuro?
[!WARNING] Prototipo di ricerca. IronCurtain è un progetto di ricerca in fase iniziale che esplora come rendere gli agenti AI abbastanza sicuri da essere realmente utili. Le API, i formati di configurazione e l'architettura possono cambiare. Contributi e feedback sono benvenuti.
All'agente viene chiesto di clonare un repository e fare push delle modifiche. Sia git_clone che git_push vengono escalati dal motore delle policy, ma l'auto-approver li approva automaticamente — l'input attendibile dell'utente dalla modalità comando (Ctrl-A) ha fornito un intento chiaro, quindi non è stato necessario alcun /approve manuale.
Gli agenti AI autonomi possono gestire file, eseguire comandi git, inviare messaggi e interagire con le API per tuo conto. Ma i framework di agenti odierni concedono all'agente gli stessi privilegi dell'utente, come l'accesso completo al filesystem, alle credenziali e alla rete. I ricercatori di sicurezza chiamano questo autorità ambientale, e significa che una singola prompt injection o una deriva multi-turno può causare la cancellazione di file, l'esfiltrazione di dati o il push di codice malevolo da parte di un agente.
La risposta comune è limitare gli agenti a una sandbox ristretta (limitandone l'utilità) oppure chiedere all'utente di approvare ogni azione (limitandone l'autonomia). Nessuna delle due è soddisfacente.
IronCurtain segue un percorso diverso: esprimi la tua intenzione di sicurezza in linguaggio naturale, poi lascia che il sistema capisca come applicarla.
Scrivi una costituzione, ovvero un breve documento che descrive cosa il tuo agente è e non è autorizzato a fare. IronCurtain compila questo documento in una politica di sicurezza deterministica utilizzando una pipeline LLM, convalida le regole compilate rispetto a scenari di test generati, e poi applica la politica a runtime su ogni chiamata di strumento. Il risultato è un agente che può lavorare in autonomia entro i confini che definisci in linguaggio naturale.
Le idee chiave:
IronCurtain supporta due modalità di sessione con modelli di fiducia diversi:
Builtin Agent (Code Mode) — L'agente LLM di IronCurtain scrive frammenti TypeScript che vengono eseguiti in una sandbox V8. IronCurtain controlla l'agente, la sandbox e il motore di policy. Ogni chiamata di strumento esce dalla sandbox come richiesta MCP strutturata, passa attraverso il motore di policy (consenti / nega / escala), e solo allora raggiunge il vero server MCP.
Docker Agent Mode — Un agente esterno (Claude Code, Goose, Codex) viene eseguito all'interno di un container senza accesso diretto alla rete pubblica. IronCurtain media gli effetti esterni: le chiamate API LLM passano attraverso un proxy MITM che termina TLS (allowlist host, scambio chiave fittizia-reale), le chiamate di strumenti MCP passano attraverso lo stesso motore di policy, e le installazioni di pacchetti supportate passano attraverso proxy di pacchetti con validazione.
Il Docker annidato opt-in offre alle sessioni di sviluppo un daemon privato ed effimero senza esporre il socket Docker dell'host. I profili implementati coprono Apple Container e Docker Desktop su macOS, e WSL2 con Docker Desktop su amd64. Le sue modalità offline, images e packages separano l'uso di immagini locali, i pull mediati di immagini pubbliche e le build di pacchetti supportate. Il Linux Engine nativo non è ammesso per l'annidamento; consulta il riferimento di configurazione per prerequisiti e limitazioni.
In entrambe le modalità, l'agente è non attendibile. La sicurezza non dipende dal fatto che il modello segua le istruzioni — viene applicata al confine.
Consulta SANDBOXING.md per l'architettura completa con diagrammi, analisi della fiducia strato per strato e note sulla piattaforma macOS.
isolated-vm precompilati. Node 25 non è supportato né testato.container funziona come backend alternativo (VM per container; usato automaticamente quando i suoi servizi sono in esecuzione — vedi containerRuntime in ironcurtain config)Come strumento CLI globale (utenti finali):
npm install -g @provos/ironcurtain
Dal sorgente (sviluppo):
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. Imposta la tua chiave API:
export ANTHROPIC_API_KEY=sk-ant-...
Puoi anche inserire le chiavi in un file .env nella radice del progetto (caricato automaticamente tramite dotenv), oppure aggiungerle a ~/.ironcurtain/config.json tramite ironcurtain config. Le variabili d'ambiente hanno la precedenza sui valori del file di configurazione. Supportate: ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, OPENAI_API_KEY.
2. Esegui la procedura guidata di primo avvio (eseguila esplicitamente prima di utilizzare il percorso mux consigliato; viene eseguita automaticamente anche al primo ironcurtain start non-mux):
ironcurtain setup
Ti guida attraverso la configurazione del token GitHub, il provider di ricerca web, la selezione del modello e altre impostazioni. Crea ~/.ironcurtain/config.json con le tue scelte.