Skip to main content

ARK — Agent Reliability Kit 🛡

Trust infrastructure for AI agents. Stripe-level idempotency × Sentinel circuit breakers × OpenTelemetry tracing × IDE-style validation. For AI agents.

Tests Python Version License ARK Trusted


README.md

💝 赞助 ARK: GitHub Sponsors · 爱发电 · 微信: 84911541@qq.com

ARK 是 MIT 协议开源的。你的赞助让它活下去。详见 SPONSOR.md。

🤔 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: return is the first line; no imports, no allocations
  • 🚨 Failure-isolated — try/except around 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

Metadata

Release files for ark-trust 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ark-trust 0.6.1
File Size Uploaded Provenance Actions
ark_trust-0.6.1.tar.gz 74.5 kB Without provenance Details for ark_trust-0.6.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ark-trust 0.6.1
File Interpreter ABI Platform Actions
ark_trust-0.6.1-py3-none-any.whl Python 3 none any Details for ark_trust-0.6.1-py3-none-any.whl

Total release size: 127.3 kB

Release files / ark_trust-0.6.1.tar.gz

Download URL ark_trust-0.6.1.tar.gz
Size 74.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ddd9f08de06b3f88c04bbbd96a39ea05f907a70329be3cf90ac0fe74ca145497
BLAKE2b-256 checksum
How to use checksums
1b5307048a5a7e17fe6d67d836b78404f37ea8803779575e76b495aa88d6afb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / ark_trust-0.6.1-py3-none-any.whl

Download URL ark_trust-0.6.1-py3-none-any.whl
Size 52.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fef691d354afd721dfe309832679fe8d521a1ec8ffdba0739879fe63486486b3
BLAKE2b-256 checksum
How to use checksums
eeaffa68ddc1873cad48d7d549787c8302eee0f9f33a998d5ca3d8d229a39a0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for ark-trust 0.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page