Skip to main content
Adapters convert existing telemetry formats into an AgentTrace. Use them when your agent already emits logs and you don’t want to add @span decorators, or when you’re working with a framework you don’t control (LangGraph, CrewAI, AutoGen, OpenClaw, etc.).

OpenClaw JSONL

OpenClaw streams telemetry as newline-delimited JSON. The adapter handles LLM turns, MCP tool calls, agent lifecycle events, and start/end event pairing:
Pass pre-parsed dicts instead of strings if you already have them:
Mark prompts for Reflex — tell the adapter which prompt ids to mark as optimization targets, or let it pick up "optimize": true events directly from the stream:
Event types recognised — the adapter handles multiple OpenClaw versions and their evolving event names: Unknown event types are skipped with a debug log — a single malformed event never aborts the import. Start/end pairing — OpenClaw can emit paired *.start / *.end events sharing a span_id. The adapter merges them automatically into single completed spans. Unmatched starts are surfaced with an error field so Origin can reason about truncated runs.

OpenTelemetry

The OTel adapter converts any OpenTelemetry spans — from the Python SDK, OTLP JSON export, or any framework using the GenAI semantic conventions — into an AgentTrace. Supported frameworks (any that emit OTel GenAI spans):
  • LangGraph / LangChain (via opentelemetry-instrumentation-langchain)
  • CrewAI (built-in OTel export)
  • AutoGen / Microsoft Agent Framework
  • Vercel AI SDK (TypeScript, via OTLP HTTP export)
  • OpenClaw (diagnostics.otel.logs path)
  • Any custom framework emitting gen_ai.* attributes

From the Python SDK

From OTLP JSON export

If you’re collecting spans from a non-Python service (TypeScript, Go, etc.) via an OTLP collector that writes JSON:

Attribute mapping

The adapter reads the OTel GenAI semantic conventions: Span classification:
  • gen_ai.operation.name in {chat, text_completion, completions}KIND_REASON
  • gen_ai.tool.name present, or name starts with mcp.KIND_TOOL
  • gen_ai.system present without a tool → KIND_REASON
  • Everything else → KIND_OTHER

Optional parameters