No new dashboard
Standard OpenTelemetry spans. Jaeger, Grafana Tempo, Langfuse, Honeycomb or any OTLP backend is the UI.
hashspan is an open-source TypeScript library that records every on-chain transaction an AI agent sends as OpenTelemetry spans, inside the agent's own trace. This page explains why it exists and how it is built.
Agent tracing tools show the model call and the tool call. When that tool sends a transaction, the trace usually ends there. Whether it was mined, reverted or replaced, and what it cost, lives in a block explorer or a separate monitoring product, away from the decision that caused it.
With protocols like x402 and wallet APIs built for agents, more tool calls now move real value. Debugging them shouldn't mean copying a hash between tabs.
hashspan keys everything to the transaction hash and emits standard OpenTelemetry spans, a send span and a confirm span (a payment span for an x402 payment), nested under the tool that made it. Your existing tracing backend becomes the UI.
Standard OpenTelemetry spans. Jaeger, Grafana Tempo, Langfuse, Honeycomb or any OTLP backend is the UI.
The transaction hash is the join key between the agent trace and the chain.
Calldata arguments and error messages are opt-in. Addresses are recorded by default and can be hashed or dropped.
It never signs or broadcasts, and telemetry stays off the call path.
The core has one peer dependency, @opentelemetry/api. Adapters add the library they instrument, plus viem to read the chain.
Span and attribute names are a public draft, aiming at a proposal to OpenTelemetry.
Every design decision is written down as an architecture decision record. The span and attribute names are a public draft, with a proposal to OpenTelemetry on the roadmap. Packages are published with npm provenance.
hashspan is open to contributors. If you trace agents that send transactions, feedback on the span schema is the most valuable contribution right now.