Metadata-Version: 2.4
Name: atlast-ecp
Version: 0.32.12
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.9
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: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.9
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

**One-liner (handles Homebrew Python, venvs, PEP 668 distros automatically):**

```bash
# macOS / Linux
curl -sSL https://weba0.com/install.sh | bash

# Windows (PowerShell)
irm https://weba0.com/install.ps1 | iex
```

**Or install manually:**

```bash
# Default — works on Homebrew / system Python / locked-down distros
pip install --user atlast-ecp

# Inside a venv or conda env — drop the --user flag:
pip install atlast-ecp

# Extras
pip install --user atlast-ecp[crypto]   # ed25519 signing
pip install --user atlast-ecp[proxy]    # transparent proxy (Layer 0)
pip install --user atlast-ecp[all]      # everything
```

> **Why `--user`?** Modern macOS Homebrew Python and Debian 12 / Ubuntu 23+
> enforce [PEP 668](https://peps.python.org/pep-0668/) and reject plain
> `pip install` with `externally-managed-environment`. `--user` installs to
> your user site-packages and bypasses the restriction on every platform.
> If you're already inside a virtualenv, you don't need `--user`.

## 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)
