
Framework Python pour construire des workflows LLM en tant que machines à états avec vérification formelle via la preuve de théorèmes Z3, le model checking CTL et la prédiction conforme pour une extraction de données prouvablement correcte.
Prouvez que votre agent IA est à l'épreuve des injections, conforme aux spécifications et qu'il n'agira pas hors limites — avant de le déployer.
Un vérificateur au moment de la conception pour les agents LLM — pas une barrière d'exécution. Importez votre agent LangGraph / CrewAI / AutoGen / MCP et Aura prouve cinq choses sur l'agent que vous avez déjà écrit, puis vous remet le contre-exemple exact ou un certificat. Z3 · vérification de modèle CTL · flux d'information/taint · calibration conforme. S'exécute localement, en CI, sans clé API.
Vérifier une conception → importer un agent réel depuis son code → la trifecta létale s'illumine avec le chemin exact → enregistrer une référence et verrouiller les régressions. · ▶ regarder la démonstration complète
pip install aura-state # or: uv pip install aura-state · uv add aura-state
$ aura-state demo # no keys, no config, no agent of your own needed
aura-state check · support-ticket-agent · 4 nodes
✗ trifecta [send]: lethal trifecta closed — prompt injection at 'fetch' (untrusted)
can reach external sink 'send' unsanitized while 'draft' brings private data into
scope. Path: fetch → lookup → draft → send. Break it with a sanitizer between
'fetch' and 'send', or remove one of the three capabilities.
✗ NOT PROVEN — 1 blocking finding(s) # exit 1 → CI fails
checked: trifecta closed · taint proven · reachability proven · obligations proven · policy 0 flagged
L'injection de prompt n'est que l'une d'entre elles.
| Propriété | En termes simples | |
|---|---|---|
| 🔒 | Sûr — teinte + trifecta létale | ne peut pas être piégé pour divulguer des données |
| ✅ | Correct — obligations Z3/SMT | les sorties obéissent à vos règles (amount ≤ limit) |
| ♻️ | Vivant — vérification de modèle CTL | se termine, chaque étape est atteignable, aucun cul-de-sac |
| 📊 | Calibré — intervalles split-conformal | connaît son niveau de confiance réel |
| 🛑 | Gouverné — abstention à risque contrôlé | refuse d'agir en cas de doute |
aura-state check my_agent.json # a studio export
aura-state check your_agent.py # a LangGraph / CrewAI / AutoGen source file — parsed, never executed
aura-state check ./my-agent-repo/ # a whole directory
uvx aura-state check agents/*.json # zero-install via uv — perfect for CI
Au-delà de la trifecta, check prouve également :
"manifest": { "side_effects": ["read"] } à votre flux :
✗ least-privilege [Pay]: 'Pay' can external 'payment.charge', outside the declared manifest
~/.cursor/mcp.json et le passer en paramètre"). Statique — il ne se connecte jamais à un serveur.Prouvez-le — puis prouvez la preuve. Émettez un certificat vérifiable et revérifiez-le sans faire confiance à celui qui l'a émis :
aura-state certify your_agent.py --out cert.json # design + verdict, content-hashed
aura-state verify-cert cert.json # re-runs the verifier — catches any tamper
Correspond à l'Art. 12 du Règlement européen sur l'IA / ISO 42001 (preuves, pas seulement documentation).
Évaluez-le. aura-state bench exécute un corpus étiqueté (précision sur des paires sûres/vulnérables — sound, donc le rappel est de 100 % par construction ; la mesure obtenue est la précision) ainsi qu'une couverture d'import sur de vrais agents MCP/framework ingérés sans modification.
Les vérificateurs d'agents pré-exécution existent — mais chacun fait une chose et vous oblige à réécrire votre agent dans leur formalisme. L'avantage d'Aura est d'être l'outil livré qui ingère l'agent que vous avez déjà écrit et exécute l'ensemble complet :
| Statique (avant exécution) ? | Flux de données de sécurité ? | Importe votre véritable agent ? | |
|---|---|---|---|
| AgentProof | ✅ | ❌ topologie uniquement | ✅ |
| AgentFlow | ✅ | ✅ | ❌ son propre DSL de politiques |
| FIDES (Microsoft) | ❌ à l'exécution | ✅ | ❌ planificateur à construire avec |
| Aura-State | ✅ | ✅ | ✅ LangGraph / CrewAI / AutoGen / MCP |
Nous n'avons pas inventé ces méthodes — la recherche est riche et certaines parties sont plus rigoureuses que les nôtres. Nous sommes celui que vous pouvez pip install et pointer vers votre agent existant dès aujourd'hui. Et il est sound / fail-closed : une capacité inconnue est signalée comme un avis, jamais transmise silencieusement.
Intégrez-le dans la CI et chaque PR est vérifiée :
# .github/workflows/aura.yml
- uses: your-org/aura-state@v0
with: { paths: "agents/*.json" }
La trifecta létale est le mode de défaillance le plus effrayant pour un agent utilisant des outils : au moment où il peut (1) lire des données privées, (2) ingérer du contenu non fiable, et (3) communiquer vers l'extérieur — le tout sur un même chemin accessible — une injection de prompt cachée dans ce contenu peut lire vos données et les exfiltrer. Tout le monde met en garde contre cela. Aura prouve que votre agent ne peut pas la refermer, statiquement, avant votre mise en production :
$ aura-state check dev_assistant.tools.json # ← your MCP tools/list export
✗ trifecta [slack_post_message]: lethal trifecta closed — prompt injection at 'fetch'
(untrusted) can reach external sink 'slack_post_message' unsanitized while 'read_file'
brings private data into scope. Path: fetch → Agent → slack_post_message.
Break it with a sanitizer between 'fetch' and 'slack_post_message'.