CrewAI
CrewAI is a framework for orchestrating role-playing AI agents. SideSeat captures runs (traces) from crews, agents, and tasks.
Prerequisites
Section titled “Prerequisites”- SideSeat running locally (
sideseat) - Python 3.9+
- Model/provider credentials configured
Quick Start
Section titled “Quick Start”-
Start SideSeat
Terminal window npx sideseat -
Install dependencies
Terminal window pip install crewai "sideseat[crewai]"Terminal window uv add crewai "sideseat[crewai]" -
Add telemetry
from sideseat import SideSeat, Frameworksfrom crewai import Agent, Task, CrewSideSeat(framework=Frameworks.CrewAI)researcher = Agent(role='Researcher',goal='Find information',backstory='Expert researcher')task = Task(description='Research AI trends',expected_output='Summary of trends',agent=researcher)crew = Crew(agents=[researcher], tasks=[task])result = crew.kickoff() -
View runs
Open http://localhost:5388 to see your runs.
Without SideSeat SDK
Section titled “Without SideSeat SDK”-
Start SideSeat
Terminal window npx sideseat -
Set the endpoint
Terminal window export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:5388/otel/default -
Install dependencies
Terminal window pip install crewai openinference-instrumentation-crewai opentelemetry-exporter-otlpTerminal window uv add crewai openinference-instrumentation-crewai opentelemetry-exporter-otlp -
Add telemetry
from opentelemetry import tracefrom opentelemetry.sdk.trace import TracerProviderfrom opentelemetry.sdk.trace.export import BatchSpanProcessorfrom opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporterfrom openinference.instrumentation.crewai import CrewAIInstrumentorprovider = TracerProvider()provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))trace.set_tracer_provider(provider)CrewAIInstrumentor().instrument(tracer_provider=provider, skip_dep_check=True) -
View runs
Open http://localhost:5388 to see your runs.
Multi-Agent Crews
Section titled “Multi-Agent Crews”CrewAI’s multi-agent workflows are fully traced:
from crewai import Agent, Task, Crew, Process
# Define agentsresearcher = Agent( role='Senior Researcher', goal='Uncover groundbreaking technologies', backstory='Expert at finding new tech trends')
writer = Agent( role='Tech Writer', goal='Create engaging content', backstory='Skilled at explaining complex topics')
# Define tasksresearch_task = Task( description='Research the latest AI developments', expected_output='Detailed research report', agent=researcher)
write_task = Task( description='Write a blog post about the research', expected_output='Engaging blog post', agent=writer)
# Create crewcrew = Crew( agents=[researcher, writer], tasks=[research_task, write_task], process=Process.sequential)
result = crew.kickoff()SideSeat shows:
- Parent span for the crew execution
- Child spans for each agent’s work
- Child spans for each task execution
Extracted Attributes
Section titled “Extracted Attributes”| Attribute | Description |
|---|---|
crewai.crew.name | Crew identifier |
crewai.agent.role | Agent role |
crewai.task.description | Task being executed |
crewai.process.type | sequential or hierarchical |
Agent tools are automatically traced:
from crewai.tools import tool
@tooldef search_web(query: str) -> str: """Search the web for information.""" return f"Results for {query}"
agent = Agent( role='Researcher', goal='Find information', backstory='Expert researcher', tools=[search_web])Process Types
Section titled “Process Types”Both sequential and hierarchical processes are captured:
# Sequential (default)crew = Crew( agents=[agent1, agent2], tasks=[task1, task2], process=Process.sequential)
# Hierarchicalcrew = Crew( agents=[manager, worker1, worker2], tasks=[task1, task2], process=Process.hierarchical, manager_llm=ChatOpenAI(model="gpt-5-mini"))Next Steps
Section titled “Next Steps”- Python SDK — SDK reference
- Core Concepts — understanding runs, steps, and messages