
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 policy di sicurezza è derivata da una costituzione leggibile dall'uomo.
*Quando qualcuno scrive "sicuro", dovresti subito essere scettico. Cosa intendiamo per sicuro?
[!WARNING] Prototipo di ricerca. IronCurtain è un progetto di ricerca in fase iniziale che esplora come rendere gli agenti AI sufficientemente sicuri da essere realmente utili. API, formati di configurazione e architettura possono cambiare. Contributi e feedback sono benvenuti.
All'agente viene chiesto di clonare un repository e di eseguire il push delle modifiche. Sia git_clone che git_push vengono sottoposti a escalation dal motore delle policy, ma l'auto-approvatore li approva automaticamente — l'input attendibile dell'utente dalla modalità comando (Ctrl-A) ha fornito un'intenzione chiara, 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 per agenti di oggi 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 ambient authority, e significa che una singola prompt injection o una deriva multi-turno può portare un agente a cancellare file, esfiltrare dati o pushare codice dannoso.
La risposta comune è limitare gli agenti a un sandbox ristretto (riducendone l'utilità) oppure chiedere all'utente di approvare ogni azione (limitandone l'autonomia). Nessuna delle due è soddisfacente.
IronCurtain prende una strada diversa: esprimi la tua intenzione di sicurezza in inglese semplice, lascia poi che sia il sistema a occuparsi dell'applicazione.
Scrivi una costituzione, un breve documento che descrive cosa l'agente può e non può fare. IronCurtain la compila in una policy di sicurezza deterministica usando una pipeline LLM, valida le regole compilate su scenari di test generati e poi applica la policy 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:
Agente integrato (Code Mode) — L'agente LLM di IronCurtain scrive snippet TypeScript che vengono eseguiti in una sandbox V8. IronCurtain controlla l'agente, la sandbox e il motore delle policy. Ogni chiamata di strumento esce dalla sandbox come richiesta MCP strutturata, passa attraverso il motore delle policy (allow / deny / escalate), e solo allora raggiunge il vero server MCP.
Docker Agent Mode — Un agente esterno (Claude Code, Goose, ecc.) viene eseguito all'interno di un container Docker senza accesso alla rete. IronCurtain media gli effetti esterni: le chiamate API LLM passano attraverso un proxy MITM che termina TLS (allowlist degli host, scambio di chiavi da fake a reale), le chiamate di strumenti MCP passano attraverso lo stesso motore delle policy e le installazioni di pacchetti (npm/PyPI) passano attraverso un proxy di registro validante.
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 livello per livello e note sulla piattaforma macOS.
isolated-vm; 24 e 26 installano binari precompilati, Node 22 compila dal sorgente durante l'installazione e richiede una toolchain C/C++). Le versioni dispari (23, 25) funzionano ma non sono testate — ironcurtain doctor emette un avviso.container funziona come backend alternativo (una VM per container; usato automaticamente quando i suoi servizi sono in esecuzione — vedi containerRuntime in ironcurtain config)Come strumento CLI globale (utenti finali):```bash npm install -g @provos/ironcurtain
**Dalla sorgente (sviluppo):**```bash
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. Imposta la tua chiave API:```bash export ANTHROPIC_API_KEY=sk-ant-...
Puoi anche inserire le chiavi in un file `.env` nella directory principale del progetto (caricato automaticamente tramite `dotenv`), oppure aggiungerle a `~/.ironcurtain/config.json` tramite `ironcurtain config`. Le variabili d'ambiente hanno 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 anche automaticamente al primo `ironcurtain start` senza mux):```bash
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.
IronCurtain viene fornito con una policy predefinita orientata all'esperienza dello sviluppatore: le operazioni di sola lettura sono consentite, mentre le mutazioni (scritture, push, creazione di PR) passano per l'approvazione umana. Puoi iniziare a usarlo subito dopo la configurazione.