OpenTelemetry
Fact0 is OpenTelemetry native. Any application that exports OTLP traces can send them to Fact0 with zero code changes - just set two environment variables.Fact0 accepts both OTLP/gRPC (port 4317) and OTLP/HTTP. GenAI semantic conventions are automatically enriched into structured model invocation details.
Quick start
1. Configure your OTel SDK
Set the OTLP exporter to point at your Fact0 API:2. Python example
3. OTel Collector config
If you run an OTel Collector, add Fact0 as an exporter:How it works
Automatic translation
Fact0 translates OTel traces into its native domain model:Smart span classification
Fact0 automatically classifies spans based on OTel semantic conventions:GenAI enrichment
When GenAI semantic conventions are present, Fact0 extracts structured details:- Model info:
gen_ai.system,gen_ai.request.model - Token usage:
gen_ai.usage.prompt_tokens,gen_ai.usage.completion_tokens - Parameters:
gen_ai.request.temperature,gen_ai.request.max_tokens - Prompts/completions: Extracted from
gen_ai.content.promptandgen_ai.content.completionspan events
Exception enrichment
OTel exception events (exception.type, exception.message, exception.stacktrace) are automatically extracted into Fact0’s error detail panel with full stack traces.
Custom span types
You can explicitly set the Fact0 span type using a custom attribute:TOOL_CALL, MODEL_INVOCATION, STATE_MUTATION, HUMAN_APPROVAL, POLICY_EVALUATION.
OTel vs Fact0 SDK
Related
- Python SDK for governance-grade features
- Audit client for universal fact layer · tamper-evident event logging
- Telemetry client for execution tracing