AgentLighthouse — Observability and Governance for AI Agents
Open-source runtime security & governance for AI agents

APM watches services. SIEM watches logs.
AgentLighthouse watches agents.

It mediates every action an autonomous agent takes, enforces identity-bound guardrails, and emits signed, hash-chained evidence — so you can trust the evidence without trusting the code that produced it.

Read the Docs View on GitHub Explore Architecture
Open Source· Runtime Mediation· Signed Evidence· Fail-Closed· MCP & A2A· Docker Ready
Live — every action mediated, every receipt signed
Simulated proxy session — ed25519 receipt chain verified from genesis.
v1.0
release
7 / 4
layers / gates
10 / 10
OWASP categories mapped
11
receipt actions
MIT
licensed
The problem

AI agents are becoming runtime systems.

AI agents no longer just generate answers. They call tools, execute workflows, move data, trigger automation, and make decisions across enterprise systems. Traditional logs show infrastructure events — but they miss agent intent, tool reasoning, policy violations, prompt-injection attempts, and unsafe action chains. That loop is the entire attack surface, and it cannot be secured from inside the agent, because the agent is the component being manipulated.

Traditional monitoring watches
CPU, memory, process, network
Application errors
API latency
Infrastructure health
Logs, after the failure
AgentLighthouse watches
Agent goals, plans, actions, tool calls
Agent policy violations
Risky execution paths
Agent behavior and signed decision evidence
Runtime guardrails, before damage
Capabilities

What AgentLighthouse does.

01

Agent Action Tracing

Captures agent plans, tool calls, prompts, responses, and outcomes as first-class telemetry — every meaningful step becomes observable and reviewable.

02

Runtime Policy Enforcement

An identity-bound, default-deny tool policy blocks, warns, or escalates risky actions — with argument constraints and human-in-the-loop on irreversible verbs.

03

Prompt-Injection Detection

A six-pass normalization and fail-closed detection engine identifies injection, secrets, PII, and tool-poisoning attempts in untrusted content — in both directions.

04

Evidence-Based Reviews

Every decision produces an Ed25519-signed, hash-chained receipt. Reviews, investigations, and compliance draw from a tamper-evident ledger, not best-effort logs.

05

Container-Ready Deployment

Runs on a laptop for evaluation and ships as a hardened, cosign-signed container with a segregated control plane and probe-gated network topology.

06

Extensible Rule Engine

Custom detection logic and signed policy packs, with severity levels and a human-gated learning loop that can only ever tighten the gate — never loosen it.

Why now

Why existing tools are not enough.

SIEMs, APM tools, endpoint security, and cloud logs are essential — but they were not designed to understand agent-native behavior. They can tell you that a request happened. AgentLighthouse helps explain why the agent made it, what influenced it, what policy applied, and whether the action should have been allowed at all.

Existing tools

  • Not covered: Observe infrastructure
  • Not covered: Collect application logs
  • Not covered: Detect known security events
  • Not covered: Alert after abnormal system behavior

AgentLighthouse

  • Covered: Mediates agent intent and actions
  • Covered: Tracks tool-use chains and taint
  • Covered: Flags unsafe reasoning paths
  • Covered: Applies policy before or during execution
  • Covered: Generates signed, human-readable evidence
Architecture

A mediator the agent cannot route around.

Seven layers (L0–L6), operated as four gates, with a control plane physically segregated from the agent network. Everything fails closed; every decision is receipted.

Agent Runtime
SDK / Middleware / Sidecar
Event Collector
Policy + Detection Engine
Evidence Store + Telemetry
Dashboards · Alerts · SIEM · Webhooks
SDK / Middleware
Instruments agent workflows
Collector
Normalizes event streams
Policy Engine
Evaluates behavior against rules
Evidence Store
Preserves signed decision traces
Integrations
Sends alerts to operational systems
Dashboard
Visualizes risk, policy hits, health
// The four gates

Edge Gate

L0 · L1

Egress choke-point, proxy modes, DNS pinning, SSRF controls, MCP / A2A wrapping.

Content Gate

L2 · L3

Six-pass normalization, injection, DLP / secrets, PII, entropy, rate and budget.

Action Gate

