Metadata-Version: 2.5
Name: agenko
Version: 0.1.4
Summary: The open trust boundary for AI agents — receipts, approval gates, and OTEL tracing in one decorator.
Project-URL: Homepage, https://github.com/agenko-ai/agenko
Project-URL: Documentation, https://docs.agenko.dev
Project-URL: Repository, https://github.com/agenko-ai/agenko
License-Expression: Apache-2.0
Keywords: agents,ai,observability,opentelemetry,tracing
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Requires-Dist: httpx>=0.27.0
Requires-Dist: opentelemetry-api>=1.27.0
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.27.0
Requires-Dist: opentelemetry-sdk>=1.27.0
Requires-Dist: pydantic-settings>=2.6.0
Requires-Dist: pydantic>=2.9.0
Provides-Extra: all
Requires-Dist: anthropic>=0.40.0; extra == 'all'
Requires-Dist: boto3>=1.34.0; extra == 'all'
Requires-Dist: cohere>=5.0.0; extra == 'all'
Requires-Dist: crewai>=0.80.0; extra == 'all'
Requires-Dist: google-genai>=1.0.0; extra == 'all'
Requires-Dist: langchain-core>=0.3.0; extra == 'all'
Requires-Dist: litellm>=1.0.0; extra == 'all'
Requires-Dist: llama-index-core>=0.11.0; extra == 'all'
Requires-Dist: mistralai>=1.0.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.34.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-bedrock>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-cohere>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-crewai>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-langchain>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-litellm>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-llamaindex>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-mistralai>=0.40.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-openai>=0.40.0; extra == 'all'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.40.0; extra == 'anthropic'
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.34.0; extra == 'anthropic'
Provides-Extra: bedrock
Requires-Dist: boto3>=1.34.0; extra == 'bedrock'
Requires-Dist: opentelemetry-instrumentation-bedrock>=0.40.0; extra == 'bedrock'
Provides-Extra: cohere
Requires-Dist: cohere>=5.0.0; extra == 'cohere'
Requires-Dist: opentelemetry-instrumentation-cohere>=0.40.0; extra == 'cohere'
Provides-Extra: crewai
Requires-Dist: crewai>=0.80.0; extra == 'crewai'
Requires-Dist: opentelemetry-instrumentation-crewai>=0.40.0; extra == 'crewai'
Provides-Extra: dev
Requires-Dist: mypy>=1.11.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
Requires-Dist: pytest>=8.3.0; extra == 'dev'
Requires-Dist: ruff>=0.6.0; extra == 'dev'
Provides-Extra: google
Requires-Dist: google-genai>=1.0.0; extra == 'google'
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.3.0; extra == 'langchain'
Requires-Dist: opentelemetry-instrumentation-langchain>=0.40.0; extra == 'langchain'
Provides-Extra: litellm
Requires-Dist: litellm>=1.0.0; extra == 'litellm'
Requires-Dist: opentelemetry-instrumentation-litellm>=0.40.0; extra == 'litellm'
Provides-Extra: llamaindex
Requires-Dist: llama-index-core>=0.11.0; extra == 'llamaindex'
Requires-Dist: opentelemetry-instrumentation-llamaindex>=0.40.0; extra == 'llamaindex'
Provides-Extra: mistral
Requires-Dist: mistralai>=1.0.0; extra == 'mistral'
Requires-Dist: opentelemetry-instrumentation-mistralai>=0.40.0; extra == 'mistral'
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == 'openai'
Requires-Dist: opentelemetry-instrumentation-openai>=0.40.0; extra == 'openai'
Description-Content-Type: text/markdown

# agenko

**The deterministic trust boundary for AI agents.**

One line gives every agent action a cryptographic receipt and a deterministic gate before any irreversible move. No LLM inference — measured facts, provable audit, OTEL-native.

---

## Installation

```bash
pip install agenko
```

## Quick Start

```python
import agenko

agenko.init()  # instrument is a backward-compat alias of init

@agenko.check
def handle_ticket(ticket):
    result = process(ticket)
    return result  # result._agenko_receipt holds claimed, actual, verdict, hash

@agenko.approve(when="irreversible")
def delete_account(user_id):
    db.delete_user(user_id)
```

Set `AGENKO_API_KEY` (and optionally `AGENKO_HOST`) in your environment — `init()` reads them and never throws.

## What Agenko Provides

| Primitive | Description |
|---------|-------------|
| **Receipt** (`@check`) | Cryptographic proof of claimed vs. actual — deterministic, not LLM-inferred |
| **Gate** (`@approve`) | Deterministic block before irreversible actions; only exceptions escalate |
| **Tracing** | OTEL-native, every span, tool call, token, cost |
| **Audit** | SHA-256 hash-chained log |

### Why deterministic matters

Most tools detect silent failures via LLM scoring or semantic drift — useful but not provable. Agenko's receipt is measured facts. We never sell an inference as a measurement. Grounding scores are always `estimated: true`.

## Framework support

`init()` auto-detects and instruments loaded SDKs — OpenAI, Anthropic, LangChain, Mistral, Cohere, Bedrock, LiteLLM, LlamaIndex, CrewAI, Google GenAI. Import your framework, then call `init()`:

```python
import openai
import agenko

agenko.init()  # patches openai if already imported
```

Optional drop-in modules: `agenko.openai`, `agenko.anthropic`, `agenko.langchain`, and others.

## Self-Host

```bash
git clone https://github.com/agenko-ai/agenko
cd agenko
cp .env.example .env
make dev
```

Open `http://localhost:3000` for the console.

## Links

- [GitHub](https://github.com/agenko-ai/agenko)
- [Documentation](https://docs.agenko.dev)
- [PyPI](https://pypi.org/project/agenko/)

## License

Apache 2.0
