Skip to main content

nobulex

Status: This package is a prior Nobulex direction and is maintained for compatibility. Current work is in the Nobulex registry. Version 0.1.2 corrects the claims published with 0.1.1. It does not add a claim that receipts prove real-world events.

Signed claims about AI agent actions.

Credit scores exist for people. They don't exist for machines. Until now.

Install

pip install nobulex

Quick Start

One line to add receipts to any function:

from nobulex import track

@track(agent_id="my-agent")
def send_email(to, subject, body):
    return smtp.send(to, subject, body)

# Every decorated call produces a signed receipt. Exceptions produce DENY receipts.
send_email("user@example.com", "Hello", "Report attached")
print(send_email.receipts)     # tamper-evident
print(send_email.trust_score)  # accumulates over time

Or use the Agent API directly:

from nobulex import Agent

agent = Agent("my-agent")
receipt = agent.act("send_email", scope="user@example.com")
assert receipt.verify()  # Ed25519 signature check
print(receipt.action_ref)  # SHA-256 hash of the action

# trust score builds with every verified action
print(agent.trust_score)  # 13.86

# Denied actions prove the system caught violations
agent.deny("delete_database", scope="production")
print(agent.trust_score)  # 15.22

What is this?

Every time an AI agent does something, Nobulex generates a cryptographic receipt:

  • WHO acted (agent_id)
  • WHAT they did (action_type)
  • ON WHAT (scope)
  • WHEN (timestamp_ms)
  • WHETHER it was allowed (verdict)
  • SIGNED CLAIM about the action (Ed25519 signature + SHA-256 hash)

Receipts are tamper evident, not tamper proof. Editing one after the fact breaks the hash chain, so the edit is detectable by anyone holding a later receipt. That is a different and weaker property than being unfakeable, and the difference matters: an operator who chooses what to record can omit an action, misstate an outcome, or sign an inaccurate account at the moment it happens, and every cryptographic property here still holds. A signature proves who made a claim. It does not prove the claim was true.

What this does give you is that an independent verifier can check the signature without running the original agent and detect changes to the signed content.

Over time, receipts build into trust score - a portable trust score that follows the agent across deployments. You can copy an agent's code, but you can't copy its credit score. The copy starts at zero.

Use Cases

  • Audit trails: EU AI Act Article 12 requires automatic event logging for high-risk systems. It does not require cryptographic signatures or independently verifiable receipts. Signed receipts address a separate need: detecting later changes when evidence must survive a dispute.
  • Agent-to-agent trust: Agents verify each other's track records before collaborating
  • Disputes: Records a counterparty can check themselves, for financial, healthcare and legal agents
  • Accountability: When something goes wrong, receipts show what was recorded at the time, and show whether that record has been altered since

API

Agent

from nobulex import Agent

agent = Agent("my-agent")          # Create agent identity
receipt = agent.act("tool_call",   # Record an action
                    scope="api.stripe.com")
agent.deny("unauthorized_action",  # Record a caught violation
           scope="admin_panel")
print(agent.trust_score)           # Get trust score score
print(agent.receipts)              # Get all receipts

Receipt

from nobulex import Receipt, KeyPair

keys = KeyPair()
receipt = Receipt.create(
    agent_id="agent-1",
    action_type="send_email",
    scope="user@example.com",
    keys=keys,
)
assert receipt.verify()            # Verify signature
print(receipt.action_ref)          # Content-addressable hash
print(receipt.to_json())           # JSON serialization

Framework Examples

Working examples for all 6 supported frameworks (each runs standalone):

python examples/pydantic_ai_receipts.py   # PydanticAI
python examples/crewai_receipts.py        # CrewAI
python examples/langchain_receipts.py     # LangChain
python examples/google_adk_receipts.py    # Google ADK
python examples/haystack_receipts.py      # Haystack
python examples/llamaindex_receipts.py    # LlamaIndex

Verify API

The SDK is free. The hosted verification layer is the product.

curl -X POST https://api.nobulex.com/v1/verify \
  -d '{"agent_id":"my-agent","action_type":"tool:search",...}'

Pricing | API docs | Methodology

License

MIT - Arian Gogani (@nobulexlabs)

Metadata

Release files for nobulex 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nobulex 0.1.2
File Size Uploaded
nobulex-0.1.2.tar.gz 27.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nobulex 0.1.2
File Interpreter ABI Platform
nobulex-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 61.2 kB

Release files / nobulex-0.1.2.tar.gz

Download URL nobulex-0.1.2.tar.gz
Size 27.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7a9123341849fdc922262f5ee5fcebed5b349ab4eda47ab4c6af27c437e7eb36
BLAKE2b-256 checksum
How to use checksums
d68e7c3f8baceb0841b1732504e78859eba2a29a0d7ea50a7b9af9bd07a77626
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release files / nobulex-0.1.2-py3-none-any.whl

Download URL nobulex-0.1.2-py3-none-any.whl
Size 34.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d1cac3d970c1146dd5ffe9e0cb0cb95b9d1bcceb893b81856280d9ae93584c75
BLAKE2b-256 checksum
How to use checksums
decdeee1e3e1dc6805ecd79cb3f4ac199068e712403e3ac890dfed080ca31830
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.3

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page