nobulex
Credit scores for AI agents. Every action builds a verifiable track record.
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 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)
- PROOF it happened (Ed25519 signature + SHA-256 hash)
Receipts are tamper-proof. You can't edit them after the fact. You can't fake them. An independent verifier can check any receipt without trusting the agent.
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: Prove what your agent did to regulators (EU AI Act Article 12)
- Agent-to-agent trust: Agents verify each other's track records before collaborating
- Compliance: Tamper-evident records for financial, healthcare, and legal agents
- Accountability: When something goes wrong, receipts prove what happened
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.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nobulex-0.1.1.tar.gz | 26.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nobulex-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.7 kB
Release files / nobulex-0.1.1.tar.gz
| Download URL | nobulex-0.1.1.tar.gz |
|---|---|
| Size | 26.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8b142c77817e989928e6c53d0824d89f66e9a24d781a2de6414cfd7a1773e4f0
|
|
BLAKE2b-256 checksum How to use checksums |
07a5525660ece955a9f3fd1acd37b010e515ae9bab400a0ac2ef7a40e691d8d2
|
| 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 9, 2026.
Transparency logRelease files / nobulex-0.1.1-py3-none-any.whl
| Download URL | nobulex-0.1.1-py3-none-any.whl |
|---|---|
| Size | 33.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac9d0c301074b605f7eaeabf48a69dde4861f3bc68d6200899d21048e707d0fa
|
|
BLAKE2b-256 checksum How to use checksums |
a7de0d500096a35592ea1b18fe8dbeb7aafc3988359d8e793270f77e248956eb
|
| 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 9, 2026.
Transparency log