Skip to main content

AEP-native execution layer for AI agents - spans, costs, budget enforcement

Project description

aceteam-aep

Trust & safety infrastructure for AI agents. Add cost tracking, safety detection, and enforcement to any LLM-powered tool — zero code changes required.

Installation

pip install aceteam-aep[all]               # Everything (recommended)
pip install aceteam-aep[safety,proxy]      # Safety detectors + proxy
pip install aceteam-aep                    # Core only (cost tracking + regex safety)

Quick Start — Make OpenClaw (or any agent) Safe

No code changes. Just run the proxy and point your agent at it:

# Terminal 1: Start the AEP safety proxy
aceteam-aep proxy --port 8080

# Terminal 2: Run OpenClaw through the proxy
export OPENAI_BASE_URL=http://localhost:8080/v1
export OPENAI_API_KEY=sk-your-key
openclaw run "analyze these financial statements"

Open http://localhost:8080/aep/ — the dashboard shows every LLM call flowing through in real-time: cost, safety signals, and enforcement decisions.

The proxy intercepts both directions:

  • Incoming requests — blocks dangerous prompts before they reach the API
  • Outgoing responses — blocks PII, toxic content, and cost anomalies before the agent sees them

Works with OpenClaw, LangChain, CrewAI, curl, or any tool that calls the OpenAI API.

Python SDK — Wrap Your Existing Client

import openai
from aceteam_aep import wrap

client = wrap(openai.OpenAI())

# Use exactly as before — AEP intercepts transparently
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
)

# AEP tracks everything
print(client.aep.cost_usd)            # $0.000150
print(client.aep.enforcement.action)   # "pass"
print(client.aep.safety_signals)       # []
client.aep.print_summary()             # Colored CLI output

Works with OpenAI, Anthropic, and any OpenAI-compatible client. Sync and async.

import anthropic
from aceteam_aep import wrap

client = wrap(anthropic.Anthropic())
# Same API — client.aep.cost_usd, client.aep.safety_signals, etc.

Safety Signals

Every LLM call is evaluated by pluggable safety detectors:

Detector What It Catches Model
PII SSN, email, phone, credit cards in output iiiorg/piiranha-v1-detect-personal-information (~110M)
Content Safety Toxic, harmful, or unsafe content s-nlp/roberta_toxicity_classifier (~125M)
Cost Anomaly Spend spikes >5x session average Statistical (no model)

Models lazy-load on first use, run on CPU. Falls back to regex if transformers not installed.

Enforcement: PASS / FLAG / BLOCK

Every call produces an enforcement decision based on signal severity:

  • PASS — No signals or low severity. Safe to proceed.
  • FLAG — Medium severity. Route to human review.
  • BLOCK — High severity (PII, toxic content). Prevent delivery.
client = wrap(openai.OpenAI())
response = client.chat.completions.create(...)

match client.aep.enforcement.action:
    case "pass":
        return response
    case "flag":
        queue_for_review(response)
    case "block":
        return reject(client.aep.enforcement.reason)

Custom Detectors

from aceteam_aep import wrap
from aceteam_aep.safety.base import SafetySignal

class MyDetector:
    name = "my_detector"

    def check(self, *, input_text, output_text, call_id, **kwargs):
        if "secret" in output_text.lower():
            return [SafetySignal(
                signal_type="data_leak",
                severity="high",
                call_id=call_id,
                detail="Potential secret in output",
            )]
        return []

client = wrap(openai.OpenAI(), detectors=[MyDetector()])

Dashboard

client.aep.serve_dashboard()  # http://localhost:8899

Dark-themed local web UI showing cost, safety status, signal timeline, and call history. Auto-refreshes every 2 seconds.

CLI Output

client.aep.print_summary()
──────────────────────────────────────────────────
  AEP Session Summary
──────────────────────────────────────────────────
  Calls:  5
  Cost:   $0.004200
  Safety: PASS
──────────────────────────────────────────────────

Agent Loop (Advanced)

For building agents from scratch with full AEP compliance:

from aceteam_aep import create_client, run_agent_loop, ChatMessage, tool

client = create_client("gpt-4o", api_key="sk-...")

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

result = await run_agent_loop(
    client,
    [ChatMessage(role="user", content="Search for AEP protocol")],
    tools=[search],
    system_prompt="You are a helpful assistant.",
)

Workshop Guide

Step-by-step setup in 5 minutes — from install to safety signals firing:

docs/workshop-guide.md

Covers: proxy setup, routing agents (Python/OpenClaw/curl), triggering safety signals, governance headers, custom detectors. Works for workshops, onboarding, or self-guided evaluation.

Providers

  • OpenAI (GPT-4o, GPT-5, o1, o3)
  • Anthropic (Claude Opus, Sonnet, Haiku)
  • Google (Gemini 2.5, 3.0)
  • xAI (Grok)
  • Ollama (local models)
  • OpenAI-compatible (SambaNova, TheAgentic, DeepSeek)

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

aceteam_aep-0.4.0.tar.gz (171.6 kB view details)

Uploaded Source

Built Distribution

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

aceteam_aep-0.4.0-py3-none-any.whl (68.1 kB view details)

Uploaded Python 3

File details

Details for the file aceteam_aep-0.4.0.tar.gz.

File metadata

  • Download URL: aceteam_aep-0.4.0.tar.gz
  • Upload date:
  • Size: 171.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.23

File hashes

Hashes for aceteam_aep-0.4.0.tar.gz
Algorithm Hash digest
SHA256 eb9ade82f31a1a156bea29e2833f4709e161eeb0d6f819e259934b7d58c909a1
MD5 2f05baad7ce4eecdeebed326f7d23c1d
BLAKE2b-256 321eb0f4ef60bb6cd20b501cdcc2d98299231fa02648fb3cf6de0affc98fda3a

See more details on using hashes here.

File details

Details for the file aceteam_aep-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aceteam_aep-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4766696348659413afb7dafca18835343af2d6195e8bdf25d234593161e23aaf
MD5 b35b13759da794c661d61cf2e7518161
BLAKE2b-256 430bdb0b4282b7f96de8c33d3a7e3c7b7db2e2bd2c27e32b7e33d31c819047a6

See more details on using hashes here.

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