INTEGRATION

Observability interop.

Actae is the execution layer under your observability, not a replacement for it. Keep your tracing stack; correlate it with durable execution.

Correlate, don't duplicate

An Actae execution is addressable at several levels; a tracing backend addresses traces and spans. The bridge is a metadata convention, not a schema change: attach trace_id and span_id when you record, and an Actae event can be found from the trace and vice versa.

  • channel / cursor — the durable execution stream and ordered position.
  • trace_id / span_id — the external trace context, carried in event metadata.
  • fork receipt / execution id — fork and tool-ledger provenance, available as correlation tags.

Export durable events as GenAI spans

The ActaeOTelBridge replays a channel and emits one span per event, lifting the OpenTelemetry GenAI semantic conventions (request/response model, usage tokens, tool name) and the actae.* identity attributes. The Python and TypeScript bridges are dependency-free — pass the real OpenTelemetry tracer at runtime. Go uses the OTel API directly.

Two directions

Import: the OpenAI Agents SDK tracing processor and the Codex OTLP receiver mirror framework telemetry into Actae. Export: the bridge mirrors Actae's durable events into your tracer. Use either or both.

Actae does not push to a collector itself — the bridge runs in your process, so the server carries no observability egress or credentials. Spans are point-in-time projections of replayed events, not a reconstructed parent/child waterfall.