Metering

Metering listens to the laravel/ai lifecycle rather than provider SDKs. That keeps the integration stable across providers and lets every call become an AiCallEnvelope.

sequenceDiagram participant App participant AI as laravel/ai participant F as FinOps listener participant P as Provider participant L as Ledger App->>AI: prompt, embed, stream AI->>F: pre-flight event F-->>AI: allow or block AI->>P: provider request P-->>AI: response and usage AI->>F: post-flight event F->>L: append usage record

Captured context

Field Source
provider and model laravel/ai event metadata
tokens provider usage or estimator fallback
cost cost resolution cascade
tenant, user, cost center configured resolver or trace context
trace and agent step TraceContext
purpose explicit metadata
Agent step attribution

Wrap each agent step in TraceContext::within() so one run can be reported as a cost flame graph by trace_id.