Sentinel wraps any AI agent and records tamper-resistant decision traces to local sovereign storage. Quantum-safe signing with client-side keys. Zero cloud dependencies, zero US CLOUD Act exposure, air-gapped capable.
Sovereign-first governance primitives. Quantum-safe signing. Multi-language. No external services for any of it.
ML-DSA-65 (FIPS 204), BSI TR-02102-1 recommended. Keys stay client-side, forever. Same algorithm as cloud competitors — your keys, your infrastructure, your law.
Attestations — portable self-contained governance JSON, verifiable offline. BudgetTracker — spend recorded as sovereign traces. Preflight — check before you act, without writing a trace.
New framework integrations: CrewAI task callback and AutoGen agent hook. LangFuse gains a sovereignty widget — self-contained HTML, no CDN.
RFC-001 is ACCEPTED. Python reference plus a Rust implementation (sentinel-manifest v0.1.0). Go and TypeScript are wanted as good-first-issues.
Three ways to log AI decisions. Only one passes the EU AI Act, the CLOUD Act, and the air-gap test.
| Requirement | Cloud observability | Proprietary platforms | Sentinel |
|---|---|---|---|
| Decision records | ✓ | ✓ | ✓ |
| EU AI Act Art. 12 | Partial | Partial | ✓ Full |
| US CLOUD Act exposure | ✗ Applies | ✗ Applies | ✓ None |
| Air-gapped capable | ✗ | ✗ | ✓ |
| Open source | Some | ✗ | ✓ Apache 2.0 |
| On-premise | ✗ | Expensive | ✓ Default |
| BSI path | ✗ | ✗ | ✓ v3.0 ready |
| Quantum-safe signing | ✗ | Server-side | ✓ ML-DSA-65, client-side |
| Manifesto-as-code CI | ✗ | ✗ | ✓ 5 theses, every PR |
Live data from a sample deployment. Every chart is inline SVG — zero external resources.
| Time | Agent | Result | ms |
|---|---|---|---|
| 12:34:51 | procurement_agent | ALLOW | 3 |
| 12:34:52 | access_control | DENY | 2 |
| 12:34:53 | doc_classifier | ALLOW | 4 |
| 12:34:54 | procurement_agent | ALLOW | 3 |
| 12:34:55 | mission_eval | EXCEPTION | 8 |
| 12:34:56 | access_control | ALLOW | 2 |
| 12:34:57 | doc_classifier | DENY | 3 |
| 12:34:58 | procurement_agent | ALLOW | 4 |
Four snippets. Real working code. No placeholders.
from sentinel import Sentinel sentinel = Sentinel() # SQLite, zero config @sentinel.trace async def my_agent(context: dict) -> dict: return {"decision": "approved"} # Every call produces a sovereign trace result = await my_agent({"amount": 5000}) print(result) # {"decision": "approved"} # Query traces traces = sentinel.query(limit=1) print(traces[0].policy_result) # ALLOW
from sentinel import Sentinel from sentinel.policy.evaluator import SimpleRuleEvaluator from sentinel.storage.filesystem import FilesystemStorage sentinel = Sentinel( policy_evaluator=SimpleRuleEvaluator({ "threshold": lambda ctx: ctx["amount"] <= 10_000 }), storage=FilesystemStorage("/mnt/traces"), sovereign_scope="EU", data_residency="on-premise-de", ) @sentinel.trace async def approve_procurement(ctx: dict) -> dict: return {"approved": ctx["amount"] <= 10_000} # DENY recorded automatically for high-value requests await approve_procurement({"amount": 50_000})
from sentinel import Sentinel from sentinel.manifesto import SentinelManifesto from sentinel.manifesto.requirements import ( EUOnly, Required, AcknowledgedGap, ) from sentinel.compliance.euaiact import EUAIActChecker class OurPolicy(SentinelManifesto): name = "Production Sovereignty Policy v1" jurisdiction = EUOnly() kill_switch = Required() ci_cd = AcknowledgedGap( provider="GitHub Actions (Microsoft/US)", migrating_to="Self-hosted Forgejo", by="2027-Q2", reason="No EU-sovereign CI with comparable UX", ) sentinel = Sentinel() # Check EU AI Act compliance report = EUAIActChecker().check(sentinel) print(report.diff()) # Generate self-contained HTML report report.save_html("sovereignty_report.html") # Check manifesto vs reality manifesto_report = OurPolicy().check(sentinel_instance=sentinel) print(f"Score: {manifesto_report.overall_score:.0%}")
from sentinel import ( Sentinel, BudgetTracker, generate_attestation, verify_attestation, ) from sentinel.crypto import QuantumSafeSigner # Quantum-safe signing — keys stay on your infrastructure signer = QuantumSafeSigner( key_path="/etc/sentinel/keys/signing.key", public_key_path="/etc/sentinel/keys/signing.pub", ) sentinel = Sentinel(signer=signer) # Preflight — check before you act, no trace written result = sentinel.preflight("data:delete:production") if not result.cleared: raise RuntimeError(result.reasons) # BudgetTracker — every cost entry is a sovereign trace budget = BudgetTracker(sentinel=sentinel, limit=10.0) check = budget.check(estimated_cost=0.25) budget.record("api:mistral", actual_cost=0.23) # Portable attestation — verifiable offline, no service needed att = generate_attestation(sentinel=sentinel) assert verify_attestation(att).valid
Four scenarios where a missing trace is worse than a crash.
Autonomous go/no-go decisions with mission policy evaluation. Kill switch for immediate halt (Art. 14). Air-gapped deployment verified by dedicated test suite. VS-NfD roadmap.
Treatment recommendation audit trail. GDPR-compliant data residency. Every clinical AI decision recorded with SHA-256 hash. Art. 14 human oversight for escalation workflows.
Transaction approval automation with DORA-aligned logging. Append-only tamper-resistant records. Regulators get the full trace: what, when, which model, which policy.
Government AI transparency requirements met by default. Sovereign deployment — no foreign jurisdiction access possible. EU AI Act compliance diff for internal auditors.
Every v1 → v3 capability. Seven articles. One honest compliance story.
| Article | Requirement | Sentinel |
|---|---|---|
| Art. 12 | Auto logging | ✓ Full |
| Art. 13 | Transparency | ✓ Full |
| Art. 14 | Human oversight | ✓ Full |
| Art. 9 | Risk management | ~ Partial |
| Art. 17 | Quality management | ~ Partial |
| Art. 10 | Data governance | → Human action |
| Art. 15 | Accuracy | → Human action |
git clone https://github.com/sebastianweiss83/sentinel-kernel cd sentinel-kernel/demo docker compose -f docker-compose.minimal.yml up # http://localhost:3001 — Grafana dashboard