Agent Lens runs on the same backend as Weights & Biases, so some configuration names keep the
wandb prefix: the WANDB_API_KEY environment variable, the wandb-api-key header, and the wandb.entity and wandb.project resource attributes. Use these names as shown.Authentication
You can send spans to the following endpoint:- Path:
/agents/otel/v1/traces - Method:
POST - Content-Type:
application/x-protobuf - Base URL:
https://trace.wandb.aifor Multi-tenant Cloud.
opentelemetry-exporter-otlp-proto-http (Python) or @opentelemetry/exporter-trace-otlp-proto (TypeScript). The endpoint also accepts gzip and deflate content encoding.
To authenticate with the endpoint, set your API key in your OTLPSpanExporter configuration using one of the following values:
wandb-api-key: Your Forge API key as the value.Authorization: HTTP Basic authentication withapias the user and your Forge API key as the password. This form is useful when your exporter or collector only supports standard authorization headers.
Project routing
Agent Lens routes spans to a project using either OTel resource attributes or a request header:- Resource attributes (recommended): Set
wandb.entityto your Forge team or user name andwandb.projectto the project name on yourTracerProviderresource. project_idheader: Set the value to[YOUR-TEAM]/[YOUR-PROJECT].
Shape spans for the Conversations tab
Agent Lens accepts any OTel span and stores all of its attributes, but the Conversations tab renders spans that follow the OTel GenAI semantic conventions. Setgen_ai.operation.name on each span to tell Agent Lens what the span represents:
Two more attributes control grouping:
gen_ai.conversation.id: Groups turns into a conversation. Use a stable ID for the lifetime of the conversation.gen_ai.agent.name: Groups conversations under a named agent in the Conversations tab.
gen_ai.request.model, gen_ai.usage.input_tokens, and gen_ai.usage.output_tokens, enrich the rendering with model names and token counts but are optional. For the agent data model that these spans map onto, see Trace your agents.
Configure with environment variables only
If your application or collector reads the standard OTel exporter environment variables, you can set the following variables and route spans to Agent Lens without changing any code:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: The Agent Lens endpoint your exporter sends spans to.OTEL_EXPORTER_OTLP_TRACES_HEADERS: Authenticates each request with your Forge API key, sent in thewandb-api-keyheader.OTEL_RESOURCE_ATTRIBUTES: Sends spans to your project. Setwandb.entityto your Forge team or user name andwandb.projectto the project name.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: Sets the exporter to send OTLP protobuf over HTTP. It must behttp/protobuf, because the endpoint accepts only protobuf payloads.
Example: emit agent spans without the Agent Lens SDK
The following example instruments a minimal agent turn using only OTel packages. It emits aninvoke_agent span for the turn, a chat span for the LLM call, and an execute_tool span for a tool call, then exports them to the Agent Lens agents endpoint.
First, install the required dependencies:
YOUR-TEAM, YOUR-PROJECT, and YOUR_API_KEY to your values in the following code, and then run it:
invoke_agent spans with the same gen_ai.conversation.id. Each turn is the root span of its own trace, so turns don’t need to share a parent span.
After your application exports spans, open the Conversations view of your Agent Lens project.