Catalog PyPI
PACKAGE EXPLORERView in registry

aevs

PyPI

Agent Execution Verification System — transparent audit SDK for AI agents

agentsaiauditlangchainmcpverification
Versions collected1
Direct dependencies4From release 0.2.2
Last observed20 Oct, 20:58 UTC

README

Version 0.2.2 documentation

AEVS SDK

AEVS SDK

Agent Execution Verification System — transparent audit SDK for AI agents

PyPI Python License

Documentation · Explorer · Examples · Get Credentials


Intercepts tool calls from supported frameworks, builds tamper-evident receipts (HMAC-signed, hash-chained), and sends them to the AEVS backend. Zero changes to your agent code.

Installation

pip install aevs

With framework extras:

pip install aevs[langchain]   # LangChain / LangGraph
pip install aevs[mcp]         # Model Context Protocol
FrameworkExtraMin version
LangChain / LangGraphaevs[langchain]langchain-core >= 0.2
MCPaevs[mcp]mcp >= 1.20

Quick Start

import aevs
from langchain_core.tools import tool

@tool
def search(query: str) -> str:
    """Search the web."""
    return f"Results for: {query}"

aevs.configure(
    api_key="aevs_sk_<key_id>_<hex_secret>",
    agent_id="<your-agent-uuid>",
)
aevs.enable()

result = search.invoke({"query": "AI news"})

refs = aevs.get_reference_ids(clear=True)
print(refs)
# [{"seq": 1, "tool_name": "search", "reference_id": "abc-123-...", ...}]

aevs.flush()
aevs.disable()

Credentials can also be set via AEVS_API_KEY / AEVS_AGENT_ID environment variables. If missing, the SDK logs a warning and runs in no-op mode — your agent keeps working, receipts just aren't recorded.

How It Works

Agent (LangChain / MCP)
  │
  ▼  tool call intercepted
ReceiptBuilder  ──▶  HMAC sign + hash chain
  │
  ▼
LocalBuffer (SQLite, encrypted at rest)
  │
  ▼  background drainer
AEVSClient  ──▶  POST /v1/receipts  ──▶  AEVS Backend
  1. aevs.enable() patches your framework's tool dispatch
  2. Every tool call is intercepted and a signed receipt is created
  3. Receipts are buffered locally (encrypted, crash-safe)
  4. A background thread flushes receipts to the AEVS backend
  5. Verify any receipt using its reference_id

API Overview

aevs.configure(api_key=..., **options)   # set configuration
aevs.enable()                            # start intercepting tool calls
aevs.disable()                           # stop and restore originals
aevs.flush()                             # send buffered receipts now
aevs.get_session_id()                    # current session UUID
aevs.get_reference_ids(clear=True)       # all captured reference IDs
aevs.get_reference_id(tool_call_id)      # lookup single reference ID
aevs.is_healthy()                        # buffer write health check

See the full API reference for details.

Receipt Visibility

Control what data is included in each receipt:

ModeInputs & outputsUse case
"public"IncludedFull audit — verifiers can inspect everything
"private"IncludedSigned and submitted, but restricted access (default)
"proof_only"StrippedProve a tool call happened without revealing data
aevs.configure(api_key=..., agent_id=..., receipt_visibility="proof_only")

Examples

ScriptWhat it teachesRequirements
01_local_quickstart.pyMinimal SDK loop — invoke a tool, see AEVS capture itAEVS credentials only
02_openai_agent.pyLangChain agent with OpenAIOPENAI_API_KEY + AEVS
03_asi_agent.pySame agent with ASI:One — provider-agnosticASI_API_KEY + AEVS

See examples/README.md for setup instructions.

Documentation

PageDescription
Getting StartedInstall, configure, and capture your first receipt
Core ConceptsReceipts, hash chains, sessions, invocation tracking
ConfigurationAll configuration options with defaults
LangChain IntegrationLangChain / LangGraph guide
MCP IntegrationModel Context Protocol guide
Receipt VerificationVisibility modes and verification
Security & PrivacyThreat model and data handling
API ReferenceComplete function reference
TroubleshootingCommon issues and fixes

Data & Privacy

  • Receipts are buffered locally in an encrypted SQLite database
  • Submitted to the AEVS backend over HTTPS
  • Use receipt_visibility="proof_only" to prevent inputs/outputs from leaving the host
  • AEVS is tamper-evident, not tamper-proof — it detects modification after the fact

Development

git clone https://github.com/fetchai/AEVS-sdk.git && cd AEVS-sdk
make install        # poetry install --all-extras
make check          # lint + typecheck + tests (the CI gate)
make test           # run tests
make test-cov       # tests with coverage
make lint           # ruff check
make format         # ruff format + auto-fix
make typecheck      # mypy --strict
make build          # build sdist + wheel

Contributing

See CONTRIBUTING.md for the full guide.

Security

Please do not open a public issue for security problems. See SECURITY.md for the disclosure process.

License

Apache 2.0

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.2.29 Jun 20264

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
fetchai/aevs-sdk

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:58 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:e5211fa0a9997800807c5fe08353b4700c4354ca0a05d73e3f2dc7d2eaaf339e