ARK - Agent Reliability Kit. Trust infrastructure for AI agents.
Project description
ARK โ Agent Reliability Kit ๐ก
Trust infrastructure for AI agents. Stripe-level idempotency ร Sentinel circuit breakers ร OpenTelemetry tracing ร IDE-style validation. For AI agents.
๐ค Why ARK?
Your AI agent says it sent an email. Did it really? Your AI agent says it charged $10. Did it charge $10... or $100? Your AI agent retries on failure. Did it just send 3 duplicate payments?
"Agent does not actually invoke tools, only simulates tool usage with fabricated output" โ CrewAI Bug #?, 63 comments
ARK proves every agent action is real.
โก Quick Start
pip install ark-trust
from ark import IdempotencyGuard, CircuitBreaker, OutputValidator
# ๐ก 1. Never run duplicate payments
guard = IdempotencyGuard()
@guard.wrap
def charge(amount: float):
return stripe.charge(amount)
charge(99.99) # โ
Charged
charge(99.99) # ๐ก Intercepted โ no duplicate!
# โก 2. Auto-fallback when models fail
breaker = CircuitBreaker("gpt-4", failure_threshold=3)
result = breaker.call(
primary=lambda: gpt4.generate(prompt),
fallback=lambda: claude.generate(prompt) # Auto-switch!
)
# ๐ง 3. Validate agent output
from pydantic import BaseModel
class PaymentResult(BaseModel):
amount: float
txn_id: str
validator = OutputValidator()
result = validator.validate(PaymentResult, agent_output)
if not result.valid:
print(f"ARK blocked invalid output: {result.errors}")
๐ฑ The Four Pillars
| Pillar | Gene Source | What It Does |
|---|---|---|
| ๐ก Idempotency Guard | Stripe payments | Prevents duplicate tool execution |
| โก Circuit Breaker | Sentinel microservices | Auto-meltdown โ safe fallback |
| ๐ง Output Validator | IDE type checking | Validates agent output against schema |
| ๐ Trace | OpenTelemetry | Full execution trace visibility |
๐ What ARK Catches
CrewAI agents fake tool calls โ ARK validates real execution
GPT-4 fails 6 times in a row โ ARK auto-switches to Claude
Agent retries a payment 3 times โ ARK blocks duplicates 2&3
Streaming response returns null โ ARK detects + reloads
๐ฏ The Numbers
- 8847 error issues across top 3 agent frameworks
- 50+ comments on a single "duplicate payment" bug
- 75% of agent outputs need validation
- 0 existing products in this space (max competitor: 129โญ)
๐ Architecture
Your Agent
โ
โโโโ ARK Trust Layer โโโโ
โ ๐ก Guard โก Breaker โ
โ ๐ง Validator ๐ Trace โ
โโโโโโโโโโโโโโโโโโโโโโโโโ
โ
Your Tools & APIs
๐ Roadmap
- MVP โ 4 core pillars (v0.1.0)
- LangChain integration โ
ARKCallbackHandler(v0.1.0) - CrewAI integration โ
ARKCrewCallback(v0.1.1) - Auto-detect frameworks (v0.2.0)
- Reliability Score + Schema Registry โ 13 schemas (v0.2.0)
- Dashboard UI โ real-time trust monitoring (v0.3.0)
- Achievement system โ gamified reliability badges (v0.3.0)
- PyPI publish automation (v0.3.0)
- Community Schema Hub (v0.4.0)
- Benchmarks โ 7 performance baselines (v0.4.0)
- OpenTelemetry Exporter โ 8 reliability event types (v0.5.0)
- Zero-touch instrumentation โ one env var to activate (v0.5.0)
๐ญ OpenTelemetry Integration (v0.5.0)
ARK reliability events are emitted to your observability stack via standard OTLP/JSON. Zero code changes to existing agents โ set one env var:
export ARK_OTEL_ENDPOINT="http://otel-collector:4318/v1/events"
| Event Type | Trigger |
|---|---|
ark.idempotency.miss |
Tool first called |
ark.guardian.intercept |
Duplicate call blocked (saves real ms) |
ark.circuit.open |
Breaker tripped |
ark.circuit.half_open |
Recovery probe |
ark.circuit.close |
Service recovered |
ark.validation.pass |
Output schema valid |
ark.validation.fail |
Output schema invalid |
Compatible with Langfuse, Jaeger, Tempo, Honeycomb โ any OTLP receiver.
โก 5-Minute Live Demo
See ARK events flow into Langfuse with one command:
cd examples/langfuse-demo
docker compose up -d
pip install -e ../..
python app.py
# Open http://localhost:3000 โ watch ARK reliability events stream in
๐ฉน Self-Healing Errors (v0.5.1) โ 12-Factor Agents Factor 9
Your agent hits a flaky API. What does it do?
- โ Without F9: stack trace explodes the LLM's context window โ token waste + confused LLM
- โ With ARK F9: error compressed to 500 chars + last 3 stack lines + md5 hash โ LLM knows exactly what to fix
from ark.errors import with_retry, should_retry, truncate_error, error_to_llm_context
# ๐ฉน 1. Auto-retry with exponential backoff (1s โ 2s โ 4s)
@with_retry(tool_name="send_email", max_attempts=3)
def send_email(to, subject):
return smtp.send(to, subject)
# ๐ฏ 2. Smart retry decisions (8 NON_RETRYABLE_TYPES skipped immediately)
try:
charge_card(amount)
except AuthError as e:
if not should_retry(e, attempt=1, max_attempts=3)[0]:
return redirect_to_human_review() # Skip retry, save 30s
# ๐ง 3. Feed structured error to LLM (self-healing)
try:
call_external_api()
except Exception as e:
prompt = error_to_llm_context(e) # 500-char message + stack tail + retry hint
response = llm.invoke(prompt) # LLM decides: different tool? different args?
| F9 Capability | What It Solves |
|---|---|
truncate_error() |
5KB stack โ 500 chars + last 3 lines + md5 hash |
should_retry() |
Auth/Validation errors skip retry immediately (save 30s) |
retry_delay() |
Exponential backoff 1s โ 2s โ 4s โ 8s โ 16s, capped 30s |
with_retry() |
One-line decorator: retry + truncate + fallback + escalate |
error_to_llm_context() |
Structured prompt for LLM self-healing |
ErrorContext |
Thread-safe accumulator, serializable for F5 state unification |
โก 1-Minute F9 Demo (no Docker)
cd examples/f9-self-healing
python app.py
# See: 5KB stack compressed to ~500 chars, 8 NON_RETRYABLE_TYPES identified, 3-round retry simulation
๐ Native OTel SDK Bridge (v0.5.3) โ Zero-friction observability
One-line upgrade for OTel users. If your stack already runs the OpenTelemetry SDK, ARK now dual-emits reliability events to your existing tracer โ no code change, no OTLP collector required.
# Before v0.5.3: OTLP/JSON only (need collector)
export ARK_OTEL_ENDPOINT=http://collector:4318
# After v0.5.3: dual-emit, automatic if opentelemetry-api installed
pip install opentelemetry-api # that's it
export ARK_OTEL_ENDPOINT=http://collector:4318 # collector still works
# Native spans flow into your existing tracer (Jaeger/Tempo/Honeycomb) automatically
Why this matters:
- ๐ Plug into existing observability โ If you already pay for Datadog/Honeycomb/Tempo, ARK events appear next to your app spans
- ๐ก 100% backward compatible โ
use_native_sdk=False(default) keeps the old OTLP/JSON path; opt in with one flag - ๐ชซ Zero overhead when off โ
if not use_native_sdk: returnis the first line; no imports, no allocations - ๐จ Failure-isolated โ
try/exceptaround native span emit: a broken SDK init never breaks your OTLP export - ๐ฅ Auto-set ERROR status on
VALIDATION_FAILโ your alerting tools see it immediately
Test coverage: 16 new tests in test_v0_5_3_otel_sdk_bridge.py covering type coercion, SDK availability probing, opt-out path, span emission, attribute propagation, ERROR status on validation failure, failure isolation, stats() reporting, and backward-compat signatures.
๐ฆ What's New in v0.5.3
| Feature | Status | Description |
|---|---|---|
| Native OTel SDK bridge | โ | Auto-detect opentelemetry-api; dual-emit to existing tracer |
| ROADMAP v0.5.0 close-out | โ | Last unchecked item shipped (ๅ็ opentelemetry-sdk ้ๆ) |
| Backward compat | โ | All 235 v0.5.2 tests still pass; +16 new tests = 251 total |
| Pre-built wheels | โ | dist/ark_trust-0.5.3-py3-none-any.whl (51.6 KB) ready for PyPI |
๐ License
MIT โ Free forever. ARK is open infrastructure.
Built with ๐งฌ gene recombination: Stripe ร Sentinel ร OpenTelemetry ร IDE
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ark_trust-0.5.3.tar.gz.
File metadata
- Download URL: ark_trust-0.5.3.tar.gz
- Upload date:
- Size: 73.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7275b9d25a4484d39a4d20ee7bb1f2429968f0487d2267cdeb9928579f66491a
|
|
| MD5 |
acfa184df24e4654c8c6e7e33100a0f0
|
|
| BLAKE2b-256 |
973ea60ca83d19f5b50de1b9f47e5d871bc6497ca86fdc0a96c219d9e63c0be5
|
File details
Details for the file ark_trust-0.5.3-py3-none-any.whl.
File metadata
- Download URL: ark_trust-0.5.3-py3-none-any.whl
- Upload date:
- Size: 52.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6989ffc07faefd0fe3e7487684f167d4a8bc83943cfe10d47a897bee8de96afa
|
|
| MD5 |
69b3890b5ec05343e0c7e0a1ccb856cf
|
|
| BLAKE2b-256 |
33f50e3b5208845084b0c039889132ae6d640a1107393ced3d26b6224d78c8dd
|