Documentation Index
Fetch the complete documentation index at: https://docs.crewai.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
CrewAI releases ship new capabilities regularly. This guide walks you through the practical steps to keep your installation up to date — both the CLI and your project’s virtual environment. If you’re starting fresh, see Installation. If you’re coming from another framework, see Migrating from LangGraph.The Two Things You Might Want to Upgrade
CrewAI lives in two places on your machine, and they upgrade independently:| What | How it’s installed | How to upgrade |
|---|---|---|
The global crewai CLI | uv tool install crewai | uv tool install crewai --upgrade |
| The project venv (what your code runs) | crewai install / uv sync | uv add "crewai[...]>=X.Y.Z" then crewai install |
crewai --version tells you the CLI version. Running uv pip show crewai inside your project tells you the venv version. If they differ, that’s normal; what matters for your running code is the venv version.
Why crewai install Alone Doesn’t Upgrade
crewai install is a thin wrapper around uv sync. It installs exactly what the current uv.lock file says — it does not bump any version constraints.
If your pyproject.toml says crewai>=1.11.1 and the lock file resolved to 1.11.1, running crewai install will keep you on 1.11.1 forever, even if 1.14.4 is available.
To actually upgrade, you need to:
- Update the version constraint in
pyproject.toml - Re-solve the lock file
- Sync the venv
uv add does all three in one shot.
How to Upgrade Your Project
[tools] with whatever extras your project uses (e.g. [tools,anthropic]). Check your pyproject.toml dependencies list if you’re unsure.
uv add updates both pyproject.toml and uv.lock atomically. If you edit pyproject.toml manually, you still need to run uv lock --upgrade-package crewai to re-solve the lock file before crewai install will pick up the new version.Upgrading the Global CLI
The global CLI is separate from your project. Upgrade it with:PATH after the upgrade, refresh it:
uv add + crewai install inside the project.
Verify Both Are in Sync
CrewAI requires
Python >=3.10, <3.14. If uv was installed against an older interpreter, recreate the project venv with a supported Python before running crewai install.Breaking Changes & Migration Notes
Most upgrades only require small adjustments. The areas below are the ones that break silently or with confusing tracebacks.Import paths: tools and BaseTool
The canonical import location for tools is crewai.tools. Older paths still surface in tutorials but should be updated.
@tool decorator and BaseTool subclass both live in crewai.tools. AgentFinish and other internal-agent symbols are no longer part of the public surface — if you were importing them, switch to event listeners or Task callbacks instead.
Agent parameter changes
llmaccepts either a string model name (resolved via the configured provider) or anLLMobject for fine-grained control.verboseis a plainbool. Passing an integer no longer toggles log levels.max_iterdefaults have shifted between releases. If your agent silently stops looping after the first tool call, setmax_iterexplicitly.
Crew parameters
process=Process.hierarchicalrequires eithermanager_llm=ormanager_agent=. Without one, kickoff raises at validation time.memory=Truewith a non-default embedding provider needs anembedderdict — see Memory & embedder config below.
Task structured output
Use output_pydantic, output_json, or output_file to coerce a task’s result into a typed shape:
output_pydantic takes the class itself. Passing Article(title="", body="") is a common mistake and fails with a confusing validation error.
Memory & embedder config
Ifmemory=True and you’re not using the default OpenAI embeddings, you must pass an embedder:
OPENAI_API_KEY, OLLAMA_HOST, etc.) in your .env file. Memory storage paths are project-local by default — delete the project’s memory directory if you change embedders, since dimensions don’t mix.