Skip to content
@openaudr

openaudr

OpenAUDR

Spec v1.0.0 License Apache 2.0

AUDR (Agent Usage Detail Record) is an open standard for recording who initiated an agent run and how much each step cost, across every system the run passes through.

A single agent run touches several systems. The application knows the customer and the feature. The router knows the model, the tokens and the price. The provider knows the cache split. Each layer is observable on its own, yet none of them can report what one customer's agent cost over a month. AUDR is one JSON record per metered operation, carrying enough identity and attribution that the records join.

The telecom industry solved the same problem with the Call Detail Record. AUDR applies that principle to agents.

πŸš€ Getting Started

🧩 How It Works

Every layer keeps reporting what it already reports. AUDR adds three rules that let those reports join into one record.

  • Shared run ID β€” minted by the harness, passed to the router in request metadata, and echoed back. Every system that touches the run carries the same ID.
  • Clear authority per field β€” the harness owns attribution (customer, environment, initiator). The router owns usage (tokens, provider). Each fact has exactly one source.
  • Strict merge rules β€” the sink assembles records sharing a run and span ID. No component rewrites another's fields. Conflicts are rejected, and a correction is a new record, never a mutation.
{
  "spec_version": "1.0.0",
  "record_id": "01K4N8D2J4P7Q9R3S6T8V1W5XY",
  "emitter": { "component": "router", "name": "openrouter", "version": "1.12.1" },
  "timing": { "event_time": "2026-09-08T12:00:00.000Z" },
  "resource": {
    "provider": "anthropic",
    "type": "model",
    "name": "claude-sonnet-4-20250514",
    "operation": "generation",
    "modality": "text"
  },
  "run": { "run_id": "01K4N8B0M2C5F7H9J1L3N6P8QR", "span_id": "model-call-1" },
  "attribution": { "environment": "production", "account_id": "account-42" },
  "usage": { "llm": { "input_tokens": 1200, "output_tokens": 300 } }
}

πŸ“¦ Repositories

Repository Contents
openaudr/audr The specification, JSON Schema, examples and conformance fixtures; the Python and TypeScript SDKs, adapters and sinks.

πŸ› οΈ SDKs, Adapters and Sinks

All packages are open source under Apache 2.0. An adapter turns a runtime's events into records; a sink delivers records to a destination. The core SDKs include file and in-memory sinks.

Package Python (PyPI) TypeScript (npm)
Core SDK audr @openaudr/audr
LiteLLM adapter audr-adapter-litellm β€”
NVIDIA NeMo Relay adapter audr-adapter-nemo-relay β€”
Vercel AI SDK adapter β€” @openaudr/audr-adapter-vercel-ai
Mastra adapter β€” @openaudr/audr-adapter-mastra
Merge Gateway adapter β€” @openaudr/audr-adapter-merge-gateway
Chargebee sink audr-sink-chargebee @openaudr/audr-sink-chargebee

🀝 Get Involved

Feedback from teams that apply the specification to a real cost model is the most valuable contribution at this stage.

πŸ›οΈ Governance

AUDR was drafted at Chargebee, which stewards it. Governance is intended to move to an independent foundation as adoption grows.

The specification carries no prices and no rating logic, and the SDKs have no concept of plans or invoices. Licensed under Apache 2.0.

πŸ”’ Security

Records carry no prompt or completion content, no key material and no personal data. Report a vulnerability as described in SECURITY.md, not through the public issue tracker.

πŸ“¬ Contact

Send questions, feedback, or a cost model AUDR cannot express to audr@chargebee.com.

Popular repositories Loading

  1. audr audr Public

    Agent Usage Detail Record β€” an open JSON standard for attributing and costing agent runs

    TypeScript 12 4

  2. .github .github Public

Repositories

Showing 2 of 2 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…