In traditional observability, you monitor “Requests”. In AI Agent observability, you monitor Traces and Threads.Documentation Index
Fetch the complete documentation index at: https://whyops.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Definitions
- Event: A single discrete action, such as an LLM Request, LLM Response, Tool Call Request, or Tool Call Response.
- Span: A pairing of request and response. For example, a
tool_call_requestand its correspondingtool_call_responseshare the samespanId. - Trace: A complete, end-to-end execution of an agent answering a single user query or completing a single task. A trace is a collection of events.
- Thread: A collection of traces that represent a multi-turn conversation or a long-running saga.
Trace Construction
When you use the WhyOps Proxy, traces are constructed automatically without you needing to pass trace IDs around your codebase manually. We achieve this via three fallback mechanisms:- Header Explicit ID: If you pass
X-Trace-IDorX-Thread-IDin the request headers, WhyOps uses it. - Invisible Signatures: If no header is provided, WhyOps scans the
messageshistory of the incoming request. If it finds a hidden Unicode signature (injected by WhyOps in a previous response), it decodes the signature to recover the activetraceId. - Auto-generation: If neither is found, WhyOps assumes this is a new execution and generates a fresh
traceId(UUID v4).
For maximum reliability, you can explicitly pass the
X-Trace-ID header if your framework makes it easy to access the current context. However, our Invisible Signatures handle 95% of use cases out of the box.Event Schema
Every event recorded by WhyOps contains:traceId: The overall execution context.spanId: The specific operation (e.g. one specific API call).eventType: The type of event (e.g.,user_message,tool_result,llm_response,error).timestamp: When it occurred.content: The actual payload (messages, tool outputs, errors).metadata: Model info, tokens used, latency, provider, etc.externalUserId: Optional. Your application’s user ID to link traces to your end-user entities.