Skip to main content

Local-first, append-only trace vault for AI agents with cryptographic integrity

Project description

Axiom Trace

Local-first, append-only trace vault for AI agents with cryptographic integrity and hybrid search.

Python 3.9+ PyPI version License: MIT

Installation

pip install axiom-trace

For development:

git clone https://github.com/your-username/axiom-trace.git
cd axiom-trace
pip install -e ".[dev]"

Quick Start

Python SDK

from axiom_trace import AxiomTrace

# Create or open a vault
with AxiomTrace("./my_vault") as trace:
    # Record an event
    frame_id = trace.record({
        "session_id": "550e8400-e29b-41d4-a716-446655440000",
        "event_type": "thought",
        "actor": {"type": "agent", "id": "my-agent"},
        "content": {
            "text": "Analyzing user request...",
            "rationale_summary": "Breaking down the problem"
        },
        "metadata": {"model_name": "gpt-4"}
    })
    
    # Query the vault
    results = trace.query("user request", limit=5)
    
    # Verify integrity
    status = trace.verify_integrity()
    print(f"Integrity OK: {status['ok']}")

With Memvid Cloud (Optional)

For enhanced semantic search, create a .env file:

# Copy the example and add your key
cp .env.example .env

Then edit .env:

MEMVID_API_KEY=your-api-key-here

Or pass it directly in code:

trace = AxiomTrace("./my_vault", memvid_api_key="your-api-key")

Observer Pattern

from axiom_trace import AxiomTrace, session, observe, set_global_trace

trace = AxiomTrace("./my_vault")
set_global_trace(trace)

# Context manager for sessions
with session(session_id="my-session") as obs:
    obs.record_user_input("What is the weather?")
    obs.record_thought("Need to call weather API", "Determining tool to use")
    obs.record_tool_call("weather_api", {"city": "NYC"})
    obs.record_tool_output("weather_api", {"temp": 72, "condition": "sunny"})
    obs.record_final_result("The weather in NYC is 72°F and sunny!")

# Decorator for automatic tracing
@observe(session_id="my-session")
def search_database(query: str) -> list:
    return ["result1", "result2"]

CLI

# Record an event from JSON file
axiom record --vault ./my_vault --event event.json

# Query the vault
axiom query --vault ./my_vault --prompt "weather" --limit 5

# Export a session to Markdown
axiom export --vault ./my_vault --session <uuid> --out session.md

# Verify vault integrity
axiom verify --vault ./my_vault

# Show statistics
axiom stats --vault ./my_vault

Event Types

Type Description
thought Agent reasoning (requires rationale_summary)
tool_call Tool invocation (requires tool_name in metadata)
tool_output Tool result (requires tool_name in metadata)
user_input User message
final_result Final response
system_event System notifications
error Error with stack trace

Vault Structure

my_vault/
├── vault.manifest.json   # Metadata + head hash
├── vault.lock            # Write lock
├── vault.mv2             # Memvid index (optional)
├── frames.jsonl          # Append-only frame storage
└── axiom.log             # Internal logs

Integrity Verification

Axiom Trace uses SHA-256 hash chains for tamper detection:

result = trace.verify_integrity()
# {
#     "ok": True,
#     "checked_frames": 150,
#     "head_hash": "abc123...",
#     "error": None
# }

Detects:

  • Modified frame content
  • Deleted frames
  • Reordered frames
  • Manifest tampering

Environment Variables

Variable Description
MEMVID_API_KEY API key for Memvid cloud features (enhanced semantic search)

Publishing (for maintainers)

The package is automatically published to PyPI when you create a GitHub release:

  1. Go to GitHub → Releases → "Create a new release"
  2. Tag with version (e.g., v1.1.0)
  3. Publish release

The GitHub Actions workflow handles building and uploading to PyPI.

License

MIT

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

axiom_trace-1.1.1.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

axiom_trace-1.1.1-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file axiom_trace-1.1.1.tar.gz.

File metadata

  • Download URL: axiom_trace-1.1.1.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for axiom_trace-1.1.1.tar.gz
Algorithm Hash digest
SHA256 8b935c2a49659276f017254b30442dd793a7b3ecfefa4b6c81c62aec0c0ff89c
MD5 c20987ca73f769d4c333a54622d53420
BLAKE2b-256 b5a0d22bc6053924893d31ba41bdc9b8991bc575bea9299d61382b94b545302e

See more details on using hashes here.

Provenance

The following attestation bundles were made for axiom_trace-1.1.1.tar.gz:

Publisher: publish.yml on atharvayeola/axiom-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file axiom_trace-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: axiom_trace-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for axiom_trace-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 252fc2edb72d9adcd51bc3b1858915b0e3600ee5390ae9d324528825815bfea2
MD5 4b8fba90e813d05f1b32026dfcdbc12d
BLAKE2b-256 cc786987e4f5cdf411c4d62e3cb4cad2800e8a96aa4876507ec01025799aa40a

See more details on using hashes here.

Provenance

The following attestation bundles were made for axiom_trace-1.1.1-py3-none-any.whl:

Publisher: publish.yml on atharvayeola/axiom-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page