L4 · L5

Identity-bound tool policy, argument constraints, chain detection, HITL, taint, memory guard.

Evidence & Control

L6 · ops

Signed receipts, ledger and mirror, kill switch, RBAC, config validation, dashboard.

// Request lifecycle — fail-closed at every step

Read left to right: a tool call, fetch, MCP or A2A request must clear the Edge, Content and Action gates before it reaches the outside world. Any gate can allow, challenge, or block — and every outcome is written to a signed receipt.

Agent
tool call / fetch / MCP / A2A
Edge
identity · SSRF · DNS pin · budget
Content
normalize (6-pass) · scan
Action
policy · arg DLP · HITL
World
forwarded if allowed
Every decision writes an Ed25519-signed, hash-chained receipt to the append-only ledger — block, allow, or ask.
// System architecture — seven layers, three networks

Three isolated networks. The untrusted agent network holds no route to the privileged control plane; all traffic must pass through the al-core mediator on the data plane, which scans it in both directions.

agent-net · untrusted
AI agent / framework
isolated · no direct egress · identity required
only route out →
no route to control-net
(topology-enforced)
data plane — al-core (the mediator)
LIVE
L0Egress firewallnftables default-deny · boot self-test
L1Protocol mediationforward / fetch / reverse / MCP / A2A
L2Normalizationsix-pass evasion folding
L3Detectionfail-closed scanner engine
L4Capability & taintidentity-bound default-deny policy
L5Memory guardscreen · baseline · rollback
L6Evidencesigned hash-chained receipts
receipt#{{ liveSeq }}{{ liveTarget }}{{ liveVerdict }}chain verified ✓
control-net · privileged
Policy storeIdentity registry · RBACKill switch APIEvidence dashboardLearning loop
↕ signed config · hot reload
egress-net · external world
LLM providersMCP serversWeb & toolsPeer agents (A2A)
← scanned both directions
// Sequence — one mediated request

One mediated request in time order — identity and egress checks at the Edge, six-pass normalization and scanning in Content, policy and human-in-the-loop at the Action gate, then forwarding — with a signed receipt written to the ledger for every verdict, including fail-closed blocks.

Agent
Edge L0·L1
Content L2·L3
Action L4·L5
World
Ledger L6
tool call · fetch · MCP · A2A
self: identity · SSRF · DNS pin · budget
normalize (6-pass) → scan
alt — scanner block / crash / timeout (fail closed)
write receipt — verdict = block
deny — machine-readable reason
else — content clear
policy + arg DLP
irreversible verb → HITL approval · timeout = deny
forward if allowed
response — scanned inbound
write receipt — verdict + findings
result — or redacted result
// Actors and trust zones

Six actor classes across four trust zones, from the untrusted agent runtime through the trusted al-core mediator to the append-only, signed audit ledger that serves as the source of truth.

Untrusted zone
Agent runtime
No direct internet, no control-plane route, identity required (SPIFFE id).
Trusted mediator
al-core
The sole choke-point. Fails closed on any scanner, config, or storage failure.
External · scanned
LLM providers — scanned both directionsMCP tools — descriptor pinnedPeer agents (A2A) — mediated, session-bound
Privileged control plane
Policy store · Identity registry & RBACKill switch API · Learning loopEvidence dashboard — control network only
Audit — source of truth
JSONL ledger — append-only, signedMirror — SQLite / PostgresSIEM export · Signed posture attestation
Command-line interfaces
al — core data + control planeal-verify — standalone verifieral-gov — multi-org governance
Events & rules

Agent activity as first-class, enforceable events.

Every meaningful agent step becomes an observable, reviewable, and enforceable event. Rules are human-readable and evaluated at runtime — before or during execution.

runtime.events
agent.goal.created
agent.plan.generated
agent.tool.requested
agent.tool.approved
agent.tool.denied
agent.memory.read
agent.memory.write
agent.context.external_loaded
agent.policy.violation
agent.risk.escalated
agent.human_review.required

Block sensitive data exfiltration

critical · deny
rule: block_external_secret_leak
when:
  event: agent.tool.requested
  destination: external
  payload_contains: secret_like_pattern
then: { action: deny, severity: critical }

