Why Nobulex
Governance decides what an AI agent should do. Evidence proves what it actually did. Almost the entire agent stack ships the first and skips the second. Nobulex is the evidence layer.
The gap
Every serious vendor now ships governance for AI agents: policies, guardrails, approval gates, permission scopes. All of it decides what an agent is allowed to do before it acts. None of it answers the question that matters after something goes wrong: what did the agent actually do, under what authority, and can you prove it to someone who wasn't there and doesn't trust you?
That is not a governance question. It is an evidence question, and evidence is what's missing.
Why logs aren't enough
Most agent stacks already log activity. The problem is where the log lives: in the operator's own infrastructure, editable and deletable by the operator. Anyone reviewing it has to trust the exact party whose behavior they are reviewing. For software that moves money, reads records, or calls tools on your behalf, that is the wrong trust model — and it does not survive an adversarial audit, an incident review, or a regulator who assumes the log could have been rewritten.
What evidence actually requires
An account you can trust has three properties:
- Tamper-evident — altering or deleting a record is detectable after the fact.
- Independently verifiable — a third party can confirm it with no access to the operator's systems and no trust in the operator.
- Bound to authority — each action is tied to what the agent was permitted to do, so out-of-scope actions stand out instead of hiding in the noise.
Signatures give you the first two; hash-chaining makes deletion show up as a gap; pairing each action with an admission record gives you the third.
How Nobulex does it
Every agent action produces a pair of signed receipts — an admission receipt (intent, authority, scope, policy version) before it runs, and an outcome receipt (what happened) after, linked by a content-derived hash called action_ref. Both are canonicalized with JCS (RFC 8785) and signed with Ed25519, so any third party can verify any receipt offline with just the receipt and a public key. No API call, no operator trust, ~13,700 receipts/sec on a single core.
from nobulex.agent import Agent
agent = Agent("billing-bot")
receipt = agent.act("charge", scope="invoice:042")
assert receipt.verify() # recomputes action_ref, checks the signature, offline
Change one byte of a receipt and verification fails. That is the whole guarantee.
Not just our idea
This pattern — the bilateral receipt pattern — is normative guidance in the OWASP Agentic Skills Top 10 (AST09), and Nobulex is its open-source reference implementation. The same records map onto EU AI Act Article 12 record-keeping (enforcement from December 2, 2027). Evidence is becoming a requirement, not a nice-to-have.
Get started
pip install nobulex
# or
npm install @nobulex/core
Nobulex is open source (MIT). Try the live tamper demo, read the audit-trail guide, or browse the code and spec.
