agent/ directory, and Eve compiles it into an app that runs on Vercel Functions. Eve emits OpenTelemetry GenAI spans for every turn, model step, model call, and tool execution. Arize AX captures them through the @arizeai/openinference-vercel span processor, which you register as an OpenTelemetry destination in Eve’s agent/instrumentation/ directory.
This guide requires Eve 0.62 or later. Eve 0.62 replaced the single
agent/instrumentation.ts file with the agent/instrumentation/ directory. If you’re upgrading an agent that still has agent/instrumentation.ts, see Eve’s instrumentation migration guide.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 span processor, the OpenTelemetry trace SDK it builds on, and the OTLP exporter it sends spans through:@vercel/otel or call registerOTel.
Configure credentials
Setup tracing
Eve discovers every file inagent/instrumentation/ and loads them at server startup, before any agent code runs. Each file exports one piece of the tracing setup, and the file names are yours to choose. You don’t set experimental_telemetry on individual calls; Eve manages telemetry internally.
Add two files. The first, otel.ts, holds the process-wide OpenTelemetry settings. It sets the model_id resource attribute, which Arize uses to route spans to a project:
agent/instrumentation/otel.ts
arize.ts, declares Arize AX as a trace destination. It registers the OpenInference span processor with an OTLP exporter pointed at Arize. The processor’s spanFilter and reparentOrphanedSpans options control which spans reach Arize; see Span filter:
agent/instrumentation/arize.ts
OpenInferenceSimpleSpanProcessor exports each span synchronously as it ends, so it’s safe on the short-lived serverless functions Eve runs on, with no process-exit forceFlush to call. @arizeai/openinference-vercel translates Eve’s GenAI spans into OpenInference before export.Control what content is captured
By default, Eve records model and tool inputs and outputs on spans only in development and for public conversations. Everywhere else, spans carry metadata (span structure, models, token counts, and timing) without prompts, responses, or tool arguments. To capture content in production, settracePolicy in otel.ts:
agent/instrumentation/otel.ts
Run Eve
Start the Eve agent:Verify in Arize AX
-
Open your Arize AX space and select the project named by
ARIZE_PROJECT_NAME. -
Within ~30 seconds you should see one trace per turn. Each trace is rooted at an
invoke_agentagent span. Under it, each model step is anagent.stepchain span that holds thechatLLM span (prompt, response, and token counts). Each tool call is anagent.actionchain span over anexecute_tooltool span (arguments and result): -
Open the Sessions tab. Turns from the same Eve session share a
session.id, taken from Eve’sgen_ai.conversation.id, so they group into one session. Traces from subagents join their caller’s session. - If no traces appear, see Troubleshooting.
The table describes Eve 0.69 and later. In Eve 0.62 through 0.68, a subagent call is an
agent.action agent span over an execute_tool span, and a workflow tool that calls agents is an invoke_workflow chain span.
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. A single turn produces well over a hundred spans from Eve’s Vercel Workflow runtime (workflow.*andstep.*), plus queue and HTTP spans. The filter drops them, leaving the agent, chain, LLM, and tool spans shown above.reparentOrphanedSpans: truere-roots any AI span whose parent the filter dropped, so it doesn’t point at a parent that was never exported. Eve already roots each turn atinvoke_agent, so nothing is orphaned in local development. Keep the option on as a safeguard for hosts or other instrumentation that wrap the turn in their own non-AI span.
Troubleshooting
- No traces in Arize AX. Confirm the files are in the
agent/instrumentation/directory. Eve 0.62 and later ignore a singleagent/instrumentation.tsfile, andeve buildfails if one is present. Check thatARIZE_SPACE_IDandARIZE_API_KEYare set in the shell runningnpm run dev. Enable OpenTelemetry debug logs withexport OTEL_LOG_LEVEL=debugand run again. - No prompts or responses on spans. Eve’s default trace policy records content only in development and for public conversations. Set
tracePolicyas shown in Control what content is captured. - Every step shows up as an LLM span.
@arizeai/openinference-vercelversions before 3.2.3 classify Eve’sagent.step,agent.action, andagent.approvalspans as LLM spans, so a turn appears to make more model calls than it did. Upgrade to 3.2.3 or later. - No traces from a Vercel deployment. Projects created with
eve deploysample 100% of traces. Existing Vercel projects need a sampling rule; see Eve’s Enable tracing on Vercel. - 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 (for example@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.