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.3

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.3
File Size Uploaded
nobulex-0.1.3.tar.gz 27.3 kB Details

Built distribution (wheel)

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

Total release size: 61.3 kB

Release files / nobulex-0.1.3.tar.gz

Download URL nobulex-0.1.3.tar.gz
Size 27.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ee2050939e5e18a6fb81c44a3f0fc2c8bb9c84cdf2c2481fa47298e95dde3172
BLAKE2b-256 checksum
How to use checksums
b140fe5b08580758df70345f68a5871517ae3870b65090bb63f3e4df6deca9bf
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.3-py3-none-any.whl

Download URL nobulex-0.1.3-py3-none-any.whl
Size 34.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc773b71690f4973fb9a5ad57c2f62cd487545158d0ccf33f44df1f9c21b7b26
BLAKE2b-256 checksum
How to use checksums
750f9810d9459ec688f9b805899928ceb380eb9c3f439edf39d3458e808d94fe
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

This release

0.1.3 This release

2 release files

0.1.2

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