Voir sur GitHub · 174
Docs

Référence

GitHub · ★ 174

La surface complète de la version ouverte : features Cargo, la CLI en un coup d’œil, chaque variable d’environnement, l’API HTTP et les portées des clés d’API. Reflète le dépôt ; GitHub reste la copie de référence.

Features Cargo (iaga-sentinel-core)

FeaturePar défautAjoute
sqliteonBackend SQLite pour l’audit + les reçus.
postgresoffBackend Postgres.
receiptsonReçus signés en Ed25519 et chaînés par hachage.
dictumonParseur + évaluateur de politiques Dictum + iaga policy …
reasoningonÉchafaudage du plan de raisonnement + iaga reasoning info.
mloffBackend ML tract-onnx ; sur activation, +~5 Mo de binaire, +~2 min de compilation à froid.
kernelonNoyau d’application + iaga run + iaga kernel status.
linux-bpfoffÉchafaudage eBPF/LSM Linux + API ringbuf. Le véritable chargeur Aya-rs relève d’IAGA Sentinel Enterprise.
cost-controlonMesure locale des dépenses LLM, /v1/cost/*, iaga cost, budgets de session, cache de réponses MCP. Activé par défaut depuis la 1.8.1 ; les reçus restent identiques à l’octet près quand aucun usage n’est signalé.
plugin-attestationoffVérification hors ligne du bundle Sigstore + du SBOM CycloneDX + iaga plugins verify.
dictum-wasmoffMVP de génération de code Dictum vers WASM + iaga policy compile. Le vérificateur de types Hindley-Milner lui-même n’est pas conditionné par ce feature ; la sous-commande iaga policy requiert le feature dictum, activé par défaut.
otel-receiptsoffÉmet chaque reçu signé comme span OpenTelemetry sur /v1/telemetry/spans et /v1/telemetry/export, avec iaga.receipt.id, iaga.chain.head, iaga.policy.verdict et iaga.is_authoritative. Aucune dépendance nouvelle.
plugin-manifest-signingoffManifestes de plugins signés en Ed25519, vérifiés au chargement contre des clés de confiance, plus iaga plugins sign-manifest et verify-manifest. Orthogonal à plugin-attestation.

default = ["demo", "sqlite", "receipts", "dictum", "reasoning", "kernel", "cost-control"] depuis la 1.8.1. cargo build --no-default-features reproduit le contrat d’échange antérieur, sans cost-control.

Le vérificateur autonome iaga-verify (crate iaga-sentinel-verify) est un binaire séparé, léger en dépendances, et l’artefact que vous pouvez mettre devant un auditeur. Compilez-le de façon reproductible :

cargo build --release -p iaga-sentinel-verify --no-default-features --features verify-only

La CLI en un coup d’œil

CommandeCe qu’elle fait
iaga serve [--seed-demo] [--port N] [--policy file.dictum]Lance le sidecar : API, tableau de bord, signataire, magasin d’audit. Depuis la 1.9.2, --policy valide chaque chemin de contexte référencé par une politique et sort en code 2 sur un chemin inconnu, en nommant le chemin et les racines valides.
iaga inspect <payload.json>Verdict du pipeline en un seul appel, depuis la CLI.
iaga run --agent-id <id> -- <cmd> [args…]Lance un processus enfant sous gouvernance, avec effacement des secrets de l’environnement.
iaga replay [--list] [<run_id>] [--verify-only] [--re-execute] [--export f.json]Vérifie ou rejoue les chaînes de reçus signés.
iaga policy check/lint/test/compile <file.dictum>Vérifie les types, valide, exécute à blanc ou compile du Dictum.
iaga gen-key --label <name> [--scope agent]Génère une clé d’API (admin par défaut).
iaga audit [--limit N] [--format json]Affiche la piste d’audit.
iaga cost [summary|by-model|by-agent|by-tool|budget]Vues des dépenses (cost-control, activé par défaut).
iaga proxy --agent-id <id> --command <cmd> [args…]Proxy de gouvernance MCP transparent.
iaga mcp-serverExpose les outils de gouvernance via MCP stdio.
iaga mcp-doctor <endpoint>Contrôle de santé de n’importe quel point d’entrée MCP : handshake, schéma des outils, would-block.
iaga plugins list/validate/verify/sign-manifest/verify-manifestCycle de vie des plugins WASM.
iaga kernel status / iaga reasoning infoRapports de posture honnêtes.
iaga import/export/migrate/validateGestion de la configuration des politiques et de la base de données.
iaga-verify <chain.json> [--key <hex>]Vérification hors ligne autonome des reçus.

Variables d’environnement

VariableEffet
IAGA_SENTINEL_OPEN_MODEtrue désactive l’authentification (réservé aux parcours guidés).
PORTPort d’écoute (4010 par défaut) ; --port prévaut.
DATABASE_URLpostgres://… bascule le backend (avec --features postgres).
IAGA_SENTINEL_SIGNER_KEY_PATHBYOK : chemin d’un fichier de clé de signature Ed25519 de 32 octets.
IAGA_SENTINEL_RECEIPT_CAPTURE1 capture les entrées du pipeline pour replay --re-execute.
IAGA_SENTINEL_RECEIPT_FAIL_CLOSED1 fait échouer l’appel quand un reçu ne peut pas être signé, au lieu de renvoyer un verdict sans preuve (depuis la 1.9.0, désactivé par défaut, si bien que le contrat d’échange antérieur à la 1.9.0 est inchangé). La ligne d’audit est toujours écrite avant le reçu, si bien qu’un plantage entre les deux peut encore les faire diverger.
IAGA_SENTINEL_ENV_DENYLISTFichier TOML étendant la liste d’exclusion de l’effacement des secrets pour iaga run.
IAGA_SENTINEL_ENV_DENYLIST_STRICT1 fait échouer les lancements en fail-closed quand le TOML de la liste d’exclusion est illisible ou malformé (par défaut : avertir et utiliser les valeurs intégrées).
IAGA_SENTINEL_PLUGIN_DIRRépertoire des plugins WASM (./plugins par défaut).
IAGA_SENTINEL_REASONING_MODELSChemins des modèles ONNX pour le feature ml.
IAGA_SENTINEL_SESSION_BUDGET_USDPlafond de dépenses par session (avec cost-control).
IAGA_SENTINEL_PRICING_FILERemplace la table de tarification intégrée.
IAGA_SENTINEL_LOG_LEVEL / _LOG_FORMATFiltre de traçage et sortie text/json.
IAGA_SENTINEL_DEFAULT_MODEMode de gouvernance par défaut pour les espaces de travail sans correspondance.
IAGA_SENTINEL_NHI_MASTER_SEEDGraine déterministe pour les clés d’identité NHI.
IAGA_SENTINEL_HOSTInterface sur laquelle le serveur écoute (0.0.0.0 par défaut).
IAGA_SENTINEL_CORS_ORIGINSListe d’autorisation CORS séparée par des virgules (non définie = Any permissif, le comportement antérieur à la 1.5.2).
IAGA_SENTINEL_AUTH_CACHE_TTL_MSTTL du cache des clés d’API vérifiées (60000 par défaut ; 0 le désactive et vérifie chaque requête).
IAGA_SENTINEL_MAX_SESSIONS / _SESSION_TTL_MSPlafond du magasin de graphes de session (10000 par défaut) et TTL (30 min par défaut).
IAGA_SENTINEL_BLOCK_COOLDOWN_MS / _MAX_BLOCK_COUNTDélai de refroidissement des sessions bloquées (60 s par défaut) et nombre d’avertissements avant blocage permanent (3 par défaut).
IAGA_SENTINEL_CLEANUP_INTERVAL_SECS / _CLEANUP_TTL_SECSCadence du nettoyage TTL en arrière-plan (300 par défaut) et seuil d’ancienneté (3600 par défaut).
IAGA_SENTINEL_COST_CACHE_TTL_MS / _COST_CACHE_MAX_ENTRIESTTL du cache de réponses (5 min par défaut) et plafond de taille (4096 par défaut), avec cost-control.

Surface HTTP

Les corps de requête et la plupart des réponses suivent le contrat d’échange en camelCase. Sur /v1/inspect, les champs de premier niveau sont agentId, framework et action ; l’outil et le type vivent à l’intérieur, sous action.toolName et action.type. Hors mode ouvert, les requêtes exigent Authorization: Bearer <key>. Quelques réponses sont en snake_case à dessein : le flux d’événements SSE, le résumé d’exécution de /v1/receipts (run_id, receipt_count, last_timestamp, terminal_verdict) et /v1/rate-limit/status.

Point d’entréeCe qu’il fait
POST /v1/inspectVerdict de gouvernance pour une action ; le point d’entrée unique sur lequel tout s’intègre.
GET|POST /v1/auth/keys · DELETE /v1/auth/keys/{id}Gestion des clés d’API (portée admin).
GET /v1/reviews · POST /v1/reviews/{id}File de revue : lister les éléments, approuver ou rejeter.
GET /v1/sandbox/pendingExécutions à blanc en bac à sable avec analyse d’impact, en attente d’un opérateur.
GET /v1/receipts · GET /v1/receipts/{run_id}Liste les exécutions ; lit la chaîne de reçus signés d’une exécution.
GET /v1/cost/summary · /by-model · /by-agent · /by-tool · /over-time?bucket=Agrégation des dépenses (cost-control).
POST /v1/webhooks · GET /v1/webhooks/dlqEnregistre des points d’entrée de webhooks ; inspecte et relance la file des lettres mortes.
GET /v1/events/streamFlux en direct (server-sent events) de chaque verdict, création de revue et résolution.
GET /v1/policy/overlayHachage du bundle Dictum chargé et nombre de politiques.
POST /v1/plugins/reloadRecharge le registre des plugins WASM (portée admin).
GET /v1/telemetry/spans · /v1/telemetry/exportLes reçus signés comme spans OpenTelemetry (otel-receipts).
POST /v1/risk/feedback · POST /v1/risk/weights/resetPondérations de risque adaptatives : le retour d’information les déplace ; reset restaure les valeurs par défaut (admin).
GET /healthVivacité ; renvoie 200 dans les 10 secondes environ suivant le premier démarrage.

Portées des clés d’API

Les clés d’API portent une portée depuis la 1.5.2 : admin (par défaut — accès complet, identique aux clés antérieures à la 1.5.2) ou agent (iaga gen-key --scope agent), qui peut piloter la surface de gouvernance mais pas gérer les clés, les webhooks, la configuration de limitation de débit, le renseignement sur les menaces ni les rechargements de plugins.

Notez que les pondérations de risque adaptatives sont globales au processus, tous agents confondus : un retour envoyé à /v1/risk/feedback les déplace pour chaque agent de l’instance, et POST /v1/risk/weights/reset (admin) restaure les valeurs par défaut.

Pour aller plus loin