Agentic Trust Framework
Components · The Recommended Stack

One Stack. Four Modes.

The open-source components that implement ATF — and the configuration that moves an agent from Intern to Principal without changing a line of its code.

The thesis
Maturity is not a property of the model. It is an operating mode of the whole stack, gated by evidence.

The same agent runs unchanged code at every level. Promotion is a configuration event — a new identity attribute, a tighter policy, a stricter anomaly mode — not a re-architecture. So ATF recommends one stack, plus a per-level configuration matrix. Not a "Phase 1 vs Phase 2" tool swap.

§ 1

The Recommended Stack

Five ATF elements, the open-source primitives the lab validated, and why each was chosen. Every tool is present at every level — what changes is configuration, not the toolset.

ElementOpen-source toolsWhy this, over the toy
IdentityATF-ID · who is acting
SPIFFE / SPIREX.509 SVIDAgent registry
Workload-attested, auto-rotating, short-TTL identity — no shared secrets. The maturity level lives in the signed SVID attribute, immutable for the cert's life. PyJWT only proves someone holds a key; it's a SPIRE-less fallback at best.
BehaviorATF-BEH · what it does
OpenInferenceOpenTelemetryJaegerPrometheusPyOD
All open-source, self-hosted, standards-based. Jaeger gives the per-request trace tree, Prometheus the metrics, PyOD the behavioral baseline. LangSmith is proprietary SaaS — your traces leave your boundary. PyOD's mode changes per level; the tool doesn't.
Data GovernanceATF-DAT · in and out
Microsoft PresidioPydanticdetect-secretsGuardrails AI
Layered input→output governance: schema in, PII and secrets scanned, schema out. The strictness escalates per level — detect-and-block, then redaction, then cross-domain provenance — not the tools.
SegmentationATF-SEG · where it can go
OpenZitiCasbin
OpenZiti is network-layer zero trust: an agent literally cannot reach a service its SPIFFE identity isn't authorized for, with mTLS and an identity-revocation kill switch. Casbin is real policy-as-code (verbs × data domains × attributes). "Config allowlists" have no network story at all.
Incident ResponseATF-RES · if it goes rogue
OpenZiti revocationpy-breakerAlertmanager
The kill switch revokes the SVID / Ziti identity — cutting network, data, and tools at once, in seconds. py-breaker trips per-tool circuits; Alertmanager routes the alert. Retries and notifications aren't containment.
§ 2

The Per-Level Configuration Matrix

The same stack, throughout. Every cell below is a configuration value — a TTL, a PyOD mode, a Casbin rule, an approval toggle. Never "install a new tool." This is what "promotion = config event" looks like.

ElementL1InternL2JuniorL3SeniorL4Principal
IdentitySPIRESVID TTL 8h, attr internTTL 1h, attr juniorTTL 15m, mTLS enforced, JIT scope, attr seniorSVID in Secure Enclave, request-scoped, attr principal
BehaviorPyOD / OTelFull trace capture; PyOD learning(no enforcement)PyOD flag(surfaced, not auto-acted); acceptance trackedPyOD enforce real-time; intent-drift; auto-pauseContinuous scoring; autonomous escalation
Data Gov.Presidio…Detect-and-block PII; single domain, no cross-domain+ injection detectionCross-domain per Casbin policy; full provenanceSource-trust scoring; lineage graph; real-time compliance
SegmentationCasbin / ZitiRead-only verbs (read/search/summarize); no writes+ write verbs via approval queuePolicy-as-code; temporal boundaries; cascade preventionDynamic boundary negotiation; L7 gateway
Incidentpy-breaker / ZitiKill switch ready; breakers inertAuto-pause on anomaly clusterBreakers active everywhere; containment in seconds; checkpoint/resumeAuto detect→contain→degrade; daily self-diagnosis
The patternRead any row left to right: a TTL tightens, a PyOD mode flips, a Casbin rule set widens, an approval toggle turns off. The agent's code never changes. That is the whole point.
§ 3

Two Honest Tiers

The reference stack needs real primitives, and they're heavier to stand up than a toy. So there's a labeled on-ramp — a stepping stone, not a "Phase 1 you'll outgrow."

Reference ATF · the architecture

The stack above, configured per level

Attested identity, network-layer segmentation, policy-as-code, OSS observability. This is ATF done right — the version the lab proves.

  • SPIFFE/SPIRE · OpenZiti · Casbin
  • Presidio · Pydantic · detect-secrets · Guardrails
  • OpenInference · OTel · Jaeger · Prometheus · PyOD
Minimal viable ATF · reduced assurance

A lighter on-ramp

Lighter substitutes for teams that can't yet run SPIRE or Ziti. Clearly reduced-assurance — a way in, not an equivalent.

  • JWT in place of SPIFFE SVIDs
  • Config allowlists in place of OpenZiti
  • Casbin + Presidio + PyOD still present
The minimal path is a stepping stone. The reference stack is the destination — not a later phase.
§ 4

What the Lab Proves

Same agents, same playbook, four config modes. Steps 0–3 are built and observable — different configuration, different outcome, every decision logged.

Step 0
Attestation
Workload presents its SVID; SPIRE attests identity and maturity attribute.
Pass
Step 1
Write to firm memory
Blocked by Casbin write-verb deny at Intern. Same agent, read-only config.
Block
Step 2
Search the public web
Allowed — the verb and the network endpoint are both in policy.
Pass
Step 3
Cross-domain read
Blocked by Casbin cross-domain deny — the data domain is the policy object, not a hardcoded refusal.
Block
Every control decision emits a greppable audit line (Casbin ALLOW/DENY, Presidio, secrets, identity, PyOD score). Each call produces a Jaeger trace tree — root span plus a child per control step, with the failing step visible. Kill switch revokes in ~0ms in-process today; Ziti identity-revocation is the target mechanism.
§ 5

Honest Status

The architecture is the claim. Not every cell is battle-tested. Here's the line between what the lab runs today and what's still rolling out.

Reference-validated

  • Steps 0–3 built and observable; same agents, different config, different outcomes
  • Casbin ALLOW/DENY on verbs and data domains, with audit lines
  • Per-call Jaeger trace trees; single-domain enforcement is real policy
  • Kill switch (in-process today)

Rolling out / aspirational

  • Guardrails AI — specified, not yet wired
  • PyOD enforce mode at Senior
  • OpenZiti per-agent identities & revocation kill switch
  • SVID in Apple Secure Enclave at Principal