Skip to content

CrewAI

CrewAI is a framework for orchestrating role-playing AI agents. SideSeat captures runs (traces) from crews, agents, and tasks.

  • SideSeat running locally (sideseat)
  • Python 3.9+
  • Model/provider credentials configured
  1. Install dependencies

    Terminal window
    pip install crewai "sideseat[crewai]"
    # or
    uv add crewai "sideseat[crewai]"
  2. Add telemetry

    from sideseat import SideSeat, Frameworks
    SideSeat(framework=Frameworks.CrewAI)
    from crewai import Agent, Task, Crew
    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()

CrewAI’s multi-agent workflows are fully traced:

from crewai import Agent, Task, Crew, Process
# Define agents
researcher = 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 tasks
research_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 crew
crew = 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
AttributeDescription
crewai.crew.nameCrew identifier
crewai.agent.roleAgent role
crewai.task.descriptionTask being executed
crewai.process.typesequential or hierarchical

Agent tools are automatically traced:

from crewai.tools import tool
@tool
def 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]
)

Both sequential and hierarchical processes are captured:

# Sequential (default)
crew = Crew(
agents=[agent1, agent2],
tasks=[task1, task2],
process=Process.sequential
)
# Hierarchical
crew = Crew(
agents=[manager, worker1, worker2],
tasks=[task1, task2],
process=Process.hierarchical,
manager_llm=ChatOpenAI(model="gpt-5-mini")
)