Conversation-level observability, measurement, and export for long-lived AI agents.
SkyWalking AI Sessionizer assembles fragmented agent telemetry into one durable conversation structure. It preserves sessions as source provenance, keeps parent and child-agent execution lineages separate, measures model-message continuity, and projects the same committed snapshot into storage, export and a local preview.
Agent runtimes record a single user-visible conversation as many unrelated artifacts — transcripts, traces, logs, provider request bodies, tool events, subagent metadata. That conversation can outlive one process, reactivate after a long idle period, and contain several concurrent agent lineages.
Trace-level inspection alone cannot answer: what did the whole conversation do; which input, model response, tool result or child-agent result led to the next model call; did that call preserve the previous message history or start a new context; which agents contributed; and what should be measured, stored and exported as one unit.
Conversation durable identity · ownership boundary
└ Segment activity window · the COMMIT unit
└ Session observed source provenance
├ ExecutionStream main ordered parent-agent lineage
│ └ Context epoch × N model-context lifetime
│ └ Talk × N one readable input → run → output
│ └ Run → Step × N
└ ExecutionStream child × N independent context per child agent
Two boundaries carry the design. Conversation is the durable aggregation and ownership boundary, and its identity is supplied — never inferred from a person, an account, or timestamp proximity. ExecutionStream is the ordered continuity boundary; model-message continuity is evaluated within one stream and one context epoch, never across them.
See the Unified Conversation Model.
Nothing is presented as observed unless it was observed.
Every claim carries a qualification (observed_replayable, observed_report_only, proposed,
unavailable) and every correlation carries a resolution state (exact_unique, exact_ambiguous,
strong_inference, unresolved, conflict). An exact identifier with several candidates stays
ambiguous — the assembler never silently chooses one. Where a runtime cannot supply something, the
adapter reports it as unavailable rather than approximating it.
| Runtime | Status | Collection |
|---|---|---|
| Claude Code | collection implemented | local files — no configuration required, and it works on history that already exists. The plugin adds which files each shell command changed. The receiver, claude-code-otlp, is off by default. It accepts what Claude Code's own OpenTelemetry exporter sends and keeps none of it, so a Claude Code set to export keeps working. |
| Codex | planned | — |
| LangChain / LangGraph | collection implemented | a receiver, langsmith-ingest, the tracing client every LangChain application carries is pointed at with four environment variables; nothing changes in the application. It lands the conversation and what each model call was sent. The plugin adds which files each tool call changed. |
Install asz, on macOS or Linux, with a version from the downloads page:
VERSION=<version>
curl -fsSL "https://raw.githubusercontent.com/apache/skywalking-ai-sessionizer/v$VERSION/install/asz.sh" | sh -s -- "$VERSION"Then run it in the directory where it should keep its data, and open http://127.0.0.1:8787:
mkdir -p ~/asz && cd ~/asz
asz serverInstall has Windows, Homebrew and the binary packages, and Quick Start the next steps.
Official documentation lives in docs/ and is indexed by
docs/menu.yml: concepts and designs, setup, the data formats, adapters, guides
and the changelog. It is published at
skywalking.apache.org/docs/skywalking-ai-sessionizer.
Early contributions should focus on schemas, privacy-safe fixtures, deterministic assembly, qualification rules and golden tests. Please avoid adding inferred identities or causal edges that cannot retain their source evidence and resolution state.
Apache SkyWalking, SkyWalking, and the Apache feather logo are trademarks of The Apache Software Foundation.
docker run --rm -p 8787:8787 -v "$PWD/data:/asz/data" \
ghcr.io/apache/skywalking-ai-sessionizer:latest view 0.0.0.0:8787See Container Image.