Sentinel

EU-sovereign AI decision middleware. Wraps any AI agent, evaluates policy in-process, and writes tamper-resistant decision records to local storage. Zero dependencies. Air-gapped capable. Apache 2.0.

pip install sentinel-kernel

    GitHub · PyPI · Full sample report

Live sample dashboard

The charts below are rendered from a sample Sentinel run with 200 simulated decisions. Every element is inline SVG — zero external resources, zero JavaScript. Safe for air-gapped environments.

Sovereignty score

100%

Days to EU AI Act enforcement

113
2 August 2026 — Annex III

Sample decisions

200
ALLOW: 139 · DENY: 61

Policy result distribution

ALLOW (69%)
DENY (30%)
OTHER (0%)

EU AI Act article coverage

Art. 9 — Risk management50%Art. 12 — Automatic record keeping100%Art. 13 — Transparency & information t100%Art. 14 — Human oversight100%Art. 17 — Quality management system100%

Recent decisions

TimeAgentResultScopeResidencyLatency
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daALLOWEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms
10:20:28_build_sentinel_with_sample_daDENYEUEU-DE0 ms

Declare your sovereignty requirements in code

from sentinel.manifesto import (
    SentinelManifesto, EUOnly, Required, OnPremiseOnly,
    Targeting, AcknowledgedGap,
)

class OurPolicy(SentinelManifesto):
    jurisdiction = EUOnly()
    kill_switch = Required()
    storage = OnPremiseOnly(country="DE")
    bsi = Targeting(by="2026-12-31")

    ci_cd = AcknowledgedGap(
        provider="Managed SaaS CI",
        migrating_to="Self-hosted Forgejo",
        by="2027-Q2",
        reason="No EU-sovereign CI alternative with comparable UX",
    )

report = OurPolicy().check()
print(report.as_text())

Quick demo

# 2-minute local demo
pip install sentinel-kernel
python -c "
from sentinel import Sentinel
sentinel = Sentinel()

@sentinel.trace
def decide(req):
    return {'decision': 'approved'}

decide({'amount': 5000})
print(sentinel.query(limit=1)[0].to_json())
"

# Full Grafana + OTel stack (requires Docker)
git clone https://github.com/sebastianweiss83/sentinel-kernel
cd sentinel-kernel/demo
docker compose up --build

What Sentinel answers for you

QuestionSentinel answer
What was decided?Append-only DecisionTrace with policy result and rule
By which model, which policy, which version?Every trace records agent, model, policy name/version
Under whose law is the evidence stored?sovereign_scope and data_residency on every record
Can a human halt it?Runtime kill switch (Art. 14) with no restart
What of this am I compliant with today?sentinel compliance check
Where is my sovereignty leaking?sentinel scan (runtime + CI/CD + infrastructure)