Skip to main content
CrewAI crews are instrumented by the OpenInference CrewAI instrumentor, which captures each agent run, task, and crew kickoff as OTLP spans. CrewAI runs the underlying model through LiteLLM, so register the LiteLLM instrumentor alongside it to capture the model call itself — model name, token counts, and cost. Point the exporter at AgentMark and the traces arrive normalized. CrewAI is a Python framework.

Setup

1

Install the instrumentors and the OTLP exporter

pip install openinference-instrumentation-crewai openinference-instrumentation-litellm \
  opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
2

Point the exporter at AgentMark and instrument CrewAI

Register both instrumentors against the same tracer provider. Use your AgentMark API key and app id from project settings.
from openinference.instrumentation.crewai import CrewAIInstrumentor
from openinference.instrumentation.litellm import LiteLLMInstrumentor
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

provider = TracerProvider()
provider.add_span_processor(
    BatchSpanProcessor(
        OTLPSpanExporter(
            endpoint="https://api.agentmark.co/v1/traces",
            headers={
                "Authorization": "<YOUR_API_KEY>",  # raw key, no "Bearer" prefix
                "X-Agentmark-App-Id": "<YOUR_APP_ID>",
            },
        )
    )
)

CrewAIInstrumentor().instrument(tracer_provider=provider)   # agent, task, crew structure
LiteLLMInstrumentor().instrument(tracer_provider=provider)  # the model call: model, tokens, cost
Without the LiteLLM instrumentor you still get the agent and crew spans, but not the model call — so model, token counts, and cost would be missing. Register both.
3

Run your crew

Run your crew as usual. Each agent, task, tool call, and model call arrives in AgentMark as a span, grouped into a trace. See Traces and logs.

What AgentMark captures

CrewAI spans use the OpenInference attribute conventions — model, token usage, input and output messages, tool calls, settings, and span kind are all mapped onto AgentMark’s normalized trace fields, and token counts feed cost tracking. See OpenInference for the full attribute mapping.

Next steps

OpenInference

How AgentMark reads OpenInference attributes

Traces and logs

Explore traces once they arrive

Have questions?

Reach out any time: