Metadata-Version: 2.4
Name: aetherproof
Version: 0.2.0
Summary: Cryptographic, tamper-evident execution receipts for any AI model
Author: Pulkit
License: AGPL-3.0-or-later
Project-URL: Homepage, https://github.com/pulkit6732/aetherproof
Project-URL: Repository, https://github.com/pulkit6732/aetherproof
Project-URL: Issues, https://github.com/pulkit6732/aetherproof/issues
Keywords: ai,audit,receipt,ed25519,tamper-evident,compliance,eu-ai-act,llm,ollama
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
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: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: cryptography>=41.0
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-benchmark; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest>=7; extra == "test"

# AetherProof

**Cryptographic, tamper-evident execution receipts for any AI model.**

One call generates a 128-byte Ed25519-signed receipt that proves what model ran
and what it produced — verifiable offline by anyone, with no server and no account.
Works with Claude, GPT, Gemini, or a local model via Ollama.

## Install

```bash
pip install aetherproof
```

## Drop-in: one line to a verified receipt

Run a local model and get its answer **plus** a signed, tamper-evident receipt —
no extra dependencies, no server:

```python
import aetherproof

r = aetherproof.ollama("llama3", "Explain quantum tunneling")
print(r.text)        # the model's answer
print(r.verify())    # True — cryptographically receipted
r.save("call.receipt")
```

Cloud providers work the same way (`pip install openai` / `anthropic`):

```python
r = aetherproof.openai("gpt-4o", "Summarise this contract.")
r = aetherproof.anthropic("claude-3-opus-20240229", "Explain GDPR Article 13")
```

Already have a response? Receipt it directly:

```python
receipt = aetherproof.for_anthropic(prompt, response_text, model="claude-3-opus-20240229")
print(receipt.verify())   # True
receipt.save("run.receipt")
```

## What a receipt proves

- **What ran** — a hash identifying the model.
- **What it produced** — a hash of the output; any change is detectable.
- **Tamper-evidence** — flip a single byte and verification fails.
- **Offline-verifiable** — anyone can check it with the public key; no server.
- **Portable** — the same 128-byte wire format verifies in Python, the Rust CLI,
  and the AetherOS kernel.

The receipt can also ride **invisibly inside the model's own output text**
(`aetherproof.embed`), so the proof travels with the content.

## License

AGPL-3.0-or-later. See [LICENSE](https://github.com/pulkit6732/aetherproof/blob/main/LICENSE).
