
Python-Framework zum Erstellen von LLM-Workflows als Zustandsmaschinen mit formaler Verifikation durch Z3-Theorembeweise, CTL-Modellprüfung und konforme Vorhersage für nachweislich korrekte Datenextraktion.
Beweise, dass dein KI-Agent injectionsicher und spezifikationskonform ist und nicht außerhalb seiner Grenzen handelt — bevor du ihn auslieferst.
Ein Verifier zur Designzeit für LLM-Agenten — keine Laufzeit-Guardrail. Importiere deinen LangGraph / CrewAI / AutoGen / MCP-Agenten und Aura beweist fünf Dinge über den Agenten, den du bereits geschrieben hast, und liefert dir dann das exakte Gegenbeispiel oder ein Zertifikat. Z3 · CTL-Model-Checking · Information-Flow/Taint · konforme Kalibrierung. Läuft lokal, in CI, ohne API-Schlüssel.
Ein Design verifizieren → einen echten Agenten aus seinem Code importieren → die tödliche Trifecta leuchtet mit dem exakten Pfad auf → eine Baseline speichern und Regressionen absichern. · ▶ die vollständige Tour ansehen
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
Prompt-Injection ist nur eines davon.
| Eigenschaft | In einfachen Worten | |
|---|---|---|
| 🔒 | Sicher — Taint + letale Trifecta | kann nicht dazu verleitet werden, Daten preiszugeben |
| ✅ | Korrekt — Z3/SMT-Verpflichtungen | Ausgaben befolgen deine Regeln (amount ≤ limit) |
| ♻️ | Lebendig — CTL-Modellprüfung | terminiert, jeder Schritt erreichbar, keine Sackgassen |
| 📊 | Kalibriert — Split-Conformal-Intervalle | weiß, wie zuversichtlich es tatsächlich ist |
| 🛑 | Gesteuert — risikokontrollierte Enthaltung | weigert sich zu handeln, wenn es unsicher ist |
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
Über die Trifekta hinaus beweist check außerdem:
"manifest": { "side_effects": ["read"] } zu deinem Flow hinzu:
✗ least-privilege [Pay]: 'Pay' can external 'payment.charge', outside the declared manifest
~/.cursor/mcp.json und übergib sie als Parameter“). Statisch — es wird nie eine Verbindung zu einem Server hergestellt.Beweise es — dann beweise den Beweis. Gib ein verifizierbares Zertifikat aus und überprüfe es erneut, ohne demjenigen zu vertrauen, der es ausgestellt hat:
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
Entspricht EU AI Act Art. 12 / ISO 42001 (Nachweise, nicht nur Dokumentation).
Benchmark it. aura-state bench führt einen gelabelten Korpus aus (Genauigkeit auf sicheren/verwundbaren Paaren — sound, also Recall ist konstruktionsbedingt 100 %; die gemessene Zahl ist die Precision) plus Import-Abdeckung auf realen MCP/Framework-Agenten, die unverändert ingestiert werden.
Pre-Execution-Agent-Verifier existieren — aber jeder macht eine Sache und zwingt dich, deinen Agenten in deren Formalismus umzuschreiben. Auras Vorteil ist, das ausgelieferte Tool zu sein, das den Agenten ingestiert, den du bereits geschrieben hast, und das gesamte Set ausführt:
| Statisch (bevor er läuft)? | Security-Dataflow? | Importiert deinen echten Agenten? | |
|---|---|---|---|
| AgentProof | ✅ | ❌ nur Topologie | ✅ |
| AgentFlow | ✅ | ✅ | ❌ eigene Policy-DSL |
| FIDES (Microsoft) | ❌ Runtime | ✅ | ❌ Build-with-it-Planner |
| Aura-State | ✅ | ✅ | ✅ LangGraph / CrewAI / AutoGen / MCP |
Wir haben diese Methoden nicht erfunden — die Forschung ist reichhaltig und einiges davon ist rigoroser als unseres. Wir sind derjenige, den du pip installen und heute auf deinen bestehenden Agenten richten kannst. Und er ist sound / fail-closed: Eine unbekannte Fähigkeit wird als Hinweis sichtbar gemacht, niemals stillschweigend durchgelassen.
Drop it into CI and every PR is checked:
# .github/workflows/aura.yml
- uses: your-org/aura-state@v0
with: { paths: "agents/*.json" }
Die tödliche Trifekta ist der beängstigendste Fehlermodus für einen werkzeugnutzenden Agenten: In dem Moment, in dem er (1) private Daten lesen, (2) nicht vertrauenswürdige Inhalte aufnehmen und (3) nach außen kommunizieren kann — alles auf einem erreichbaren Pfad — kann eine in diesen Inhalten versteckte Prompt-Injection Ihre Daten lesen und nach außen befördern. Alle warnen davor. Aura beweist, dass Ihr Agent sie nicht schließen kann, statisch, bevor Sie ausliefern:
$ 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'.