Catalog PyPI
PACKAGE EXPLORERView in registry

agent-audit-logger

PyPI

Lightweight Python middleware that wraps any agent framework and logs every tool call. SOC 2 audit trail for small teams.

Versions collected1
Direct dependencies3From release 0.1.0
Last observed20 Oct, 21:30 UTC

README

Version 0.1.0 documentation

View the live site

Agent Audit Logger

Every agent call logged. SOC 2 ready.

A lightweight Python middleware that wraps any agent framework (LangChain, CrewAI, AutoGen, n8n, Hermes) and logs every tool call — what was invoked, what data passed through, what changed. Output as JSON to file or Google Sheets. Exportable PDF reports for compliance.

Target: startups that need SOC 2 prep but can't afford $10K/mo enterprise stacks.

Features

  • Framework-agnostic middleware — wrap any Python callable or agent tool function
  • JSON log rotation — daily rolling files with optional gzip compression
  • Google Sheets export — real-time audit trail in a shared sheet
  • PDF compliance reports — cover page, executive summary, detailed entry table, checksums
  • Tamper-evident — each entry includes a SHA-256 checksum
  • Session tracking — correlate all calls from a single agent run

Quick Start

pip install agent-audit-logger

Basic usage

from agent_audit_logger import AuditLogger, AuditEntry, AuditMiddleware
from agent_audit_logger.exporters.json_logger import JsonLogExporter

# Create logger and add JSON output
logger = AuditLogger()
logger.add_exporter(JsonLogExporter("audit_logs/"))

# Create middleware
middleware = AuditMiddleware(logger, agent_name="my_agent")

# Use as a decorator
@middleware(tool_name="search_web", tags=["search"])
def search_web(query: str) -> str:
    return f"Results for {query}"

# Or wrap existing functions
wrapped_func = middleware.wrap(
    my_existing_tool,
    agent_name="worker",
    tool_name="my_tool",
)

# Log manually
entry = AuditEntry(
    agent_name="my_agent",
    tool_name="web_search",
    tool_input={"query": "SOC 2 compliance"},
    tool_output="Results...",
    duration_ms=1200.5,
)
logger.log(entry)

LangChain integration

from langchain.tools import Tool
from agent_audit_logger import AuditLogger, AuditMiddleware

logger = AuditLogger()
logger.add_exporter(JsonLogExporter("audit_logs/"))

middleware = AuditMiddleware(logger, agent_name="langchain-agent")
wrapped_tools = AuditMiddleware.wrap_langchain_tools(middleware, tools_list)

CrewAI integration

middleware = AuditMiddleware(logger, agent_name="crewai-agent")
AuditMiddleware.wrap_crewai_tools(middleware, crew_tools_list)

Generate PDF report

report_path = logger.generate_report(
    "compliance_report.pdf",
    title="Q3 SOC 2 Audit Log",
    date_range=("2025-01-01", "2025-03-31"),
)

Log rotation

# Manual rotation (happens automatically on file size threshold)
summary = logger.rotate(archive=True)

Configuration

SettingDefaultDescription
AGENT_AUDIT_LOG_DIRaudit_logs/Directory for JSON log files
AGENT_AUDIT_MAX_FILE_MB10Rotate when log file exceeds this size
AGENT_AUDIT_COMPRESSFalseGzip old rotated files
GOOGLE_SERVICE_ACCOUNT_PATH~/.hermes/secrets/client_secret.jsonPath to Google service account JSON

Pricing

  • $49/mo — Up to 3 agents, 10K logs/month
  • $99/mo — Unlimited agents, 50K logs/month, PDF exports

License

MIT

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.1.027 May 20263

Package advisories

0
No matching advisories collected

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

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 21:30 UTC

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

Record identity

package:fb9b7b019efbc08e31014422d2b3332c2b7b3c769d92efe5263fe06a59bbd069