Skip to main content

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.

Tests Python Version License


๐Ÿค” 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

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

ark_trust-0.5.3.tar.gz (73.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ark_trust-0.5.3-py3-none-any.whl (52.5 kB view details)

Uploaded Python 3

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

Hashes for ark_trust-0.5.3.tar.gz
Algorithm Hash digest
SHA256 7275b9d25a4484d39a4d20ee7bb1f2429968f0487d2267cdeb9928579f66491a
MD5 acfa184df24e4654c8c6e7e33100a0f0
BLAKE2b-256 973ea60ca83d19f5b50de1b9f47e5d871bc6497ca86fdc0a96c219d9e63c0be5

See more details on using hashes here.

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

Hashes for ark_trust-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6989ffc07faefd0fe3e7487684f167d4a8bc83943cfe10d47a897bee8de96afa
MD5 69b3890b5ec05343e0c7e0a1ccb856cf
BLAKE2b-256 33f50e3b5208845084b0c039889132ae6d640a1107393ced3d26b6224d78c8dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page