AI agent accountability

Every AI agent action, logged and hash-chained.

Tamper one row and the chain breaks visibly. An autonomous tribunal audits the log and exports a regulator-ready evidence pack.

Built withLangGraphClaudeFastAPI
agent_log.chain
chain: INTACT
Click an event to simulate tampering.
The problem

The EU AI Act asks for proof, not just logs.

€35M

Maximum fine for non-compliance with EU AI Act obligations, or 7% of global revenue.

2026

Article 50 transparency obligations (chatbot and synthetic-media disclosure) take effect. Full high-risk obligations are delayed to December 2027 under the Digital Omnibus.

Art.15

Robustness and cybersecurity requirements your agent logs must now demonstrate.

How it works

Four steps from first action to court-ready evidence.

01

Connect

Point Claude Desktop or Claude Code at the TELUVANE MCP server with one config file, no code in the agent. Any other agent can POST to /events with an API key.

{ "mcpServers": { "teluvane": { "url": "https://api.teluvane.com/mcp" } } }
02

Recorder

Every agent action, LLM call, tool invocation, and result is appended to a SHA-256 hash-chained log. Any silent edit breaks the chain immediately.

event #4471 · tool_call action: send_email hash: 9f2a1c...e08b appended, chain: INTACT
03

Tribunal

An autonomous multi-agent panel audits the full log against a structured policy pack, EU AI Act, ISO 42001, NIST AI RMF, or SOC 2, citing evidence, article references, and a confidence score for each finding.

finding: EU AI Act Art.15 confidence: 0.94 "Model card missing robustness test results for event #4210"
04

Evidence Pack

One click exports an auditor-ready report: incident summary, violation table, full action log, and chain-integrity status, formatted for regulators.

evidence_pack_2026-08-26.pdf 42 events · 1 finding chain: INTACT · exported
Proof

Every read re-verifies the whole chain, not just the last row.

Each event stores the hash of the one before it. Change a single byte in event #14 and every event after it, up to #4471, fails verification the next time anyone opens the log.

verify(chain) → 4471/4471 events valid · INTACT
Security

We're early-stage. Here's what's already true.

No SOC 2 report yet, no formal certification. Rather than a badge we haven't earned, here's how the system is actually built.

Org isolation is enforced in code, not just convention.

Every database query is scoped to an organization at the data-access layer. A query missing that scope throws before it runs, rather than depending on every developer remembering to filter correctly.

query.where(org_id=current_org.id) # required, or the query throws

Two separate credential paths.

Dashboard logins (Supabase, JWT verified against Supabase's published keys) and agent event ingestion (per-org API keys) never share credentials. A leaked dashboard session can't be used to forge log entries, and vice versa.

verify_jwt(session) != verify_api_key(org_key) # disjoint paths

The hash chain detects tampering, it doesn't prevent it.

A privileged database user can still edit a stored row. What the chain guarantees is that the edit becomes visible the next time anyone verifies the log, instead of staying silent.

sha256(event[i-1].hash + event[i].payload) == event[i].hash
Pricing

Scale with confidence.

Most teams pick this
Pro
$19.99/mo

Managed cloud. Everything you need for a production AI team, without running your own infrastructure.

  • Up to 10 agents managed
  • Hosted dashboard and real-time log
  • Automated tribunal runs on schedule
  • EU AI Act, ISO 42001, NIST AI RMF, and SOC 2 policy packs
  • PDF + HTML evidence pack exports
  • Custom policy rules
  • Priority email support
Get started free
Enterprise
Custom

For regulated industries, large deployments, on-prem needs.

  • Unlimited agents
  • SSO / SAML integration
  • On-premises deployment
  • Custom policy packs and mapping
Contact us