Skip to content

Traces

Distributed tracing lets you correlate events across agents and visualize execution flow.

Trace Context

python
from axonpush import get_or_create_trace

trace = get_or_create_trace()
trace_id = trace.trace_id          # e.g., "tr_a1b2c3d4e5f6g7h8"
span_id = trace.next_span_id()     # e.g., "sp_a1b2c3d4e5f6g7h8_0001"

Use an explicit trace ID:

python
trace = get_or_create_trace(trace_id="tr_my_custom_trace")

Multi-Step Tracing

python
from axonpush import AxonPush, EventType, get_or_create_trace

with AxonPush(api_key="ak_...", tenant_id="1", base_url="https://api.axonpush.xyz") as client:
    trace = get_or_create_trace()

    client.events.publish(
        identifier="research.start",
        payload={"goal": "Find papers"},
        channel_id=1,
        agent_id="researcher",
        trace_id=trace.trace_id,
        span_id=trace.next_span_id(),
        event_type=EventType.AGENT_START,
    )

    client.events.publish(
        identifier="web_search",
        payload={"query": "transformer papers 2025"},
        channel_id=1,
        agent_id="researcher",
        trace_id=trace.trace_id,
        span_id=trace.next_span_id(),
        event_type=EventType.AGENT_TOOL_CALL_START,
    )

Listing Traces

python
traces = client.traces.list(page=1, limit=20)
for t in traces:
    print(t.trace_id, t.event_count, t.duration_ms)

Trace Summary

python
summary = client.traces.get_summary("tr_abc123")
print(summary.event_count)      # 12
print(summary.duration_ms)      # 340
print(summary.error_count)      # 0
print(summary.agents)           # ["researcher", "writer"]

TraceSummary Fields

FieldTypeDescription
trace_idstrTrace identifier
event_countintTotal events in trace
agentslist[str]Unique agent IDs
event_typeslist[str]Unique event types
start_timedatetimeFirst event timestamp
end_timedatetimeLast event timestamp
duration_msintDuration in milliseconds
error_countintNumber of error events
tool_call_countintNumber of tool call events
handoff_countintNumber of handoff events

Trace Events

python
events = client.traces.get_events("tr_abc123")
for event in events:
    print(event.span_id, event.identifier, event.event_type)