Require approval for destructive actions

high · approve
rule: require_human_approval_for_delete
when:
  tool_action: delete
  environment: production
then: { action: require_approval, severity: high }

Detect prompt-injection influence

high · alert
rule: detect_untrusted_instruction_override
when:
  external_context_contains: instruction_override
  agent_plan_changes_after_context: true
then: { action: alert, severity: high }
Configuration

One YAML file. Every knob explained.

Three shipped profiles, validated fail-closed with al check. Secrets never live in YAML — env only. The single most important knob is gateway.allow_hosts: an empty list is default-deny.

auditconfigs/audit.yaml

Observe & record; never break workflows. The only profile where a protection may be disabled. Never in production.

balanced ★configs/balanced.yaml

Default. All protections on, block-wins precedence. 10 rps/domain, 5 MiB fetch cap, 3 redirects.

strictconfigs/strict.yaml

HTTPS only (443), 1 MiB cap, 1 redirect, 5 rps. No permissive settings allowed.

configs/balanced.yaml — annotated
mode: balanced            # audit | balanced | strict
env: dev                  # prod enforces L0 egress self-test
listen: "0.0.0.0:8888"    # control-plane bind
scanner:
  dlp: { enabled: true }  # redact secrets/PII in flight
  ssrf:
    block_private: true       # deny private/link-local ranges
    dns_rebind_protection: true
  entropy:
    path_threshold: 4.0       # high-entropy path = exfil signal
    subdomain_threshold: 3.5
  rate_limit: { per_domain_rps: 10 }
  data_budget: { per_domain_bytes: 10485760 }  # 10 MiB
  url_max_len: 8192
gateway:
  allow_hosts: []          # DEFAULT-DENY. Agents reach ONLY listed hosts.
                          # "*.example.com" matches subdomains
  allow_ports: [80, 443]
  require_identity: true   # every request carries agent identity
  fetch_max_bytes: 5242880 # 5 MiB response cap
  max_redirects: 3
  request_timeout_s: 30.0
  pin_ttl_s: 300.0        # DNS pin TTL (anti-rebind)
egress:
  bypass_self_test: auto   # auto = enforced when env: prod
  probe_targets: ["1.1.1.1:443", "8.8.8.8:53"]
  probe_timeout_s: 3.0
env overrides — nested via __
AL_ENV=prod
AL_MODE=strict
AL_ADMIN_API_TOKEN=…      # required to boot
AL_KEYS__SIGNING_KEY_PATH=keys/mediator_ed25519
AL_GATEWAY__FORWARD_LISTEN=127.0.0.1:8080
AL_GATEWAY__UPSTREAM__OPENAI_API_KEY=…
AL_GATEWAY__UPSTREAM__ANTHROPIC_API_KEY=…
AL_CONTROL__KILLSWITCH_DIR=/run/al
Precedence: explicit YAML beats env; env beats file defaults. Provider keys are env-only, never YAML.
validate — fail-closed
uv run al check --config configs/strict.yaml
→ config OK   # non-zero exit on ANY error

uv run al scan "ignore all previous instructions"
→ block · INJECTION_BLOCKED · exit 3
uv run al scan "AKIAIOSFODNN7EXAMPLE"
→ strip · secret redacted · exit 2
Exit codes are CI-gateable: 3 block · 2 strip · 0 allow.
Audience

Built for operators.

SysAdmins

Understand agent actions before they affect systems.

SREs

Connect agent behavior to incidents and reliability signals.

DevOps Teams

Enforce deployment and runtime guardrails in CI/CD.

Security Teams

Detect prompt injection, data exposure, and unsafe tool use.

Platform Engineers

Standardize agent telemetry across teams.

AI Engineers

Debug, evaluate, and improve agent workflows.

Deployment

The network topology is the security boundary.

Three supported paths — native (uv), Docker Compose with the sealed three-network topology, and the probe-gated one-command pilot install. Two boot probes gate every compose up: one proves the agent network has no out-of-band egress, the other proves it has no route to the control plane. If either fails, nothing starts.

