Metadata-Version: 2.4
Name: atlast-ecp
Version: 0.15.0
Summary: ATLAST Evidence Chain Protocol — trust infrastructure for AI Agents
Author: ATLAST Protocol Working Group
License: MIT
Project-URL: Homepage, https://weba0.com
Project-URL: Repository, https://github.com/willau95/atlast-ecp
Project-URL: Documentation, https://weba0.com/protocol/evidence-chain-protocol-ecp.html
Project-URL: What is ATLAST?, https://weba0.com/what-is/atlast-protocol.html
Project-URL: What is Web A.0?, https://weba0.com/what-is/web-a0.html
Project-URL: Changelog, https://github.com/willau95/atlast-ecp/blob/main/CHANGELOG.md
Keywords: ai,agent,trust,ecp,atlast,llm,audit,evidence
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: aiohttp>=3.9
Provides-Extra: crypto
Requires-Dist: cryptography>=42.0; extra == "crypto"
Provides-Extra: gemini
Requires-Dist: google-generativeai>=0.5; extra == "gemini"
Provides-Extra: litellm
Requires-Dist: litellm>=1.30; extra == "litellm"
Provides-Extra: otel
Requires-Dist: opentelemetry-api>=1.20; extra == "otel"
Requires-Dist: opentelemetry-sdk>=1.20; extra == "otel"
Requires-Dist: opentelemetry-instrumentation-openai>=0.20; extra == "otel"
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.20; extra == "otel"
Provides-Extra: proxy
Requires-Dist: aiohttp>=3.9; extra == "proxy"
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.1; extra == "langchain"
Provides-Extra: crewai
Requires-Dist: crewai>=0.28; extra == "crewai"
Provides-Extra: all
Requires-Dist: atlast-ecp[crypto,otel,proxy]; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: anthropic>=0.25; extra == "dev"
Requires-Dist: openai>=1.30; extra == "dev"
Requires-Dist: cryptography>=42.0; extra == "dev"

# atlast-ecp

Python SDK for the **ATLAST Evidence Chain Protocol (ECP)** — trust infrastructure for AI agents.

[![PyPI](https://img.shields.io/pypi/v/atlast-ecp)](https://pypi.org/project/atlast-ecp/)
[![Tests](https://img.shields.io/badge/tests-440%20passing-brightgreen)]()
[![Python](https://img.shields.io/pypi/pyversions/atlast-ecp)]()
[![License](https://img.shields.io/badge/license-MIT-blue)]()

## Install

```bash
pip install atlast-ecp

# With ed25519 signing:
pip install atlast-ecp[crypto]

# With transparent proxy (Layer 0):
pip install atlast-ecp[proxy]
```

## Three Integration Layers

### Layer 0 — Zero Code (transparent proxy)

```bash
atlast run python my_agent.py
# or: OPENAI_BASE_URL=http://localhost:8340 python my_agent.py
```

### Layer 1 — One Line (`wrap`)

```python
from atlast_ecp import wrap
from openai import OpenAI

client = wrap(OpenAI())  # Records every LLM call automatically
response = client.chat.completions.create(model="gpt-4o", messages=[...])
```

Works with: **OpenAI, Anthropic, Google Gemini, LiteLLM**.

### Layer 2 — Framework Adapters

```python
# LangChain
from atlast_ecp.adapters.langchain import ATLASTCallbackHandler
llm = ChatOpenAI(callbacks=[ATLASTCallbackHandler(agent="my-agent")])

# CrewAI
from atlast_ecp.adapters.crewai import ATLASTCrewCallback
crew = Crew(callbacks=[ATLASTCrewCallback(agent="my-crew")])

# AutoGen
from atlast_ecp.adapters.autogen import register_atlast
register_atlast(my_agent)
```

## CLI

```bash
atlast init              # Initialize ~/.ecp/
atlast record            # Create ECP record
atlast log               # View latest records
atlast verify <id>       # Verify chain integrity
atlast stats             # Trust signals
atlast insights          # Performance analytics
atlast proxy             # Start transparent proxy
atlast run <cmd>         # Run with auto-proxy
atlast did               # Agent DID
```

## Module Stability

| Module | Status | Description |
|--------|--------|-------------|
| `core` | 🟢 **Stable** | `record_minimal()`, `record()` |
| `wrap` | 🟢 **Stable** | `wrap(client)` for OpenAI/Anthropic/Gemini |
| `record` | 🟢 **Stable** | ECP record creation (v1.0 spec) |
| `batch` | 🟢 **Stable** | Merkle tree + batch upload |
| `verify` | 🟢 **Stable** | Signature + Merkle proof verification |
| `storage` | 🟢 **Stable** | Local ~/.ecp/ file storage |
| `signals` | 🟢 **Stable** | Trust signal computation |
| `identity` | 🟢 **Stable** | DID + Ed25519 key management |
| `config` | 🟢 **Stable** | Environment/config management |
| `insights` | 🟢 **Stable** | Performance analytics |
| `webhook` | 🟢 **Stable** | HMAC-signed webhook delivery |
| `adapters.*` | 🟢 **Stable** | LangChain, CrewAI, AutoGen |
| `proxy` | 🟡 **Beta** | Transparent HTTP proxy (Layer 0) |
| `a2a` | 🟡 **Beta** | Agent-to-Agent handoff tracking |
| `cli` | 🟡 **Beta** | `atlast` CLI |
| `mcp_server` | 🟠 **Experimental** | MCP tools server |
| `otel_exporter` | 🟠 **Experimental** | OpenTelemetry exporter |
| `openclaw_scanner` | 🟠 **Experimental** | OpenClaw session log scanner |
| `auto` | 🟠 **Experimental** | OTel auto-instrumentation |

## Privacy

- Content **never** leaves your device — only SHA-256 hashes transmitted
- Local storage: `~/.ecp/records/`
- On-chain: Merkle root only (EAS on Base)
- **Fail-Open**: SDK errors never crash your agent

## Links

- [GitHub](https://github.com/willau95/atlast-ecp)
- [Architecture](https://github.com/willau95/atlast-ecp/blob/main/ARCHITECTURE.md)
- [Changelog](https://github.com/willau95/atlast-ecp/blob/main/CHANGELOG.md)
- [ECP Spec](https://github.com/willau95/atlast-ecp/blob/main/docs/ECP-SPEC.md)
