agent/ directory and Eve compiles it into an app that runs on Vercel Functions. Eve emits Vercel AI SDK OpenTelemetry spans for every turn, model call, and tool execution. Arize AX captures them by registering the @arizeai/openinference-vercel span processor in Eve’s agent/instrumentation.ts.
Prerequisites
- Node.js 24+ (Eve’s CLI requires it)
- An Eve agent project (
npx eve@latest init my-agent) - An Arize AX account (sign up)
- An AI Gateway credential for Eve’s model routing — an
AI_GATEWAY_API_KEY, or aVERCEL_OIDC_TOKENpulled withvercel link
Launch Arize AX
- Sign in to your Arize AX account.
- From Space Settings, copy your Space ID and API Key. You will set them as
ARIZE_SPACE_IDandARIZE_API_KEYbelow.
Install
In your Eve project, add the Arize OpenInference processor and the OpenTelemetry packages it exports through:Configure credentials
Setup tracing
Eve auto-discoversagent/instrumentation.ts and runs it once at server startup, before any agent code. Its presence enables telemetry — there is no separate toggle, and you do not set experimental_telemetry on individual calls (Eve manages that internally). Register an OpenTelemetry provider in the setup callback, which receives the resolved agent name. The processor’s spanFilter and reparentOrphanedSpans options control which spans reach Arize and how each trace is rooted — see Span filter:
OpenInferenceSimpleSpanProcessor exports each span synchronously as it ends, so it is safe on the short-lived serverless functions Eve runs on (no process-exit forceFlush to call). @arizeai/openinference-vercel translates the AI SDK spans into OpenInference before export.Run Eve
Start the Eve dev server, then open a session against the built-in HTTP channel:http://127.0.0.1:2000 by default (pass --port to change it). Open a session against the built-in HTTP channel:
continuationToken in the body and an x-eve-session-id header. Stream the session’s lifecycle events to watch the turn complete:
Expected output
Verify in Arize AX
- Open your Arize AX space and select the project named after your agent (the project-name resource attribute above).
- Within ~30 seconds you should see the turn’s spans. Eve runs on the AI SDK’s GenAI-convention spans, so every span arrives named
gen_ai(orgen_ai.clientfor the model request) rather thanai.streamText/ai.toolCall— read the OpenInference span kind to tell them apart. Each step is an agent span over a llm span; the model request is agen_ai.clientllm span (prompt, response, token usage), and each tool run is agen_aitool span carryingtool.name(for exampleget_weather). All of a turn’s steps nest under Eve’sai.eve.turnworkflow span, whichreparentOrphanedSpansre-roots and tags as an agent span so it anchors the turn as a clean per-turn root. - Eve attaches session context to the spans under the
ai.settings.context.eve.*prefix —ai.settings.context.eve.session.id,ai.settings.context.eve.turn.id,ai.settings.context.eve.step.index, andai.settings.context.eve.channel.kind— so you can group a trace back to its session. - If no traces appear, see Troubleshooting.

Check from the skill, CLI, or SDK
Confirm spans are actually reaching your Arize AX project. Use whichever fits your workflow — the skill and CLI work for any framework; the SDK check is shown for each language.- Arize skill (agent)
- AX CLI
- SDK
Install the Arize Skills plugin and let your coding agent check for you:Then prompt your agent:
Use the arize-trace skill to export and analyze recent traces from my project. Confirm spans are arriving, and summarize any errors or latency issues.
Span filter
Two options on the processor control which spans reach Arize and how they’re rooted:spanFilter: isOpenInferenceSpankeeps only the AI spans and drops the rest — the raw HTTP/fetch spans and Eve’s Vercel Workflow spans.reparentOrphanedSpans: truere-roots any AI span left orphaned when the filter drops its parent, so it no longer points at a parent that was never exported. It also recognizes Eve’sai.eve.turnwrapper as an AI-like root and tags itopeninference.span.kind = AGENT, so each turn shows up as a single clean agent root with its steps nested underneath.
Troubleshooting
- No traces in Arize AX. Confirm the file is exactly
agent/instrumentation.ts(Eve discovers it by path), and thatARIZE_SPACE_IDandARIZE_API_KEYare set in the shell runningnpm run dev. Enable OpenTelemetry debug logs withexport OTEL_LOG_LEVEL=debugand re-run. - Model auth errors. Eve routes models through AI Gateway — set
AI_GATEWAY_API_KEY, or runvercel linkto use aVERCEL_OIDC_TOKEN. To skip the gateway, switch the agent to a direct provider model (e.g.@ai-sdk/openaiwithOPENAI_API_KEY). A brand-new AI Gateway key also fails until you add a payment method — the turn errors withGatewayInternalServerError: AI Gateway requires a valid credit card on file to service requests, even if you only plan to use the free credits. Add a card in your Vercel AI Gateway dashboard to unlock them. - Version mismatch. Pin the OpenTelemetry packages to Eve’s
@vercel/otelmajor:@vercel/otel@1.xrequires@opentelemetry/*1.x;@vercel/otel@2.xrequires2.x. Mismatches surface as silently missing traces. gen_aispans orphaned on the Traces tab. This happens whenspanFilter: isOpenInferenceSpandrops Eve’sai.eve.turnworkflow span without re-rooting its children, leaving the per-stepgen_aispans with no parent. SetreparentOrphanedSpans: trueas shown in Setup tracing for a single clean agent root per turn, and confirm@arizeai/openinference-vercelis 3.0.0 or later (the v3 major maps Eve’s v7 GenAI-convention spans and carries theai.eve.turnreparenting fix first shipped in 2.8.1).