Cryptographic audit trails for AI agents
Project description
Veralog Python SDK
Cryptographic audit trails for AI agents. Add one line to your agent, get a tamper-proof signed log of every action.
Installation
pip install veralog
Quick start
import veralog
veralog.configure(api_key="vrlg_...")
result = veralog.record(
agent_id="sales-bot",
action="send_proposal",
payload={"client": "acme-corp", "deal_value": 50000},
status="success",
)
print(result.verify_url)
Get an API key
import veralog
account = veralog.register(email="you@yourcompany.com")
print(account["api_key"])
Or register at www.vrlg.tech.
Configuration
# Explicit
veralog.configure(api_key="vrlg_...")
# Or via environment variable
export VERALOG_API_KEY="vrlg_..."
Record an event
result = veralog.record(
agent_id="sales-bot", # required: your agent's ID
action="send_proposal", # required: what it did
payload={"client": "acme"}, # required: arbitrary dict
status="success", # success | warning | error | crash | timeout | blocked | cancelled
severity="info", # debug | info | warning | error | critical
flags=[], # loop_detected | policy_violation | data_exposure | ...
trace_id="trace-abc-123", # optional: correlation ID
tool_name="gmail_api", # optional: tool used
)
print(result.event_id) # UUID
print(result.verify_url) # https://www.vrlg.tech/verify/{id}/page
print(result.events_used) # running total
Query events
events = veralog.get_events(
status="blocked",
agent_id="sales-bot",
since="2026-06-01T00:00:00",
limit=50,
)
print(events["total"])
print(events["events"])
Export all events
data = veralog.export()
# Returns dict with all events, signatures, and public keys
Verify an event
event = veralog.verify("8b466b96-8663-4742-a6a6-8964ce69e5d4")
print(event["signature"])
print(event["public_key"])
LangChain example
from langchain.agents import AgentExecutor
import veralog
veralog.configure(api_key="vrlg_...")
def run_agent_with_audit(agent_executor, input_text):
try:
result = agent_executor.invoke({"input": input_text})
veralog.record(
agent_id="langchain-agent",
action="invoke",
payload={"input": input_text, "output": result["output"][:200]},
status="success",
)
return result
except Exception as e:
veralog.record(
agent_id="langchain-agent",
action="invoke",
payload={"input": input_text, "error": str(e)},
status="error",
severity="error",
)
raise
CrewAI example
from crewai import Agent, Task, Crew
import veralog
veralog.configure(api_key="vrlg_...")
class AuditedCrew(Crew):
def kickoff(self, inputs=None):
result = super().kickoff(inputs=inputs)
veralog.record(
agent_id="crewai-crew",
action="kickoff",
payload={"inputs": inputs, "result": str(result)[:200]},
status="success",
)
return result
Independent verification
Every event is signed with Ed25519. You can verify any event without Veralog:
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat
import binascii
event = veralog.verify("your-event-id")
public_key = Ed25519PublicKey.from_public_bytes(
binascii.unhexlify(event["public_key"])
)
message = f"{event['event_id']}:{event['agent_id']}:{event['action']}:{event['timestamp']}".encode()
signature = binascii.unhexlify(event["signature"])
public_key.verify(signature, message)
print("Signature valid — event was not tampered with")
Links
- Website: www.vrlg.tech
- API docs: www.vrlg.tech/docs
- Contact: liquidcrystalcore@gmail.com
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
veralog-0.1.2.tar.gz
(6.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file veralog-0.1.2.tar.gz.
File metadata
- Download URL: veralog-0.1.2.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78ccad80016dff7d6302124cdc43fca4df326d0de844f9bfbb2945689406d13f
|
|
| MD5 |
46012d6373c747aaa88195eb3e2aa7bd
|
|
| BLAKE2b-256 |
efa6969cac4ca5ebaa2a301436e335a3e5f6870f27743f4a3626e546426d3841
|
File details
Details for the file veralog-0.1.2-py3-none-any.whl.
File metadata
- Download URL: veralog-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
369a0975e976957424e1c161a86b327064517e2c9071eedcae564483b51e271d
|
|
| MD5 |
fea0d3fd79ad155caac9c2c2415fc453
|
|
| BLAKE2b-256 |
92a63133622912b0d9f8f4075c7d667e1cf01e00738ec64817e1073d8a177669
|