{"id":14,"library":"crewai","title":"CrewAI","description":"Python framework for orchestrating role-playing, autonomous AI agents. Agents collaborate via sequential or hierarchical processes to complete complex tasks. Built from scratch — independent of LangChain. Two core primitives: Crews (autonomous multi-agent collaboration) and Flows (event-driven, precise orchestration).","status":"active","version":"1.10.0","language":"python","source_language":"en","source_url":"https://docs.crewai.com","tags":["agents","orchestration","multi-agent","crewai","python","llm","autonomous","flows"],"install":[{"cmd":"pip install crewai","lang":"bash","label":"Core framework"},{"cmd":"pip install crewai-tools","lang":"bash","label":"Optional: pre-built tools (SerperDevTool, FileReadTool, WebsiteSearchTool, etc.)"},{"cmd":"pip install 'crewai-tools[mcp]'","lang":"bash","label":"Optional: MCP server tool support"}],"dependencies":[{"reason":"Hard requirement. Python 3.9 and below are not supported.","package":"Python >=3.10, <3.14","optional":false},{"reason":"Required for non-native LLM providers. Installed with crewai but must be configured for non-OpenAI models.","package":"litellm","optional":false}],"imports":[{"note":"Core classes are in the crewai package. Tools (SerperDevTool etc.) are in the separate crewai_tools package.","wrong":"from crewai import *","symbol":"Agent, Task, Crew","correct":"from crewai import Agent, Task, Crew, Process\nfrom crewai import LLM"},{"note":"crewai_tools is a separate pip package. It is NOT included with pip install crewai.","wrong":"from crewai import SerperDevTool","symbol":"crewai_tools","correct":"from crewai_tools import SerperDevTool, FileReadTool"}],"quickstart":{"code":"from crewai import Agent, Task, Crew, Process\n\nresearcher = Agent(\n    role='Senior Researcher',\n    goal='Uncover groundbreaking technologies in AI',\n    backstory='You are an expert researcher with a passion for AI innovation.',\n    verbose=True\n)\n\nwriter = Agent(\n    role='Tech Writer',\n    goal='Craft compelling articles about AI discoveries',\n    backstory='You are a skilled writer who makes complex topics accessible.',\n    verbose=True\n)\n\nresearch_task = Task(\n    description='Research the latest breakthroughs in AI for 2026.',\n    expected_output='A list of 5 key AI breakthroughs with brief descriptions.',\n    agent=researcher\n)\n\nwrite_task = Task(\n    description='Write a short article based on the research findings.',\n    expected_output='A 3-paragraph article in markdown format.',\n    agent=writer\n)\n\ncrew = Crew(\n    agents=[researcher, writer],\n    tasks=[research_task, write_task],\n    process=Process.sequential,\n    verbose=True\n)\n\nresult = crew.kickoff()\nprint(result)","lang":"python","description":"Minimal two-agent crew with sequential process"},"warnings":[{"fix":"Use Python 3.10, 3.11, or 3.12. Python 3.13 is supported but 3.14 is not yet.","message":"Python <3.10 is not supported. CrewAI requires Python >=3.10 and <3.14. Installation on 3.9 will fail or produce broken behavior.","severity":"breaking","affected_versions":"all"},{"fix":"Always specify expected_output in every Task definition, even if just a short description string.","message":"Task.expected_output is a required field. Omitting it raises a validation error at instantiation time.","severity":"breaking","affected_versions":"all"},{"fix":"pip install crewai-tools (or pip install 'crewai-tools[mcp]' for MCP support)","message":"crewai-tools is a completely separate package from crewai. Tools like SerperDevTool, FileReadTool, and WebsiteSearchTool raise ImportError if crewai-tools is not installed separately.","severity":"breaking","affected_versions":"all"},{"fix":"Use 'crewai create crew <name>' CLI command to scaffold the correct project structure with YAML configs.","message":"The recommended project structure uses YAML config files (src/<project>/config/agents.yaml and tasks.yaml) with @CrewBase, @agent, @task decorators. Code-only setups from older tutorials (pre-1.0) are still valid but the YAML-first pattern is now canonical and most docs assume it.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Install from PyPI: pip install crewai-tools. Do not use the archived GitHub repo directly.","message":"The crewai-tools repo (crewAIInc/crewAI-tools on GitHub) is now archived. Tool development has moved to the crewai-tools PyPI package maintained in the main crewai ecosystem.","severity":"breaking","affected_versions":"all"},{"fix":"Use models with strong tool-call support: GPT-4o, Claude 3.5+, Gemini 2.0+, or Qwen3-72B+ for reliable agentic behavior.","message":"Small open-source models (7B and below) often fail at function/tool calling within CrewAI. The framework relies heavily on the LLM's ability to generate correctly structured tool calls.","severity":"gotcha","affected_versions":"all"},{"fix":"Install Visual Studio Build Tools with the 'Desktop development with C++' workload before pip install crewai.","message":"Windows users encounter build errors for chroma-hnswlib==0.7.6 (a memory dependency) due to missing C++ build tools.","severity":"gotcha","affected_versions":"all"},{"fix":"await crew.kickoff_async(inputs={...}) in async contexts.","message":"crew.kickoff() is synchronous and blocking. For async contexts or FastAPI use, use crew.kickoff_async() instead.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use LLM(model='anthropic/claude-sonnet-4-5', api_key=...) or set the MODEL env var to 'provider/model-name'.","message":"Non-OpenAI LLM providers require litellm and the correct model string format: 'provider/model-name' (e.g. 'anthropic/claude-sonnet-4-5', 'ollama/gemma3'). Passing just the model name without provider prefix silently routes to OpenAI.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'agent':11,12,36,45,49 'ai':10 'autonom':9,33,53 'built':23 'collabor':13,37 'complet':20 'complex':21 'core':30 'crew':32 'crewai':1,50 'driven':42 'event':41 'event-driven':40 'flow':39,54 'framework':3 'hierarch':17 'independ':26 'langchain':28 'llm':52 'multi':35,48 'multi-ag':34,47 'orchestr':5,44,46 'play':8 'precis':43 'primit':31 'process':18 'python':2,51 'role':7 'role-play':6 'scratch':25 'sequenti':15 'task':22 'two':29 'via':14","created_at":"2026-03-16T04:39:09.011572+00:00","updated_at":"2026-04-16T04:05:56.160898+00:00","problems":[{"fix":"If using OpenAI, ensure your `OPENAI_API_KEY` is set as an environment variable or in a `.env` file. If using another LLM (e.g., Groq, Ollama, Google Generative AI), explicitly pass the `llm` parameter to your agents and crew. You might still need to set a dummy `OPENAI_API_KEY=\"sk-dummy\"` in your `.env` file to bypass initial validation if the error persists.","cause":"CrewAI, or its underlying dependencies like `litellm`, often defaults to requiring an OpenAI API key for validation, even when a different LLM provider or local model is intended for use.","error":"OPENAI_API_KEY is required"},{"fix":"Install `tiktoken` explicitly. It's often beneficial to install it along with the `crewai[embeddings]` or `crewai[tools]` extras to ensure all related dependencies are met: `pip install 'crewai[embeddings]'` or `pip install tiktoken`.","cause":"The `tiktoken` library, essential for tokenization with many LLMs and often required for embeddings, is a dependency that might not be automatically installed with the base `crewai` package or if specific 'extras' like `[embeddings]` or `[tools]` were omitted during installation.","error":"ModuleNotFoundError: No module named 'tiktoken'"},{"fix":"Review your agent and task definitions, especially if loading from YAML files. Ensure that where dictionaries are expected (e.g., for agent configurations), you are providing a dictionary-like structure and not a list. Check for incorrect indentation or syntax in your YAML.","cause":"This error typically occurs when a list is provided in a context where a dictionary is expected, and the code attempts to call the `.get()` method (which is a dictionary method) on that list. This often happens with malformed YAML configurations for agents or tasks.","error":"AttributeError: 'list' object has no attribute 'get'"},{"fix":"Install the `crewai` package using pip in your active Python environment: `pip install crewai`.","cause":"The `crewai` library has not been installed in your current Python environment, or the environment where it was installed is not active.","error":"ModuleNotFoundError: No module named 'crewai'"},{"fix":"Increase the `max_iter` and/or `max_execution_time` parameters when initializing your agent. For example, `Agent(..., max_iter=25, max_execution_time=120)`. If the problem persists, consider using a more powerful LLM or breaking down the task into simpler, more manageable sub-tasks.","cause":"An agent has exceeded the configured maximum number of iterations (`max_iter`) or the maximum allowed execution time (`max_execution_time`) while attempting to complete its assigned task. This can occur with complex tasks, less capable LLMs, or insufficient default limits.","error":"Agent stopped due to iteration limit or time limit."}],"ecosystem":"pypi","meta_description":null,"install_score":28,"quickstart_score":0,"quickstart_tag":"stale","pypi_latest":"1.15.17","cli_name":"crewai","cli_version":"crewai, version 1.14.4","type":"library","homepage":"https://crewai.com","github":"https://github.com/crewAIInc/crewAI","docs":"https://docs.crewai.com","changelog":null,"pypi":"https://pypi.org/project/crewai/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["llm-agents","ai-ml","workflow"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-27","last_verified":"2026-08-26","next_check":"2026-07-27","install_tag":"stale"}}