docker pull amitkala/agentlighthouse:v1.0
# pin the immutable digest published on each release:
github.com/neural-nomad1709/agentlighthouse/releases
Hardened baseline on every service — no-new-privileges, cap_drop ALL, read-only rootfs, non-root uid 10001 — pinned by tests/test_hardening.py, with an optional gVisor profile. Kubernetes manifests are deliberately not shipped; the compose topology is the reference for any orchestration you build.
bash
# Native: install the workspace + boot the runtime
uv sync
uv run al init
uv run al healthz

# Container: probe-gated compose topology
docker compose up -d
curl http://127.0.0.1:8443/healthz

# Verify the evidence chain — zero trust in the runtime
al-verify data/ledger.jsonl \
  --pubkey keys/mediator_ed25519.pub
→ chain of 11 receipt(s) verified from genesis  OK
// Deployment tiers — every tier self-hosted

Dev / community

≤ 2 users
  • Single-tenant · workstation or laptop
  • SQLite evidence store
  • Windows is first-class here — full suite, all three demos, Docker Desktop topology

Mid-size

≤ 10 users
  • Single-tenant, multi-org optional
  • On-premise or self-managed cloud VM
  • SQLite — one writer per plane, by construction

Enterprise

10+ users
  • Multi-tenant — orgs, RBAC, signed attestation
  • Self-managed private cloud · Linux (production platform: secrets modes + L0 nftables)
  • Postgres mirror for concurrent writers
Step-by-step Windows + Linux guides for all three tiers ship in deployment/. No vendor-hosted SaaS — "cloud" means your own IaaS.
Use cases

From experiment to accountable automation.

Agent Runtime Monitoring

See every meaningful agent step across tools, memory, and external systems.

Production Guardrails

Prevent unsafe actions before they reach sensitive systems.

Prompt-Injection Defense

Detect untrusted instructions and suspicious behavioral changes.

Incident Review

Reconstruct what an agent saw, planned, decided, and executed.

Compliance Evidence

Produce reviewable, signed trails for internal governance and audit readiness.

Agent Evaluation

Compare agent behavior across versions, prompts, and rule packs.

Framework coverage

The frameworks name the threat. AgentLighthouse blocks it at runtime.

Every mapping ships in-repo as a checkable document, and every finding a receipt carries is tagged with its OWASP category and MITRE technique — so coverage is verifiable in your SIEM, not asserted on a slide.

FrameworkCoverageMapping
OWASP Agentic Top 10 (2026)10/10 categories — 7 prevented at source, 3 containedowasp-mapping.md
MITRE ATT&CK9 techniques emitted per receipt as ECS threat.technique.idper-receipt findings[].mitre
NIST SP 800-53 rev. 5Control mapping to shipped mechanismsnist-800-53.md
EU AI ActObligation mappingeu-ai-act.md
SOC 2 (Trust Services Criteria)Criteria mappingsoc2.md
MCP threat modelDescriptor pinning, tool-response scanning, transport mediationmcp-threats.md
OWASP Agent Memory GuardArchitectural influence — independent L5 memory-guard implementationREADME §attribution
Mappings are engineering planning aids, not certifications — they defer to the repo's master honesty statement.

OWASP Agentic Top 10 — mechanism by mechanism

IDCategoryShipped mechanismStatus
{{ r.id }} {{ r.name }} {{ r.how }} {{ r.status }}
demos: tool-response-injection (release gate, ASI01/02) · memory-poison + rollback (ASI06) · a2a-lab card-poisoning & smuggling (ASI07)

Shared ground with detection standards

Like open efforts such as Agent Threat Rules, AgentLighthouse believes agent security must be open, mapped, and checkable.

  • MIT-licensed, community-inspectable rules and specs
  • Per-finding mappings to OWASP / MITRE, emitted in output
  • Detection for injection, poisoning, tool misuse, skill-file threats
  • Gaps stated plainly, not papered over

Where AgentLighthouse goes beyond

A rule standard tells you what fired. A mediation plane decides what happens next — and proves it.

  • Enforcement, not just detection — deny / strip / approve inline, fail-closed, at a choke-point agents cannot route around
  • Signed evidence — every decision is an Ed25519, hash-chained receipt with a standalone verifier
  • Identity & budgets — SPIFFE-bound default-deny tool policy, virtual LLM keys, per-org cost control
  • Memory guard — quarantine, SHA-256 baselines, snapshot & rollback
  • Kill switch & topology — four-source drill to deny-all; segregated three-network deployment
