Skip to content
Star5

Tested setups

hashspan emits standard OpenTelemetry spans, so it works with anything that speaks OTLP. This page shows what it is checked against: first what CI runs again on every change or every week, then the networks, backends and setups it was run with, each with its evidence. Integration setups are on Integrations, the scenarios on Base Sepolia on Testnet runs.

Run again on every change, or every week against the newest releases, so each release keeps them.

SetupRunWhat was checkedEvidence
Anvil, local chain (31337)
Anvil 1.8.3
every CI runSend and confirm spans, decoded revert reasons and replaced transactions, in the integration tests.CI workflow
ERC-4337 bundler on Anvil
Alto 0.0.21, EntryPoint 0.7
every CI runUser operations sent through a real bundler: send and confirm spans with the operation hash, its success and the bundle transaction.test
Node.js
22.3, the latest 22.x and 24.x
every CI runThe packed packages are installed into an empty project and loaded with require() and import on each version.CI workflow · smoke test
viem
2.21.0 and the newest 2.x
weekly in CIBoth ends of the supported range: the newest release with typecheck and every viem test, the oldest with the unit and integration tests.workflow
x402 SDK
@x402/core 2.13.0 and the newest 2.x
weekly in CIBoth ends of the supported range: the newest release with every x402 test, the oldest with the adapter’s own tests.workflow
Coinbase CDP SDK
1.57 and the newest 1.x
every CI run, weeklyThe lowest supported release on every change, the newest one every week, with the CDP unit and integration tests.workflow
Vercel AI SDK
ai 7, @ai-sdk/otel 1
every CI runThe example agent: hashspan spans nest under the SDK’s execute_tool spans.recipe · example agent
Coinbase AgentKit
0.10.4
weekly in CIViemWalletProvider, CdpEvmWalletProvider and CdpSmartWalletProvider: send and confirm spans for sendTransaction, nativeTransfer and the ERC-20 approve action.setup · viem test · CDP test
GOAT SDK
@goat-sdk/wallet-viem 0.3.0
weekly in CIThe send_token and approve_token_evm tools record send and confirm spans.setup · test
Mastra
@mastra/core 1.74, @mastra/otel-bridge 1.5
weekly in CIWith the OpenTelemetry bridge, send and confirm spans nest under Mastra’s execute_tool span.setup · test
LangChain and OpenAI Agents (OpenInference)
LangChain 1.5, OpenAI Agents SDK 0.18
weekly in CIBoth instrumentations and hashspan in one trace, with the agent run inside an active span.setup · LangChain test · OpenAI Agents test

Real transactions on Base Sepolia, with the spans checked against the receipts. The lab’s scenario runs are on Testnet runs.

SetupRunWhat was checkedEvidence
Base Sepolia (84532)
public RPC
2026-10-02, hashspan 0.8.0A payment and a reverted withdrawal. Status, block, gas, the L1 data fee and the total fee on the confirm spans equal the sealed receipts on two public RPCs; the revert reason was decoded.
Also run with 0.6.0 earlier the same day, with the same result. This 0.8.0 run is the trace on the home page and in the local lab.
payment · reverted withdrawal · testnet runs

Where the agent trace was sent over OTLP and opened in the UI. Setup for each is on the backends page.

SetupRunWhat was checkedEvidence
Jaeger
2.21.0
2026-10-03, hashspan 0.3.0 to 0.9.0The local lab backend: the full trace, with span links between send and confirm.local lab
Prometheus and Grafana
Prometheus 3.15.0, Grafana 13.2.3
2026-10-03, hashspan 0.9.0The send, confirmation and fee histograms over OTLP into Prometheus, on the hashspan Grafana dashboard.recipe · dashboard
Grafana Tempo
Tempo 3.0.0, Grafana 13.2.3
2026-10-02, hashspan 0.5.0All 13 spans received; TraceQL finds the failed confirm under its tool call.hashspan#135 · setup
Langfuse, self-hosted
4.49.0
2026-10-02, hashspan 0.5.0All 13 observations; GenAI spans become agent, tool and generation observations, the reverted confirm has level ERROR.hashspan#135 · setup
Honeycomb
US region
2026-10-02, hashspan 0.5.0All 13 spans; attribute types kept; the GenAI view shows the agent span with its token usage.hashspan#135 · setup

Run once, end to end, and checked by hand.

SetupRunWhat was checkedEvidence
OpenTelemetry JS SDK, from an empty project
sdk-trace-node 2.11.0, exporter-trace-otlp-proto 0.222.0, viem 2.57.2
2026-10-03, hashspan 0.9.0The quickstart’s complete example, from npm init to an OTLP export with the tool, send and confirm spans.
The home page, quickstart and recipe code samples are also typechecked daily against the latest packages on npm.
quickstart
A service that is not an agent
viem 2.57.2, sdk-trace-node 2.11.0, local Anvil (chain 31337)
2026-10-05, hashspan 0.12.0A request handler span with a send and a confirm span under it, and no agent option: the confirm span has status success, block, gas used and fee, and no span has a gen_ai attribute.
The account is an address only (Anvil signs); the service.name of the OpenTelemetry resource tells services apart.
home page · quickstart
An EIP-1193 provider through viem custom()
viem 2.57.2, a provider that forwards to Anvil (chain 31337)
2026-10-05, hashspan 0.12.0A job span with a send and a confirm span under it. The provider received eth_chainId and eth_sendTransaction; the confirm span has status success and the fee.
This is the path Circle and Fireblocks providers use. Neither service was run, only the path.
wallet services
Pimlico OpenTelemetry instrumentation for viem
0.0.5-alpha.1, viem 2.57.2
2026-10-02, hashspan 0.8.2Both on the same clients: its JSON-RPC spans for signing and sending nest under the send span, in one trace.
Use it or traceTransport(), not both: with both, every request is recorded twice.
compare page

All of it is public in the repository:

  • More than 2,000 tests: unit tests and integration tests against Anvil, with coverage thresholds of 98% of lines and 92% of branches.
  • Mutation testing of the code that computes fees and matches receipts, so a wrong fee or a receipt given to the wrong transaction fails a test (#207).
  • A real ERC-4337 bundler for user operations, and every documented integration run against Anvil.
  • Releases with npm provenance and a CycloneDX SBOM attached to each GitHub release.
  • OpenSSF Scorecard on every push to main, with the workflows audited by zizmor.
  • Bugs found upstream while building hashspan are reported to their projects and listed, with the fix and the release that carries it, in upstream findings.