maple-agent-tracing-crewai
Installation
SKILL.md
Maple agent tracing: CrewAI
Goal: every conversation the app runs through CrewAI shows up in Maple Agent Sessions as ONE session, with the transcript, each model call (model, tokens), each tool call (name, result, failure) and one lane per agent role.
CrewAI exports nothing to your backend. All spans come from OpenInference, and the defaults are wrong for Maple in three ways this skill fixes: the CrewAI instrumentor records no model calls (a second, SDK-level instrumentor is required), no session id, and no agent-name attribute.
Step 0: Detect versions and existing OpenTelemetry
- Read
pyproject.toml/requirements*.txt/uv.lock/poetry.lock. Needcrewai>=1.15, Python 3.10-3.13. If older, upgrade CrewAI first (1.x changed provider routing). - Find every
LLM(model=...)/Agent(llm=...)string and map it to the SDK CrewAI calls. Install one instrumentor per SDK actually used:
| Model string | SDK | Instrumentor package / class |
|---|---|---|
openai/…, openrouter/…, deepseek/…, ollama/…, hosted_vllm/…, cerebras/…, dashscope/…, custom_openai=True, or any bare name not matched below |
openai |
openinference-instrumentation-openai / OpenAIInstrumentor |
anthropic/…, claude/…, bare claude-… |
anthropic |
openinference-instrumentation-anthropic / AnthropicInstrumentor |
gemini/…, google/…, bare gemini-… |
google-genai |
openinference-instrumentation-google-genai / GoogleGenAIInstrumentor |
bedrock/…, aws/…, bare anthropic.claude-… |
boto3 |
openinference-instrumentation-bedrock / BedrockInstrumentor |
any other prefix (LiteLLM fallback, needs crewai[litellm]) |
litellm |
openinference-instrumentation-litellm / LiteLLMInstrumentor |