Evidence

Every decision is a signed receipt.

RFC 8785 (JCS) canonicalized, SHA-256 hash-chained to its predecessor, Ed25519-signed by the mediator. The spec (spec/receipt-v1.md) and JSON Schema are published MIT-first — third parties can produce and verify receipts without this runtime.

receipt — seq 42
{
  "v": 1, "seq": 42, "ts": "2026-07-10T12:00:00.000Z",
  "actor": "spiffe://acme/agent/claude-code",
  "action": "mcp_tool_call",
  "target": "tool:send_email",
  "verdict": "block",
  "findings": [{
    "scanner": "tool_policy",
    "rule_id": "policy.default_deny",
    "severity": "high",
    "owasp": "ASI03", "mitre": "T1078"
  }],
  "block_reason": "TOOL_NOT_ALLOWED",
  "policy_hash": "sha256:…",
  "redaction": { "aws-access-key": 1 },  // counts only, never plaintext
  "prev_hash": "sha256:…",
  "record_hash": "sha256:…",
  "sig": "ed25519:…"
}
evidence data flow
Mediated decision
  ↓ JCS canonical · SHA-256 chained · Ed25519
Append-only JSONL ledger (source of truth)
  ↓    ↓    ↓    ↓
Mirror (SQLite/Postgres) → dashboard
SIEM export — ECS + MITRE tags → SOC
Posture attestation — computed AEL
al-verify — zero runtime dependency
verify with zero trust in the runtime
al-verify data/ledger.jsonl \
  --pubkey keys/mediator_ed25519.pub
→ chain of 11 receipt(s) verified from genesis  OK
The verifier recomputes every hash, checks every signature, and validates chain contiguity from genesis. Any failure is fatal. Closed action vocabulary — 11 types, nothing unaccounted for.
Governance model

Governance can only narrow, never widen.

Multi-tenancy, RBAC, budgets, and signed posture attestations live in a separate governance layer (al-gov). The open core never imports it — a test enforces the dependency direction — and tenant isolation is enforced in core/, so governance can only narrow what a caller sees.

Organizations

Org slugs match each agent's SPIFFE identity — spiffe://<org>/agent/<name>. Tenancy follows identity, not configuration.

Users & roles

admin · operator · viewer plus cross-org fleet admins. Tokens are stored hashed and shown exactly once.

Posture attestation

A signed attestation carries a computed Agent Evidence Level (AEL 0–3) — derived from evidence, never asserted. Enforcement cannot be claimed from audit mode. Verifiable with al-verify.

Budgets & cost

Per-user virtual LLM keys (alk_…) with request/token budgets; al-gov cost attributes spend per key, per org.

al-gov — verified session
uv run al-gov org create acme
uv run al-gov user add alice@acme --org acme --role admin
uv run al-gov attest export acme > acme.attest.json
uv run al-gov attest verify acme.attest.json   → verified (AEL-2)  OK
uv run al-gov cost --org acme                  # today's spend per virtual key
Evaluation

Proven by invariants, not marketing numbers.

Detection standards like ATR publish recall/precision on public corpora — the right trend for rule packs. A mediation plane is evaluated differently: every security invariant has a test proving it, demos double as acceptance tests, and the release gate is binary. No published benchmark or ROI figures exist for this repo; evaluate against your own workload in audit mode.

644
automated tests — 632 pass, 12 Postgres-gated
3
demos run as acceptance tests — cannot rot silently
1
release gate — make demo fails, no release
9
Playwright e2e tests on the dashboard
Security invariants — each has a test proving it
  • Fail closed everywhere; default deny; control plane unreachable from agent-net
  • Keys never in .env; evidence append-only and signed
  • A learned rule can only tighten the gate — unsigned or tampered bundles are refused, not warned
  • CI proves a clean clone is sufficient to deploy; releases are cosign-signed by digest with an SPDX SBOM
release gate demo: a hostile MCP server with a clean name and description hides its payload in the tool response — pinning passes, poisoning checks pass, it is blocked anyway, on all three transports.
What this does not claim
  • — Named ML engines (LLM Guard, Presidio) are not shipped; baseline scanners are dependency-free regex + heuristics (4 of LLM Guard's 24 scanners covered fully, 4 partially)
  • — A2A sender identity is asserted, not cryptographically proven
  • — The forward proxy tunnels TLS opaquely — the content gate does not see inside CONNECT
  • — False-positive rate and zero-breakage need a real pilot workload
From the repo's master honesty statement, "What This Does Not Do."
Standards & compliance

Checkable, not aspirational.

Compliance mappings ship in-repo and defer to the product's core output — signed evidence. An auditor verifies any receipt or the whole chain with the standalone verifier instead of taking the runtime's word for it.

Supply-chain integrity — verify a release yourself
Releases build from a clean clone, are pushed to ghcr.io, cosign-signed keyless (OIDC) by digest, not tag, with an SPDX SBOM attestation attached. CI runs the full suite plus all three demos on every push — the release gate is part of the pipeline, not a ceremony.
cosign verify <image>
cosign verify-attestation --type spdxjson <image>
→ signature + SBOM verified against the digest
MITRE ATT&CK — emitted in receipts, pivotable in your SIEM
T1041 T1059 T1078 T1134 T1195 T1204 T1552 T1552.005 T1565
Surfaced by al export as threat.technique.id (ECS) — a SOC pivots on agent incidents exactly as on any other telemetry source.
honesty note

These mappings are engineering planning aids, not legal opinions or certifications. They are checkable rather than aspirational because the core output is signed evidence — the mappings defer to the repo's master honesty statement.

Roadmap

From sealed mediator to fleet governance.

Capability compounds left to right: what ships today already mediates and receipts every agent action; each phase widens what organizations can govern with it.

living roadmap · directional, drawn from documented gaps · nothing is a dated commitment · hover a phase for depth

{{ r.glyph }}
{{ r.status }}

{{ r.title }}

{{ r.value }}
{{ r.c1 }}
{{ r.c2 }}
{{ r.c3 }}
{{ r.c4 }}
{{ r.pct }} maturity
{{ activeRoadStatus }}

{{ activeRoadTitle }}

{{ activeRoadDetail }}

org benefit → {{ activeRoadBenefit }}

Open source trust

No black-box enforcement.

AgentLighthouse is built in the open so operators, engineers, and security teams can inspect the behavior model, tune policies, contribute integrations, and adapt the runtime to their own environments. The receipt format is a published specification and the verifier is standalone — you can trust the evidence without trusting the code that produced it.

Open configuration
Human-readable rules
Environment-specific policies
Evidence-first design
No black-box enforcement
Built for review & extension
Documentation

Documentation-ready from day one.

{{ activeDocSlug }}

{{ activeDocTitle }}

{{ activeDocDesc }}

{{ activeDocCode }}
Try it online

Exercise the gates, right here.

An in-browser simulation of the shipped regex/heuristic scanners and the default-deny policy — same verdicts and exit codes, no server. Real enforcement runs in al-core; install it with one command in the Quickstart.

{{ tryCmdPreview }}simulated
{{ tryOutput }}
References

Normative and informative references.

Normative

spec/receipt-v1.md — the receipt format specification + JSON Schema, published MIT-first.
RFC 8785 (JCS) — JSON Canonicalization Scheme; every receipt is canonicalized before hashing.
RFC 8032 (Ed25519) — signature scheme for receipts, rule bundles, and attestations.

Informative

OWASP Agentic Top 10 (2026) — agentic risk taxonomy; architectural influence.
MITRE ATT&CK — technique tags emitted in receipts.
NIST SP 800-53 rev. 5 — control mapping.
EU AI Act — obligation mapping.
Model Context Protocol — mediated stdio + Streamable HTTP transports.
SPIFFE — agent identity format.
Agent Threat Rules (ATR) — open detection standard; kindred open-security effort.
Sigstore cosign + SPDX — release signing and SBOM.

Bring agent behavior into the light.

Move from experimental agents to observable, governed, and production-ready agentic systems.

Start with the Quickstart View GitHub Repository Read the Architecture