CrewAI
1.15.18 open-sourceCrewAI is a framework for building multi-agent AI systems where agents collaborate to complete complex tasks autonomously.
crewai create <resource>
from crewai_tools import URLReadTool
url_tool = URLReadTool()
agent = Agent(
role='Web Researcher',
goal='Gather information from public URLs',
backstory='An expert at reading web content',
tools=[url_tool]
)
from crewai import on
@on('after_llm_call')
def inspect_llm_output(context):
print(context)
from crewai.flow.flow import Flow
flow = Flow()
response = flow.chat("What is the status of my order #1234?")
result = my_crew.kickoff(restore_from_state_id="<state_id>")
from crewai import LLM
# No api_key provided — CrewAI falls back to DefaultAzureCredential automatically
llm = LLM(
model="azure/<your-deployment>",
azure_endpoint="https://<your-resource>.openai.azure.com/",
api_version="2024-02-01",
)
result = crew.kickoff(from_checkpoint=<checkpoint_id>)
crewai checkpoint list
crewai checkpoint info <checkpoint-id>
from crewai.events import LLMCallCompletedEvent
from crewai.event_bus import event_bus
@event_bus.on(LLMCallCompletedEvent)
def on_llm_done(event: LLMCallCompletedEvent):
print(event.token_usage)
from crewai import LLM
llm = LLM(
model="ollama/llama3",
base_url="http://localhost:11434"
)
crewai logout
flow = MyFlow()
structure = flow.flow_structure()
print(structure)
from pydantic import BaseModel
from crewai import Agent, Task, Crew
class ThreatReport(BaseModel):
severity: str
affected_systems: list[str]
recommendation: str
analyst = Agent(role="Threat Analyst", goal="Analyze security incidents", backstory="...", verbose=False)
task = Task(
description="Analyze the attached incident log and produce a threat report.",
expected_output="A structured threat report",
agent=analyst,
response_format=ThreatReport,
)
crew = Crew(agents=[analyst], tasks=[task])
result = crew.kickoff()
report: ThreatReport = result.pydantic
crewai bump --no-commit
import asyncio
from crewai import Crew, Agent, Task
agent = Agent(role="Analyst", goal="Analyze data", backstory="Expert analyst")
task = Task(description="Summarize the report", agent=agent, expected_output="Summary")
crew = Crew(agents=[agent], tasks=[task])
async def main():
result = await crew.kickoff_async()
print(result)
asyncio.run(main())
import asyncio
from crewai.flow.flow import Flow, start
class MyFlow(Flow):
@start()
async def run_step(self):
return "done"
async def main():
flow = MyFlow()
result = await flow.kickoff_async()
print(result)
asyncio.run(main())
result = crew.kickoff()
for task_output in result.tasks_output:
print(task_output.messages)
embedder_config = {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
"batch_size": 50
}
}
crewai config reset
crewai config reset
crewai enterprise configure
crewai config
from crewai import Task
task = Task(
description="Summarize the latest threat intelligence report.",
expected_output="A structured summary of key findings.",
markdown=True
)
from crewai import Agent
analyst = Agent(
role="Threat Analyst",
goal="Identify emerging threats from recent feeds.",
backstory="Expert in cyber threat intelligence.",
reasoning=True,
inject_date=True
)
from crewai.tools import tool
@tool(result_as_answer=True)
def lookup_cve(cve_id: str) -> str:
"""Fetch CVE details from internal database."""
return fetch_cve_record(cve_id)
from crewai import Agent
researcher = Agent(
role="Research Analyst",
goal="Find the latest CVEs for Apache HTTP Server",
backstory="You are an expert in vulnerability research.",
llm="gpt-4o"
)
result = researcher.kickoff()
print(result)
from crewai_tools import QdrantVectorSearchTool
tool = QdrantVectorSearchTool(
collection_name="security-advisories",
url="http://localhost:6333",
api_key="<your-qdrant-api-key>"
)
agent = Agent(role="Threat Analyst", tools=[tool], ...)
from crewai.flow.persistence import persist, FlowPersistence
class MySecurityFlow(Flow):
@persist
def analyze_targets(self):
# state is automatically saved after this method completes
...
@crew
def my_crew(self) -> Crew:
return Crew(
agents=self.agents,
tasks=self.tasks,
before_kickoff=self.before_kickoff,
after_kickoff=self.after_kickoff,
)
from crewai import BaseTool
class MyScanner(BaseTool):
name: str = "Port Scanner"
description: str = "Scans open ports on a given host."
def _run(self, host: str) -> str:
# tool logic here
return f"Scanning {host}"
crewai flow add-crew
crewai flow plot
crewai create flow
crewai tool create <tool>
from crewai import Agent, LLM
llm = LLM(model="gpt-4o")
agent = Agent(
role="Security Analyst",
goal="Identify vulnerabilities in the provided code.",
backstory="Expert in application security.",
llm=llm
)
from crewai import Agent
agent = Agent(
role="Analyst",
goal="Analyze the dataset",
backstory="You are a data expert.",
llm="o1-preview",
use_system_prompt=False,
use_stop_words=False
)
from crewai import Agent
agent = Agent(
role="Researcher",
goal="Find key insights",
backstory="You are a senior researcher.",
max_rpm=10,
max_iter=5
)
crewai install
crewai deploy
result = crew.kickoff()
for task_output in result.tasks_output:
print(task_output.name, task_output.expected_output)
from crewai import Crew, Agent, Task, Process
from langchain_openai import ChatOpenAI
planner_llm = ChatOpenAI(model="gpt-4o-mini")
crew = Crew(
agents=[...],
tasks=[...],
process=Process.sequential,
planning=True,
planning_llm=planner_llm
)
crew.kickoff()
from crewai_tools import DallETool
from crewai import Agent
image_agent = Agent(
role="Image Creator",
goal="Generate visuals from descriptions",
backstory="You create images for marketing campaigns.",
tools=[DallETool()]
)
from crewai_tools import NL2SQLTool
from crewai import Agent
db_agent = Agent(
role="Data Analyst",
goal="Answer business questions from the database",
backstory="You query databases using plain English.",
tools=[NL2SQLTool(db_uri="mysql+pymysql://user:pass@host/dbname")]
)
from crewai import Crew
crew = Crew(
agents=[...],
tasks=[...],
planning=True
)
result = crew.kickoff()
crewai replay <task_id>
crewai reset-memory
crewai train -n 5
results = my_crew.kickoff_for_each(inputs=[{"target": "host1"}, {"target": "host2"}, {"target": "host3"}])
import asyncio
async def main():
result = await my_crew.kickoff_async(inputs={"target": "host1"})
print(result)
asyncio.run(main())
result = my_crew.kickoff(inputs={"target": "host1"})
print(result.usage_metrics)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
memory=True
)
from crewai_tools import tool
@tool
def my_tool(query: str) -> str:
...
my_tool.cache_function = lambda args, result: 'volatile' not in args['query']
crewai create
from crewai import Agent, Task, Crew
agent = Agent(**{
"role": "Researcher",
"goal": "Find the latest AI news",
"backstory": "You are an expert at finding information."
})
task = Task(**{
"description": "Search for the top 5 AI news stories today",
"agent": agent
})
result = crew.kickoff(inputs={'domain': 'example.com'})
print(crew.usage_metrics)
agent = Agent(
role='Analyst',
llm=my_llm,
function_calling_llm=my_function_llm,
tools=[my_tool]
)
def my_callback(step):
print(step)
agent = Agent(..., step_callback=my_callback)
crew = Crew(agents=[agent], ..., step_callback=my_callback)
from crewai import Agent, Task, Crew, Process
researcher = Agent(
role='Researcher',
goal='Find key facts about quantum computing',
tools=[search_tool]
)
writer = Agent(
role='Writer',
goal='Summarize research into a short briefing',
tools=[]
)
research_task = Task(description='Research recent quantum computing breakthroughs', tools=[search_tool])
write_task = Task(description='Write a 200-word executive summary', tools=[])
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential
)
result = crew.kickoff()
print(result) Summary
CrewAI is an open-source (MIT-licensed) Python framework for building multi-agent automation, letting developers define agents with roles that collaborate autonomously through "Crews" or follow explicit, event-driven logic through "Flows." It's a library imported into application code rather than a standalone service, aimed at developers building LLM-driven automation who need more structure than a single agent loop provides — flows support conditional branching, checkpointed state, and CLI-driven kickoff and resumption. Its own README frames it as a production-ready alternative to piecing together agent orchestration by hand, with pluggable backends for memory, knowledge, and RAG rather than a fixed stack. Development is active: 392 contributors, over 2,000 commits in the past year, and a release 16 days ago.
CrewAI is a framework for building multi-agent AI systems where agents collaborate to complete complex tasks autonomously.
What CrewAI answers
Can I recover a run that failed partway through, or does it start over from the beginning?
crew and flow state can be checkpointed and persisted, and a run resumes from a saved state identifier instead of restarting
What happens to my code if I upgrade?
removed accessors and renamed tools break existing code that references the old names, so upgrades need a pass over agent and tool references
Can I swap out the memory or retrieval backend, or am I locked into one stack?
memory, knowledge, RAG, and the flow locking backend are pluggable defaults, each replaceable rather than fixed
Do I have to write code to define a flow, or can it come from configuration?
flows and crews can be declared in config and loaded rather than authored entirely in code, and kicked off from the command line
Can I see what a run actually cost in tokens?
each LLM call emits usage and completion data, giving per-call cost and rate-limit visibility rather than an aggregate estimate
Is this still an experimental project or something I can build against?
most capabilities ship as regular releases, though newer additions like the skills repository sit behind an experimental gate until stabilized
Examples
Command line
No option matches that search.
| option | found in | since | description |
|---|
No option matches that search.
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Release history
- 1.15.18
CrewAI 1.15.18 promotes conversational flows to stable, adds declarative state/router config, and crew-style LLM config in chat declarations.
└──▷ GET THIS VERSION$ git clone --branch 1.15.18 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.18
- ›Conversational flows are now stable (promoted out of experimental/beta status).
- ›A declarative chat flow can now define its own state shape directly in the flow declaration.
- ›A router's response format can now be named in the flow declaration itself.
- ›Crew-style LLM config is now accepted inside a conversational flow declaration, unifying configuration patterns.
- ›Deployment creation now records the deployment with a given UUID, and project creation is reported with the minted project ID.
+2 moreshow less
- ›Run telemetry now records whether a run had inputs, without recording the input values themselves.
- ›Project ID is backfilled from every user-invoked project command.
- 1.15.17
CrewAI 1.15.17 adds declarative conversational flow support and AMP slug propagation for tool resolution.
└──▷ GET THIS VERSION$ git clone --branch 1.15.17 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.17
- ›Enables declarations to drive conversational mode, making conversational flows opt-in via declarative configuration rather than imperative code.
- ›Synthesizes built-in conversational methods for declarations, allowing conversational agent behaviors to be expressed in YAML/declarative form.
- ›Handles oversized single messages during chunking, enabling processing of payloads that previously exceeded per-message size limits.
- 1.15.16
CrewAI 1.15.16 adds execution context management with UUID support and richer observability for flows and deployments.
└──▷ GET THIS VERSION$ git clone --branch 1.15.16 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.16
- ›Adds execution context management with UUID support for tracking individual execution runs.
- ›Records the type of exception that ended a flow, enabling richer post-mortem observability.
- ›Records when a trace batch is shared with AMP, improving telemetry auditability.
- ›Counts deployments from any origin and records where they started, broadening deployment provenance tracking.
- 1.15.16
CrewAI 1.15.16 adds execution context management with UUID support, flow exception recording, and expanded deployment origin tracking.
└──▷ GET THIS VERSION$ git clone --branch 1.15.16 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.16
- ›Introduces execution context management with UUID support for tracing individual flow runs.
- ›Records the type of exception that ended a flow, enabling richer post-mortem observability in AMP traces.
- ›Tracks when a trace batch is shared with AMP, improving observability auditability.
- ›Counts deployments from any origin and records where each deployment started, expanding deployment analytics across all launch surfaces.
- 1.15.15
CrewAI 1.15.15 adds flow outcome, duration, and human-in-the-loop signal reporting to flow telemetry.
└──▷ GET THIS VERSION$ git clone --branch 1.15.15 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.15
- ›Reports flow outcome, duration, and human-in-the-loop signals as part of flow telemetry.
- 1.15.15
CrewAI 1.15.15 adds flow outcome, duration, and human-in-the-loop signal reporting to flow telemetry.
└──▷ GET THIS VERSION$ git clone --branch 1.15.15 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.15
- ›Flow execution now reports outcome, duration, and human-in-the-loop signals as part of flow telemetry.
- 1.15.14
CrewAI 1.15.14 splits runtime context from the coding agent and introduces project ID support.
└──▷ GET THIS VERSION$ git clone --branch 1.15.14 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.14
- ›Separates runtime context from the coding agent, allowing project ID to be tracked independently per execution.
- 1.15.14
CrewAI 1.15.14 splits runtime context from the coding agent and introduces project ID support.
└──▷ GET THIS VERSION$ git clone --branch 1.15.14 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.14
- ›Separates runtime context from the coding agent, allowing project ID to be tracked independently per execution.
- 1.15.12
CrewAI 1.15.12 adds URLReadTool, app metadata on platform action tools, and unifies scaffolding under
crewai create└──▷ GET THIS VERSION$ git clone --branch 1.15.12 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.12
└──▷ TRY ITScaffold a new CrewAI resource using the unified create command instead of legacy subcommands.$ crewai create <resource>- ›Unifies scaffolding commands under the
crewai create <resource>subcommand. - ›Adds
URLReadToolfor reading arbitrary URLs. - ›Adds app metadata to platform action tools.
- ›Unifies scaffolding commands under the
- 1.15.12
CrewAI 1.15.12 adds URLReadTool, unifies project scaffolding under
crewai create <resource>, and exposes app metadata on platform action tools.└──▷ GET THIS VERSION$ git clone --branch 1.15.12 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.12
└──▷ USE ITGive an agent the ability to retrieve live web content by attaching URLReadTool to its tool list.from crewai_tools import URLReadTool url_tool = URLReadTool() agent = Agent( role='Web Researcher', goal='Gather information from public URLs', backstory='An expert at reading web content', tools=[url_tool] )- ›Unifies project scaffolding under the
crewai create <resource>subcommand, replacing prior separate scaffold commands. - ›Adds
URLReadToolfor fetching and reading content from arbitrary URLs inside agent workflows. - ›Adds app metadata to platform action tools, surfacing richer context for actions executed via the CrewAI platform.
- ›Unifies project scaffolding under the
- 1.15.11
CrewAI 1.15.11 adds an IBM Db2 search tool and enterprise account linking via project_id.
└──▷ GET THIS VERSION$ git clone --branch 1.15.11 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.11
- ›Adds
project_idsupport to link open-source CrewAI usage to an enterprise account. - ›Adds a new IBM Db2 search tool for querying Db2 databases from within a crew.
- ›Surfaces AMP in
AGENTS.mdand adds coding-agent detection to telemetry. - ›Tracks interception-hook dispatches in telemetry for improved observability.
- ›Adds
- 1.15.11
CrewAI 1.15.11 adds an IBM Db2 search tool, project_id for enterprise account linking, and AMP surfacing in AGENTS.md.
└──▷ GET THIS VERSION$ git clone --branch 1.15.11 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.11
- ›Adds
project_idto link open-source CrewAI usage to an enterprise account. - ›Adds IBM Db2 search tool, extending the library's built-in data-source integrations.
- ›Surfaces CrewAI AMP in
AGENTS.mdand adds coding-agent detection in telemetry. - ›Tracks interception-hook dispatches in telemetry for improved observability of agent workflows.
- ›Adds
- 1.15.10
CrewAI 1.15.10 adds skill usage event collection for agent observability.
└──▷ GET THIS VERSION$ git clone --branch 1.15.10 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.10
- ›Collects skill usage events, enabling observability into which agent skills are invoked during crew runs.
- 1.15.9
CrewAI 1.15.9 surfaces tool failures accurately, adds FlowFailedEvent, and introduces progressive disclosure for skills.
└──▷ GET THIS VERSION$ git clone --branch 1.15.9 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.9
- ›Emits
FlowFailedEventwhen a flow execution fails, enabling downstream handlers to react to flow-level errors. - ›Surfaces tool failures as actual failures instead of silently reporting them as success, improving error visibility.
- ›Implements progressive disclosure for skills, controlling how skill details are revealed during execution.
- ›Emits
- 1.15.9
CrewAI 1.15.9 adds FlowFailedEvent emission, surfaces tool failures accurately, and introduces progressive disclosure for skills.
└──▷ GET THIS VERSION$ git clone --branch 1.15.9 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.9
- ›Emits
FlowFailedEventwhen a flow execution fails, enabling event-driven error handling in Flows. - ›Surfaces tool failures as actual failures instead of silently reporting them as success, giving agents accurate tool execution feedback.
- ›Adds progressive disclosure for skills, revealing skill detail incrementally rather than all at once.
- ›Emits
- 1.15.8
CrewAI 1.15.8 adds WaitTool for pausing agent execution on long-running jobs.
└──▷ GET THIS VERSION$ git clone --branch 1.15.8 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.8
- ›Adds
WaitToolto pause agent execution while waiting for long-running jobs to complete.
- ›Adds
- 1.15.8
CrewAI 1.15.8 adds WaitTool for pausing agent execution during long-running jobs.
└──▷ GET THIS VERSION$ git clone --branch 1.15.8 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.8
- ›Adds
WaitToolto the tool library, enabling agents to pause execution while waiting on long-running background jobs.
- ›Adds
- 1.15.7
CrewAI 1.15.7 adds runtime skill usage event emission for observability.
└──▷ GET THIS VERSION$ git clone --branch 1.15.7 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.7
- ›Emits skill usage events at runtime for observability into agent behavior during crew execution.
- 1.15.7
CrewAI 1.15.7 emits skill usage events at runtime for agent observability.
└──▷ GET THIS VERSION$ git clone --branch 1.15.7 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.7
- ›Emits skill usage events at runtime, enabling observability of which skills agents invoke during crew execution.
- 1.15.7a1
CrewAI 1.15.7a1 adds runtime skill usage event emission for improved observability.
└──▷ GET THIS VERSION$ git clone --branch 1.15.7a1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.7a1
- ›Emits skill usage events at runtime, enabling observability pipelines to capture when and how skills are invoked by agents.
- 1.15.7a1
CrewAI 1.15.7a1 adds runtime skill usage event emission for improved observability.
└──▷ GET THIS VERSION$ git clone --branch 1.15.7a1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.7a1
- ›Emits skill usage events at runtime, enabling observability pipelines to capture when and how skills are invoked by agents.
- 1.15.5
CrewAI 1.15.5 adds authentication for skill registry downloads.
└──▷ GET THIS VERSION$ git clone --branch 1.15.5 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.5
- ›Adds authentication support for skill registry downloads, enabling access to protected or private skills from the CrewAI skill registry.
- 1.15.5
CrewAI 1.15.5 adds authentication for skill registry downloads.
└──▷ GET THIS VERSION$ git clone --branch 1.15.5 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.5
- ›Adds authentication support for skill registry downloads, enabling access to protected or private skills from the CrewAI skill registry.
- 1.15.3
CrewAI 1.15.3 adds step interception points, an
@onhook dispatcher, and declarative flow support in the TUI.└──▷ GET THIS VERSION$ git clone --branch 1.15.3 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.3
└──▷ USE ITIntercept a specific execution boundary in a crew run to log or mutate state at that step.from crewai import on @on('after_llm_call') def inspect_llm_output(context): print(context)- ›Adds step interception points and a generic
@onhook dispatcher for wiring execution-boundary hooks at precise points in agent and crew execution. - ›Adds an
organization_idparameter to thePlusAPIclient for multi-org API targeting. - ›Runs declarative flows on the TUI with a headless terminal fallback.
- ›Adds step interception points and a generic
- 1.15.2
CrewAI 1.15.2 adds inline skill definitions, templated Flow action inputs, stream frame protocol, and AgentExecutor feedback handling.
└──▷ GET THIS VERSION$ git clone --branch 1.15.2 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.2
- ›Supports inline skill definitions, allowing skills to be defined directly without separate files.
- ›Adds templated Flow action inputs, enabling dynamic parameterization of Flow actions.
- ›Introduces a generated Flow Definition authoring skill for scaffolding flow definitions.
- ›Defines a stream frame protocol for flows, enabling structured streaming communication.
- ›Adds text helpers for Flow CEL prompts and flow skill examples.
+4 moreshow less
- ›Implements message setup and feedback handling in AgentExecutor.
- ›Adds repository agents to flow definitions.
- ›Types tool and app fields in CrewDefinition for stronger schema enforcement.
- ›Pulls latest LLM models dynamically in the crew wizard.
- 1.15.1
CrewAI 1.15.1 adds automatic Git init for new projects, enforces explicit crew definitions, and opens the deployment page post-deploy.
└──▷ GET THIS VERSION$ git clone --branch 1.15.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.1
- ›Automatically initializes a Git repository when generating a new CrewAI project.
- ›Requires explicit CrewAI project definitions, enforcing structured crew configuration at project creation.
- ›Opens the deployment page in the browser automatically after running a CLI deploy.
- 1.15.0
CrewAI 1.15.0 adds declarative Flow definitions, DMN mode, composite
eachactions, and full CLI TUI support for conversational flows.└──▷ GET THIS VERSION$ git clone --branch 1.15.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.15.0
- ›Adds unified declarative flow loading so flows can be defined and loaded from config rather than pure code.
- ›Adds declarative Flow CLI support, enabling flow kickoff and management via CLI commands.
- ›Adds
eachcomposite action to FlowDefinition for iterating over steps within a flow. - ›Adds optional
ifexpression toeach.dosteps for conditional iteration logic inside flows. - ›Adds single-agent actions directly inside Flow definitions.
+5 moreshow less
- ›Adds crew actions to FlowDefinition, letting flows orchestrate full crews as named actions.
- ›Adds inline crew definition loading so crews can be defined directly within a flow config.
- ›Implements DMN (Decision Model and Notation) mode support in crew creation and execution.
- ›Supports conversational flows in the CLI TUI for interactive, turn-based flow sessions.
- ›Tracks conversational flow turn usage in telemetry for observability into multi-turn interactions.
└──▷ BREAKING ON UPGRADE- !
StateProxyis removed from flow state access — code that usesStateProxyto read or write flow state will break.
- 1.14.7
CrewAI 1.14.7 adds a chat API for conversational flows, native Snowflake Cortex LLM, pluggable memory/RAG backends, and richer LLM event metadata.
└──▷ GET THIS VERSION$ git clone --branch 1.14.7 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.7
└──▷ USE ITEnable conversational back-and-forth with a flow using the new chat API.from crewai.flow.flow import Flow flow = Flow() response = flow.chat("What is the status of my order #1234?")- ›Adds a chat API enabling conversational flows within CrewAI.
- ›Adds native Snowflake Cortex LLM provider integration.
- ›Introduces pluggable default backends for memory, knowledge, RAG, and flow — making the locking backend overridable.
- ›Surfaces real
finish_reason, sampling parameters, andresponse.idon LLM events for richer observability. - ›Types DSL triggers as route-aware decorators for more expressive flow definitions.
+3 moreshow less
- ›Builds
FlowDefinitionfrom Flow DSL metadata, separating DSL, definition, and runtime. - ›Adds support for crew trained agents file, enabling persisted agent training state.
- ›Improves CrewAI import speed via lazy-loading of docling imports, unlocking faster cold starts.
- 1.14.6
CrewAI 1.14.6 adds env-var isolation in StdioTransport, Databricks env_var declarations, and enhanced planning configuration.
└──▷ GET THIS VERSION$ git clone --branch 1.14.6 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.6
- ›Adds
env_varsdeclaration support onDatabricksQueryToolfor explicit credential scoping. - ›Improves planning configuration and observation handling in agent execution.
- ›Moves Skills Repository behind the
CREWAI_EXPERIMENTALgate as an experimental feature.
- ›Adds
- 1.14.5
CrewAI 1.14.5 adds state-restore kickoff, ExaSearchTool highlights, and Daytona sandbox improvements.
└──▷ GET THIS VERSION$ git clone --branch 1.14.5 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.5
└──▷ USE ITResume a long-running Crew from a checkpoint state ID instead of restarting from scratch.result = my_crew.kickoff(restore_from_state_id="<state_id>")
- ›Adds
restore_from_state_idkickoff parameter to resume a Crew run from a previously saved state. - ›Adds highlight results support to
ExaSearchTool(formerlyEXASearchTool). - ›Improves Daytona sandbox tool integration.
- ›Defaults Crew agents to
AgentExecutor, deprecatingCrewAgentExecutor.
└──▷ BREAKING ON UPGRADE- !The
EXASearchToolis renamed toExaSearchTool; imports using the old name will break.
- ›Adds
- 1.14.4
CrewAI 1.14.4 adds custom persist keys, Azure OpenAI Responses API, Vertex AI workload identity, Tavily Research, and You.com MCP tools.
└──▷ GET THIS VERSION$ git clone --branch 1.14.4 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.4
- ›Supports custom persistence keys in the
@persistdecorator for fine-grained checkpoint control. - ›Adds Responses API support for the Azure OpenAI provider.
- ›Forwards
credential_scopesto the Azure AI Inference client for scoped authentication. - ›Adds Vertex AI workload identity setup for credential-free GCP deployments.
- ›Adds Tavily Research and Get Research tools for AI-powered web research workflows.
+1 moreshow less
- ›Adds You.com MCP tools covering search, research, and content extraction.
- ›Supports custom persistence keys in the
- 1.14.3
CrewAI 1.14.3 adds lifecycle events for checkpoints, e2b/Daytona sandbox support, Bedrock V4, Azure DefaultAzureCredential fallback, and ~29% cold-start reduction.
└──▷ GET THIS VERSION$ git clone --branch 1.14.3 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.3
└──▷ USE ITUse keyless Azure auth in environments where injecting an API key is not possible (e.g., managed identity on Azure).from crewai import LLM # No api_key provided — CrewAI falls back to DefaultAzureCredential automatically llm = LLM( model="azure/<your-deployment>", azure_endpoint="https://<your-resource>.openai.azure.com/", api_version="2024-02-01", )- ›Adds lifecycle events for checkpoint operations, enabling observability hooks around checkpoint create, resume, and fork actions.
- ›Supports e2b sandbox integration for secure code execution within crews.
- ›Adds Daytona sandbox tools for enhanced sandboxed functionality.
- ›Adds checkpoint and fork support to standalone agents, not just full crews.
- ›Falls back to DefaultAzureCredential when no API key is provided in the Azure integration, enabling keyless auth flows.
+2 moreshow less
- ›Adds Bedrock V4 support for AWS-hosted model access.
- ›Optimizes MCP SDK and event types to reduce cold start by ~29%, unlocking faster agent startup in latency-sensitive deployments.
- 1.14.2
CrewAI 1.14.2 adds checkpoint resume/fork/prune, template management, and enriched LLM token tracking.
└──▷ GET THIS VERSION$ git clone --branch 1.14.2 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.2
└──▷ USE ITResume a failed crew run from a checkpoint instead of restarting from scratch.result = crew.kickoff(from_checkpoint=<checkpoint_id>)
- ›Adds
checkpoint resume,diff, andprunecommands for managing crew execution checkpoints. - ›Adds
from_checkpointparameter toAgent.kickoffand related methods to restart runs from a saved state. - ›Adds checkpoint forking with lineage tracking, enabling branched execution from any saved checkpoint.
- ›Adds template management commands for creating and managing project templates.
- ›Adds deploy validation CLI for pre-flight checks before deploying crews.
+1 moreshow less
- ›Enriches LLM token tracking with reasoning tokens and cache creation tokens.
- ›Adds
- 1.14.1
CrewAI 1.14.1 adds async checkpoint TUI browser and proper resource management for streaming outputs.
└──▷ GET THIS VERSION$ git clone --branch 1.14.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.1
- ›Adds async checkpoint TUI browser for interactive inspection of crew checkpoints.
- ›Adds aclose()
/close() methods and async context manager support to streaming outputs for proper resource cleanup.
- 1.14.0
CrewAI 1.14.0 adds runtime state checkpointing with SQLite storage, automatic checkpoint config, and new CLI commands for checkpoint management.
└──▷ GET THIS VERSION$ git clone --branch 1.14.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.14.0
└──▷ TRY ITList all saved checkpoints for a crew run to find a resume point after an interrupted execution.$ crewai checkpoint listInspect details of a specific checkpoint before deciding whether to resume from it.$ crewai checkpoint info <checkpoint-id>- ›Adds
checkpoint listandcheckpoint infoCLI commands to inspect saved crew execution states. - ›Introduces
SqliteProviderfor persistent checkpoint storage backend. - ›Adds
CheckpointConfigfor configuring automatic checkpointing of crew runs. - ›Implements runtime state checkpointing and an event system so long-running crews can be resumed after interruption.
- ›Adds
guardrail_typeandnamefields to traces to distinguish guardrail events in observability pipelines.
+1 moreshow less
- ›Exports
JsonProvideras an additional checkpoint storage option alongsideSqliteProvider.
└──▷ BREAKING ON UPGRADE- !
CodeInterpreterToolis removed and code execution parameters are deprecated — any crew or agent config referencingCodeInterpreterToolor those parameters will break on upgrade.
- ›Adds
- 1.13.0
CrewAI 1.13.0 adds unified runtime state serialization, richer telemetry spans, token usage events, and an A2UI extension.
└──▷ GET THIS VERSION$ git clone --branch 1.13.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.13.0
└──▷ USE ITCapture token usage from every LLM call — useful for cost attribution or rate-limit monitoring in a pipeline.from crewai.events import LLMCallCompletedEvent from crewai.event_bus import event_bus @event_bus.on(LLMCallCompletedEvent) def on_llm_done(event: LLMCallCompletedEvent): print(event.token_usage)- ›Adds
RuntimeStateRootModel for unified state serialization across crew runs. - ›Enhances the event listener with new telemetry spans covering skill and memory events.
- ›Adds A2UI extension with v0.8/v0.9 support, schemas, and documentation.
- ›Emits token usage data in
LLMCallCompletedEventfor per-call cost and usage tracking. - ›Reduces framework overhead via a lazy event bus and skips tracing entirely when disabled.
- ›Adds
- 1.12.1
CrewAI 1.12.1 adds Qdrant memory backend, agent skills, native OpenAI-compatible providers, and automatic hierarchical memory isolation.
└──▷ GET THIS VERSION$ git clone --branch 1.12.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.12.1
└──▷ USE ITConnect CrewAI to a self-hosted Ollama instance as a native OpenAI-compatible provider, bypassing LiteLLM.from crewai import LLM llm = LLM( model="ollama/llama3", base_url="http://localhost:11434" )- ›Adds
request_idtoHumanFeedbackRequestedEventfor tracking human-in-the-loop feedback requests. - ›Adds Qdrant Edge storage backend for the memory system.
- ›Adds agent skills support.
- ›Implements automatic
root_scopefor hierarchical memory isolation across agents. - ›Supports native OpenAI-compatible providers: OpenRouter, DeepSeek, Ollama, vLLM, Cerebras, and Dashscope.
+2 moreshow less
- ›Adds
logoutcommand to the CLI. - ›Adds
docs-checkcommand to analyze changes and generate docs with translations.
- ›Adds
- 1.12.0
CrewAI 1.12.0 adds Qdrant memory backend, agent skills, native OpenAI-compatible providers, hierarchical memory isolation, and a CLI logout command.
└──▷ GET THIS VERSION$ git clone --branch 1.12.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.12.0
└──▷ TRY ITLog out of the CrewAI platform from the terminal to rotate credentials or switch accounts.$ crewai logout- ›Adds Qdrant Edge as a storage backend for the memory system.
- ›Introduces agent skills as a new first-class capability for agents.
- ›Implements automatic
root_scopefor hierarchical memory isolation across crews. - ›Supports native OpenAI-compatible providers: OpenRouter, DeepSeek, Ollama, vLLM, Cerebras, and Dashscope — without requiring LiteLLM.
- ›Adds a
logoutcommand to the CrewAI CLI.
+1 moreshow less
- ›Adds a
docs-checkCLI command to analyze changes and generate translated documentation.
- 1.11.1
CrewAI 1.11.1 adds flow_structure() serializer for programmatic Flow class introspection.
└──▷ GET THIS VERSION$ git clone --branch 1.11.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.11.1
└──▷ USE ITInspect the structure of a defined Flow programmatically — useful for debugging or generating visual representations of agent pipelines.flow = MyFlow() structure = flow.flow_structure() print(structure)
- ›Adds flow_structure() serializer method to the Flow class for structured introspection of flow topology.
- 1.10.0
CrewAI 1.10.0 adds user input handling in Flows, enhanced MCP tool resolution, and auto-updating tool specs.
└──▷ GET THIS VERSION$ git clone --branch 1.10.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.10.0
- ›Adds user input handling in Flows, enabling human-in-the-loop data collection mid-flow execution.
- ›Enhances MCP tool resolution and emits related events for better observability of MCP-based tool use.
- ›Adds
started_event_idtracking on the event bus for correlating flow and agent lifecycle events. - ›Introduces auto-update of
tools.specs, keeping tool specifications current without manual intervention. - ›Enhances HITL (Human-in-the-Loop) self-loop functionality in human feedback integration.
+4 moreshow less
- ›Improves JSON argument parsing and validation in
CrewAgentExecutorandBaseToolfor more robust tool invocation. - ›Migrates CLI HTTP client from
requeststohttpx, enabling async-compatible CLI operations. - ›Adds versioned documentation support and yanked-version detection in release notes.
- ›Updates LanceDB version and adds lance-namespace packages for expanded vector store integration.
- 1.9.1
CrewAI 1.9.1 adds before/after tool call hooks and structured output support across providers
└──▷ GET THIS VERSION$ git clone --branch 1.9.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.9.1
- ›Adds
beforeandaftertool call hooks inCrewAgentExecutorfor intercepting and acting on tool invocations. - ›Supports structured outputs and
response_formatparameter across LLM providers for typed agent responses.
- ›Adds
- 1.9.0
CrewAI 1.9.0 adds A2A task execution, Keycloak SSO, structured outputs, and native multimodal file handling.
└──▷ GET THIS VERSION$ git clone --branch 1.9.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.9.0
└──▷ USE ITEnforce a typed JSON schema on LLM output so downstream code can safely parse structured results.from pydantic import BaseModel from crewai import Agent, Task, Crew class ThreatReport(BaseModel): severity: str affected_systems: list[str] recommendation: str analyst = Agent(role="Threat Analyst", goal="Analyze security incidents", backstory="...", verbose=False) task = Task( description="Analyze the attached incident log and produce a threat report.", expected_output="A structured threat report", agent=analyst, response_format=ThreatReport, ) crew = Crew(agents=[analyst], tasks=[task]) result = crew.kickoff() report: ThreatReport = result.pydantic- ›Adds structured outputs and
response_formatsupport across providers for typed, schema-constrained LLM responses. - ›Adds
response_idfield in streaming responses for tracking and correlating streamed completions. - ›Adds event ordering and parent-child hierarchy to the event system for richer execution tracing.
- ›Adds Keycloak SSO provider support for enterprise authentication integration.
- ›Adds native multimodal file handling with OpenAI Responses API support.
+5 moreshow less
- ›Adds agent-to-agent (A2A) task execution utilities for orchestrating inter-agent workflows.
- ›Adds A2A server config and agent card generation for declaring and advertising agent capabilities.
- ›Adds additional A2A events with enriched event metadata for deeper observability into A2A interactions.
- ›Adds additional A2A transports for flexible agent-to-agent communication.
- ›Adds Galileo integration for LLM evaluation and observability.
- ›Adds structured outputs and
- 1.8.1
CrewAI 1.8.1 adds Agent-to-Agent (A2A) task execution, server configuration, agent card generation, and new transports.
└──▷ GET THIS VERSION$ git clone --branch 1.8.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.8.1
- ›Adds A2A task execution utilities for orchestrating agent-to-agent workflows.
- ›Adds A2A server configuration and agent card generation to expose CrewAI agents as A2A-compatible services.
- ›Adds additional A2A transports, broadening connectivity options between agents.
- ›Adds Galileo to the integrations page, enabling Galileo observability for CrewAI workflows.
- 1.8.0
CrewAI 1.8.0 adds Agent-to-Agent async/streaming/push update mechanisms and Human-in-the-Loop support for Flows.
└──▷ GET THIS VERSION$ git clone --branch 1.8.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.8.0
- ›Adds native async chain support for agent-to-agent (A2A) communication.
- ›Introduces A2A update mechanisms — poll, stream, and push — with configurable handlers.
- ›Adds Human-in-the-Loop (HITL) feedback support directly within Flows via global flow configuration.
- ›Adds streaming tool call events for real-time observability of tool execution.
- ›Introduces production-ready Flows and Crews architecture.
+1 moreshow less
- ›Improves EventListener and TraceCollectionListener for enhanced event handling.
- 1.7.1
CrewAI 1.7.1 adds a
--no-commitflag to the bump command and switches to JSON schema for tool argument serialization.└──▷ GET THIS VERSION$ git clone --branch 1.7.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.7.1
└──▷ TRY ITBump the project version without creating a git commit, useful in CI pipelines where you control commits separately.$ crewai bump --no-commit
- ›Adds
--no-commitflag to thebumpcommand, allowing version bumps without auto-committing changes. - ›Switches tool argument serialization to use JSON schema for more structured, interoperable tool definitions.
- ›Adds
- 1.7.0
CrewAI 1.7.0 adds comprehensive async support across flows, crews, tasks, tools, memory, knowledge, and LLMs.
└──▷ GET THIS VERSION$ git clone --branch 1.7.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.7.0
└──▷ USE ITRun a full crew asynchronously to avoid blocking the event loop in an async application or service.import asyncio from crewai import Crew, Agent, Task agent = Agent(role="Analyst", goal="Analyze data", backstory="Expert analyst") task = Task(description="Summarize the report", agent=agent, expected_output="Summary") crew = Crew(agents=[agent], tasks=[task]) async def main(): result = await crew.kickoff_async() print(result) asyncio.run(main())Kick off a Flow asynchronously so multiple flows can run concurrently in the same process.import asyncio from crewai.flow.flow import Flow, start class MyFlow(Flow): @start() async def run_step(self): return "done" async def main(): flow = MyFlow() result = await flow.kickoff_async() print(result) asyncio.run(main())- ›Adds async flow kickoff, enabling non-blocking orchestration of multi-agent pipelines.
- ›Adds async crew support so entire crews can be run concurrently without blocking the event loop.
- ›Adds async task support for individual task execution within crews.
- ›Adds async knowledge and memory support for non-blocking retrieval and storage operations.
- ›Adds async support for tools and the agent executor with improved typing.
+4 moreshow less
- ›Adds native async tool support, allowing tools to be defined and invoked asynchronously.
- ›Adds async LLM support for non-blocking model inference calls.
- ›Implements the agent-to-agent (A2A) extensions API with async agent card caching.
- ›Introduces system event types and a handler for observability and lifecycle events.
- 1.6.0
CrewAI 1.6.0 adds streaming results for flows and crews, Entra ID CLI login, a Merge Agent Handler tool, and Gemini 2.5 Pro preview support.
└──▷ GET THIS VERSION$ git clone --branch 1.6.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.6.0
- ›Adds streaming result support to flows and crews, enabling real-time output consumption.
- ›Supports CLI login with Entra ID (Microsoft Entra / Azure AD) for enterprise SSO authentication.
- ›Adds Merge Agent Handler tool for combining agent outputs.
- ›Enhances flow event state management for improved control over flow lifecycle events.
- 1.5.0
CrewAI 1.5.0 adds LLM call hooks, exposes messages to task outputs, and improves A2A trust and Okta data.
└──▷ GET THIS VERSION$ git clone --branch 1.5.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.5.0
└──▷ USE ITInspect the full message history attached to a task result for auditing or downstream processing.result = crew.kickoff() for task_output in result.tasks_output: print(task_output.messages)- ›Adds
beforeandafterLLM call hooks inCrewAgentExecutorfor observability and control around every LLM invocation. - ›Exposes messages to
TaskOutputandLiteAgentOutputs, giving callers access to the full message history from a task run. - ›Adds A2A trust remote completion status flag for agent-to-agent trust workflows.
- ›Fetches and stores richer data about Okta authorization servers for enhanced auth integrations.
- ›Enhances schema description of
QdrantVectorSearchToolfor improved usability and discoverability.
- ›Adds
- 1.4.0
CrewAI 1.4.0 adds first-class MCP support, LLM message interceptor hooks, and enhances the QdrantVectorSearchTool.
└──▷ GET THIS VERSION$ git clone --branch 1.4.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.4.0
- ›Adds first-class support for MCP (Model Context Protocol) with improved concurrent tool execution handling.
- ›Enhances
QdrantVectorSearchToolwith new capabilities for vector search workflows. - ›Adds support for non-AST plot routes, expanding flow visualization options.
- ›Caches i18n prompts for more efficient repeated use across agents.
- 1.3.0
CrewAI 1.3.0 enhances the QdrantVectorSearchTool with improved vector search capabilities.
└──▷ GET THIS VERSION$ git clone --branch 1.3.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.3.0
- ›Enhances QdrantVectorSearchTool with expanded capabilities for vector-based semantic search.
- 1.2.1
CrewAI 1.2.1 adds Datadog observability integration and MCP/app support in LiteAgent.
└──▷ GET THIS VERSION$ git clone --branch 1.2.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.2.1
- ›Adds Datadog integration for observability and tracing of CrewAI agent runs.
- ›Enables apps and MCPs (Model Context Protocol servers) as supported resources in LiteAgent.
- 1.1.0
CrewAI 1.1.0 adds multi-provider LLM support in InternalInstructor, a mypy plugin base, and improves QdrantVectorSearchTool.
└──▷ GET THIS VERSION$ git clone --branch 1.1.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.1.0
- ›Adds multi-provider LLM support to InternalInstructor, enabling structured output extraction across different LLM backends.
- ›Introduces a mypy plugin base for improved static type checking of CrewAI code.
- ›Improves QdrantVectorSearchTool for better vector search integration.
- 1.0.0
CrewAI 1.0.0 adds enhanced knowledge/guardrail event handling and tool repository credential injection for the run command.
└──▷ GET THIS VERSION$ git clone --branch 1.0.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 1.0.0
- ›Enhances knowledge and guardrail event handling in the Agent class for more robust agent lifecycle control.
- ›Injects tool repository credentials automatically in the
crewai runcommand, enabling authenticated tool source access.
- 0.201.1
CrewAI 0.201.1 adds ChromaDB support for WatsonX and VoyageAI embedding providers.
└──▷ GET THIS VERSION$ git clone --branch 0.201.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.201.1
- ›Adds ChromaDB compatibility for
watsonxandvoyageaiembedding providers.
└──▷ BREAKING ON UPGRADE- !The
watsonembedding provider is renamed towatsonx; environment variable prefixes are updated accordingly — any config using the oldwatsonprovider name or its env var prefixes will break on upgrade.
- ›Adds ChromaDB compatibility for
- 0.201.0
CrewAI 0.201.0 adds a
crewai uvCLI wrapper, custom embedding types, thread-safe platform context, and failed-trace marking for observability.└──▷ GET THIS VERSION$ git clone --branch 0.201.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.201.0
└──▷ USE ITSetbatch_sizeon an embedder to avoid hitting token limits when indexing large document sets.embedder_config = { "provider": "openai", "config": { "model": "text-embedding-3-small", "batch_size": 50 } }- ›Adds
crewai uvwrapper command to invokeuvdirectly through the CrewAI CLI. - ›Supports
batch_sizeconfiguration on embedders to stay within token limits. - ›Introduces thread-safe platform context management for concurrent crew workflows.
- ›Enables marking traces as failed in observability workflows.
- ›Adds custom embedding types and provider migration support.
+3 moreshow less
- ›Upgrades ChromaDB dependency to v1.1.0 with type improvements.
- ›Introduces Pydantic v2 support along with
pydantic-settingsand dependency group reorganization. - ›Adds Pydantic-compatible import validation, replacing legacy utilities.
- ›Adds
- 0.193.0
CrewAI 0.193.0 makes RAG/knowledge/memory search params fully configurable and enables ChromaDB OpenAI embeddings.
└──▷ GET THIS VERSION$ git clone --branch 0.193.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.193.0
- ›Makes search parameters for RAG, knowledge, and memory fully configurable.
- ›Enables ChromaDB to use OpenAI API as an embedding function.
- ›Adds deeper observability tools for user-level insights.
- ›Introduces thread-safe platform context management.
- ›Unifies RAG storage system with instance-specific client support.
+2 moreshow less
- ›Adds ephemeral trace improvements for better trace control.
- ›Adds missing event exports to
__init__.pyfor consistent module behavior.
- 0.186.0
CrewAI 0.186.0 adds Qdrant RAG support, partial flow resumability, auto-injection of trigger payloads, and a new config reset command.
└──▷ GET THIS VERSION$ git clone --branch 0.186.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.186.0
└──▷ TRY ITReset stored auth/API tokens without being prompted for email — useful when rotating credentials in CI.$ crewai config reset- ›Adds support for
crewai_trigger_payloadauto-injection into crew/flow executions. - ›Introduces a centralized RAG configuration system with optional imports, including Qdrant as a new RAG provider.
- ›Implements generic clients for ChromaDB and Qdrant storage backends.
- ›Enables partial flow resumability, allowing interrupted flows to resume mid-execution.
- ›Displays task names in verbose output for clearer runtime observability.
+3 moreshow less
- ›Introduces
crewai config resetcommand for resetting authentication tokens. - ›Adds additional parameters to Flow.start() methods for more flexible flow invocation.
- ›Introduces centralized configuration for embedding types and a base embedding client.
└──▷ BREAKING ON UPGRADE- !A deprecation warning is now emitted for
Task.max_retries; callers using this field should migrate before it is removed.
- ›Adds support for
- 0.175.0
CrewAI 0.175.0 adds Qdrant RAG support, crewai config reset, auto-injected trigger payloads, and a centralized embedding client system.
└──▷ GET THIS VERSION$ git clone --branch 0.175.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.175.0
└──▷ TRY ITClear cached login tokens from the local crewAI config when rotating credentials or switching accounts.$ crewai config reset- ›Adds Qdrant as a RAG provider, with a new generic Qdrant client alongside an existing ChromaDB client.
- ›Introduces a centralized embedding types system and a base embedding client for standardized embedding configuration.
- ›Adds
crewai config resetcommand to clear stored tokens. - ›Enables
crewai_trigger_payloadauto-injection into flows triggered by automation. - ›Adds support for additional parameters in Flow.start() methods.
+3 moreshow less
- ›Displays task names in verbose CLI output for better observability.
- ›Simplifies RAG client initialization with a new RAG configuration system.
- ›Adds support to remove Auth0 and email entry on
crewai login.
- 0.165.1
CrewAI 0.165.1 adds agent message history to ExternalMemory, auto-injects trigger payloads, and links memory entries to agent IDs in Mem0.
└──▷ GET THIS VERSION$ git clone --branch 0.165.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.165.1
- ›Includes exchanged agent messages in
ExternalMemorymetadata for richer memory context. - ›Automatically injects
crewai_trigger_payloadinto crew execution context. - ›Adds support for
agent_id-linkedmemory entries in Mem0 integration.
└──▷ BREAKING ON UPGRADE- !The internal flag
inject_trigger_inputis renamed toallow_crewai_trigger_context; any code or config referencing the old name will break. - !The AgentOps integration has been removed; any setup relying on it will no longer function.
- ›Includes exchanged agent messages in
- 0.165.0
CrewAI 0.165.0 enriches ExternalMemory with agent messages, auto-injects trigger payloads, and adds agent_id-linked Mem0 entries.
└──▷ GET THIS VERSION$ git clone --branch 0.165.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.165.0
- ›Includes exchanged agent messages in
ExternalMemorymetadata for richer memory context. - ›Automatically injects
crewai_trigger_payloadinto crew runs triggered externally. - ›Adds support for
agent_id-linkedmemory entries in Mem0 integration.
└──▷ BREAKING ON UPGRADE- !The internal flag
inject_trigger_inputis renamed toallow_crewai_trigger_context; any configuration or code referencinginject_trigger_inputwill break. - !The AgentOps integration has been removed; any setup relying on it will stop working.
- ›Includes exchanged agent messages in
- 0.159.0
CrewAI 0.159.0 adds enterprise CLI setup command and partial flow resumability support.
└──▷ GET THIS VERSION$ git clone --branch 0.159.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.159.0
└──▷ TRY ITConfigure enterprise credentials and parameters without manually editing config files.$ crewai enterprise configure- ›Adds
enterprise configureCLI command for streamlined enterprise setup. - ›Introduces partial flow resumability, enabling flows to resume from an intermediate state rather than restarting entirely.
- ›Adds
- 0.157.0
CrewAI 0.157.0 adds a
crewai configCLI command group, Okta device authorization, LangDB integration, and initial tracing capabilities.└──▷ GET THIS VERSION$ git clone --branch 0.157.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.157.0
└──▷ TRY ITInspect or set CrewAI CLI configuration without manually editing config files.$ crewai config- ›Adds
crewai configCLI command group for managing CLI configuration. - ›Supports device authorization with Okta for authenticated flows.
- ›Adds LangDB integration for observability and query tracing.
- ›Introduces initial tracing capabilities for crew and flow execution.
- ›Enables persisting Flow state with
BaseModelentries.
+1 moreshow less
- ›Adds default value support for
crew.name.
└──▷ BREAKING ON UPGRADE- !Support for the deprecated User Memory system has been dropped; any setup relying on it will stop working after upgrading.
- ›Adds
- 0.152.0
CrewAI 0.152.0 adds custom Flow names, a dedicated RAG module, and timezone-aware event timestamps.
└──▷ GET THIS VERSION$ git clone --branch 0.152.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.152.0
- ›Supports custom flow names on the Flow class for clearer identification of flows.
- ›Refactors RAG components into a dedicated top-level module for cleaner imports and organization.
- ›Adds timezone support to event timestamps for accurate time-based event tracking.
- 0.150.0
CrewAI 0.150.0 adds ad-hoc tool calling, Mem0 v2 storage, SerperScrapeWebsiteTool, and Bedrock AgentCore browser/code interpreter toolkits.
└──▷ GET THIS VERSION$ git clone --branch 0.150.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.150.0
- ›Adds support for ad-hoc tool calling via the internal LLM class, enabling on-demand tool invocation outside of standard crew/agent flows.
- ›Upgrades Mem0 Storage integration from v1.1 to v2.
- ›New
SerperScrapeWebsiteToolextracts clean content from URLs using Serper. - ›Integrates Bedrock AgentCore browser and code interpreter toolkits for use with Bedrock agents.
- ›Adds
UserMemorydeprecation notice to signal future removal.
- 0.148.0
CrewAI 0.148.0 introduces Agent evaluation functionality with thread-safe AgentEvaluator and neatlogs integration.
└──▷ GET THIS VERSION$ git clone --branch 0.148.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.148.0
- ›Introduces Agent evaluation functionality with
AgentEvaluator, supporting regression testing and experiment methods for both Agent andLiteAgent. - ›Enables event emission during Agent evaluation for observability into evaluation runs.
- ›Adds crew context tracking for LLM guardrail events.
- ›Adds integration with
neatlogsfor structured agent log management.
- ›Introduces Agent evaluation functionality with
- 0.141.0
CrewAI 0.141.0 adds crew context tracking for LLM guardrail events.
└──▷ GET THIS VERSION$ git clone --branch 0.141.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.141.0
- ›Adds crew context tracking for LLM guardrail events, enabling richer auditability of guardrail decisions within a crew's execution context.
- 0.140.0
CrewAI 0.140.0 adds LLM call tracking by task/agent, MemoryEvents monitoring, and a WorkOS CLI login command.
└──▷ GET THIS VERSION$ git clone --branch 0.140.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.140.0
- ›Tracks LLM calls broken down by task and agent for observability into crew execution costs and patterns.
- ›Introduces
MemoryEventsto monitor memory usage within a crew run. - ›Adds console logging for memory system and LLM guardrail events.
- ›Improves data training support for models up to 7B parameters.
- ›Adds
workos logincommand to the CLI for WorkOS-based authentication.
- 0.134.0
CrewAI 0.134.0 adds MCP multi-tool agent support, Tool-attribute initialization, and Oxylabs web scraping tools.
└──▷ GET THIS VERSION$ git clone --branch 0.134.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.134.0
- ›Supports initializing a tool directly from defined Tool attributes, enabling programmatic tool construction.
- ›Adds an official way to use MCP Tools within a
CrewBaseclass. - ›Enhances MCP tools support to allow selecting multiple tools per agent inside
CrewBase. - ›Adds Oxylabs Web Scraping tools as a built-in integration.
- 0.130.0
CrewAI 0.130.0 adds LiteAgent with Guardrail integration, async tool execution, and multi-org CLI support.
└──▷ GET THIS VERSION$ git clone --branch 0.130.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.130.0
- ›Introduces
LiteAgentwith built-in Guardrail integration for lightweight, constrained agent workflows. - ›Enables async tool execution for more efficient, non-blocking agent workflows.
- ›Adds support for multi-org actions in the CLI.
- ›Upgrades
LiteLLMto support the latest OpenAI version.
- ›Introduces
- 0.126.0
CrewAI 0.126.0 adds Python 3.13 support, streamable-HTTP MCP transport, prompt/memory transparency, and tool-logging.
└──▷ GET THIS VERSION$ git clone --branch 0.126.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.126.0
- ›Adds Python 3.13 support.
- ›Adds streamable-HTTP transport support in MCP integration.
- ›Enables tools to be loaded from an Agent repository via their own module.
- ›Persists available tools from a Tool repository across sessions.
- ›Logs tool usage when called by an LLM for observability.
+2 moreshow less
- ›Introduces transparency features for prompts and memory systems.
- ›Adds community analytics support.
- 0.121.0
CrewAI 0.121.0 adds markdown rendering for Tasks, reasoning for Agents, automatic date injection, and a HallucinationGuardrail.
└──▷ GET THIS VERSION$ git clone --branch 0.121.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.121.0
└──▷ USE ITEnable markdown output for a task so results are returned as formatted markdown.from crewai import Task task = Task( description="Summarize the latest threat intelligence report.", expected_output="A structured summary of key findings.", markdown=True )Enable reasoning on an agent and inject today's date automatically for time-sensitive analysis workflows.from crewai import Agent analyst = Agent( role="Threat Analyst", goal="Identify emerging threats from recent feeds.", backstory="Expert in cyber threat intelligence.", reasoning=True, inject_date=True )- ›Adds
markdownattribute to the Task class for controlling markdown-formatted output. - ›Adds
reasoningattribute to the Agent class to enable or configure agent reasoning behavior. - ›Adds
inject_dateflag to Agent for automatic date injection into agent context. - ›Implements
HallucinationGuardrailfor detecting and guarding against hallucinated outputs.
- ›Adds
- 0.120.0
CrewAI 0.120.0 adds agent-from-repository loading, empty Task context, and direct knowledge initialization.
└──▷ GET THIS VERSION$ git clone --branch 0.120.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.120.0
- ›Supports loading an Agent directly from a repository.
- ›Enables setting an empty context for a Task.
- ›Introduces direct initialization of knowledge, bypassing
knowledge_sources.
- 0.119.0
CrewAI 0.119.0 adds parent flow identification for Crew and LiteAgent and knowledge retrieval prompt rewriting in Agent.
└──▷ GET THIS VERSION$ git clone --branch 0.119.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.119.0
- ›Enables parent flow identification for Crew and LiteAgent, improving traceability in nested flow architectures.
- ›Introduces knowledge retrieval prompt rewriting in Agent for improved tracking and debugging of RAG-based workflows.
- 0.118.0
CrewAI 0.118.0 adds no-code Guardrail creation and renames TaskGuardrail to LLMGuardrail.
└──▷ GET THIS VERSION$ git clone --branch 0.118.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.118.0
- ›Adds support for no-code Guardrail creation to simplify AI behavior controls without writing custom guardrail logic.
└──▷ BREAKING ON UPGRADE- !
TaskGuardrailis renamed to LLMGuardrail; any code importing or referencingTaskGuardrailwill break on upgrade.
- 0.117.0
CrewAI 0.117.0 adds result_as_answer decorator support, GPT-4.1/Gemini-2.x models, and a HuggingFace CLI provider.
└──▷ GET THIS VERSION$ git clone --branch 0.117.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.117.0
└──▷ USE ITReturn a tool's output directly as the agent's final answer, bypassing further LLM reasoning — useful for deterministic lookup tools where you trust the result completely.from crewai.tools import tool @tool(result_as_answer=True) def lookup_cve(cve_id: str) -> str: """Fetch CVE details from internal database.""" return fetch_cve_record(cve_id)- ›Adds
result_as_answerparameter to the@tooldecorator, allowing a tool's output to be used directly as the agent's final answer. - ›Supports new language models: GPT-4.1, Gemini-2.0, and Gemini-2.5 Pro.
- ›Adds HuggingFace as a provider option in the CrewAI CLI.
- ›Enhances knowledge management capabilities.
- ›Adds
- 0.114.0
CrewAI 0.114.0 lets agents run standalone, adds custom LLM support, external memory, and Opik observability.
└──▷ GET THIS VERSION$ git clone --branch 0.114.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.114.0
└──▷ USE ITRun a single agent as a standalone unit — useful in Flows or one-off tasks without assembling a full Crew.from crewai import Agent researcher = Agent( role="Research Analyst", goal="Find the latest CVEs for Apache HTTP Server", backstory="You are an expert in vulnerability research.", llm="gpt-4o" ) result = researcher.kickoff() print(result)- ›Enables agents as atomic, standalone units — call Agent(...).kickoff() without a full Crew.
- ›Supports custom LLM implementations for bringing your own model client.
- ›Integrates External Memory for persistent agent knowledge across runs.
- ›Adds Opik observability integration for tracing and monitoring agent workflows.
- ›Adds wildcard support to emit() for flexible event broadcasting.
+3 moreshow less
- ›Introduces secure fingerprints for agents and crews to uniquely identify and track them.
- ›Adds multimodal agent validation to enforce correct configuration of multimodal agents.
- ›Enhanced YAML extraction for more robust crew and agent definition parsing.
- 0.108.0
CrewAI 0.108.0 adds agent fingerprints, richer event listener visualization, and improved LLM streaming event handling.
└──▷ GET THIS VERSION$ git clone --branch 0.108.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.108.0
- ›Adds fingerprints to agents/tasks for unique identity tracking across runs.
- ›Enhances LLM streaming response handling with an improved event system for real-time observability.
- ›Enriches the event listener with rich visualization and improved logging output.
- ›Includes
model_namein relevant model representations for better introspection.
- 0.105.0
CrewAI 0.105.0 adds Flow state export, an event emitter for LLM observability, multi-router support, and Python 3.10 compatibility.
└──▷ GET THIS VERSION$ git clone --branch 0.105.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.105.0
- ›Adds Flow state export and improved state utilities for inspecting and persisting Flow execution state.
- ›Introduces an event emitter for observability, enabling tracking of LLM calls and agent events.
- ›Supports multiple router calls within a single Flow, enabling more complex routing logic.
- ›Adds support for Python 3.10.
- ›Adds ChatOllama integration via
langchain_ollamafor local LLM usage.
+3 moreshow less
- ›Adds context window size support for the
o3-minimodel. - ›Enhances agent knowledge setup with an optional crew-level embedder configuration.
- ›Adds
QdrantVectorSearchToolguide and event listener usage documentation.
- 0.102.0
CrewAI 0.102.0 adds QdrantVectorSearchTool, JSON logging, multi-tab Excel knowledge, and custom embedder support.
└──▷ GET THIS VERSION$ git clone --branch 0.102.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.102.0
└──▷ USE ITSearch a Qdrant vector collection from within a CrewAI agent tool to ground responses in your own embeddings.from crewai_tools import QdrantVectorSearchTool tool = QdrantVectorSearchTool( collection_name="security-advisories", url="http://localhost:6333", api_key="<your-qdrant-api-key>" ) agent = Agent(role="Threat Analyst", tools=[tool], ...)- ›Adds
QdrantVectorSearchToolfor vector similarity search against Qdrant collections. - ›Supports JSON format for logging output, improving observability pipeline integration.
- ›Enables multi-tab Excel file processing in
excel_knowledge_source.pyfor richer knowledge ingestion. - ›Adds a
reset_memoriesfunction to the Crew class for programmatic memory management. - ›Supports custom embedder configuration for enhanced embedding setup in knowledge sources.
+1 moreshow less
- ›Integrates MLflow tracing support for agent execution observability.
- ›Adds
- 0.100.0
CrewAI 0.100.0 adds Amazon SageMaker as a supported LLM provider.
└──▷ GET THIS VERSION$ git clone --branch 0.100.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.100.0
- ›Supports Amazon SageMaker as an LLM provider for running agents against hosted SageMaker endpoints.
- 0.98.0
CrewAI 0.98.0 adds Conversation Crew, flow state persistence with @persist, and SambaNova/NVIDIA NIM/VoyageAI integrations.
└──▷ GET THIS VERSION$ git clone --branch 0.98.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.98.0
└──▷ USE ITPersist flow state across runs so a long-running security workflow can resume where it left off after interruption.from crewai.flow.persistence import persist, FlowPersistence class MySecurityFlow(Flow): @persist def analyze_targets(self): # state is automatically saved after this method completes ...- ›New Conversation Crew v1 enables interactive, dialogue-driven crew execution.
- ›Adds unique IDs to flow states for tracking and referencing individual flow runs.
- ›New
@persistdecorator withFlowPersistenceinterface enables durable flow state persistence across runs. - ›Adds SambaNova as a new LLM provider integration.
- ›Adds NVIDIA NIM as a new provider via the CrewAI CLI.
+1 moreshow less
- ›Introduces VoyageAI as a new embedding/model integration.
- 0.95.0
CrewAI 0.95.0 adds multimodal agents, programmatic guardrails, multi-round HITL, Gemini 2.0, Langfuse, Portkey, Docling, and Weaviate support.
└──▷ GET THIS VERSION$ git clone --branch 0.95.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.95.0
- ›Adds multimodal abilities to Crew, enabling agents to process image and other non-text inputs.
- ›Introduces programmatic guardrails for enforcing constraints on agent outputs at runtime.
- ›Supports multiple rounds of Human-in-the-Loop (HITL) interaction within a single crew run.
- ›Adds Gemini 2.0 model support.
- ›Delivers CrewAI Flows improvements for more capable workflow orchestration.
+6 moreshow less
- ›Adds workflow permissions to control agent and task access within a crew.
- ›Supports Langfuse observability via LiteLLM integration.
- ›Adds Portkey integration for LLM gateway and observability.
- ›Introduces
interpolate_onlymethod on prompt/template handling for targeted variable substitution. - ›Adds Docling support for document ingestion and parsing.
- ›Adds Weaviate support as a vector store for agent knowledge.
- 0.86.0
CrewAI 0.86.0 adds multi-round Human-in-the-Loop follow-up and expanded knowledge tooling
└──▷ GET THIS VERSION$ git clone --branch 0.86.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.86.0
- ›Supports multiple rounds of Human-in-the-Loop (HITL) follow-up, enabling iterative human feedback within a crew's execution flow.
- ›Adds Nvidia NIM as a supported provider for custom LLM configuration.
- ›Introduces a knowledge demo and improved knowledge documentation to help practitioners integrate knowledge sources into crews.
└──▷ BREAKING ON UPGRADE- !All references to Pipeline and PipelineRouter have been removed; any working setup that uses these constructs will break on upgrade.
- 0.85.0
CrewAI 0.85.0 adds agent-level knowledge, removes LangChain dependency, and improves typed task outputs.
└──▷ GET THIS VERSION$ git clone --branch 0.85.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.85.0
- ›Adds knowledge support at the individual agent level, enabling per-agent knowledge bases alongside crew-level knowledge.
- ›Removes LangChain as a dependency, reducing the library's footprint and eliminating LangChain version conflicts.
- ›Improves typed task outputs for stronger, more predictable structured results from tasks.
- ›Adds Tool Repository authentication via
crewai login, enabling access to hosted tools.
└──▷ BREAKING ON UPGRADE- !LangChain has been removed as a dependency; any code or configuration that imports or relies on LangChain internals through CrewAI will break on upgrade.
- v0.83.0
CrewAI v0.83.0 adds crew lifecycle callbacks, agent knowledge pre-seeding, and Mem0 memory/preference retrieval.
└──▷ GET THIS VERSION$ git clone --branch v0.83.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.83.0
└──▷ USE ITRun setup or teardown logic around a crew execution using the new lifecycle hooks.@crew def my_crew(self) -> Crew: return Crew( agents=self.agents, tasks=self.tasks, before_kickoff=self.before_kickoff, after_kickoff=self.after_kickoff, )- ›Adds
before_kickoffandafter_kickoffcrew callbacks for hooking into crew lifecycle events. - ›Supports pre-seeding agents with Knowledge so agents start with domain context before execution begins.
- ›Adds Mem0 integration for retrieving user preferences and memories during agent runs.
- ›Adds
- 0.79.0
CrewAI 0.79.0 adds flow inputs, IBM Watson memory integration, and broader log storage data type support.
└──▷ GET THIS VERSION$ git clone --branch 0.79.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.79.0
└──▷ USE ITBuild a custom tool using the now top-levelBaseToolimport rather than reaching into submodules.from crewai import BaseTool class MyScanner(BaseTool): name: str = "Port Scanner" description: str = "Scans open ports on a given host." def _run(self, host: str) -> str: # tool logic here return f"Scanning {host}"- ›Adds
inputsparameter support to flows, enabling dynamic data to be passed into flow execution. - ›Enhances log storage to support a wider range of data types beyond strings.
- ›Moves
BaseToolto the main package and centralizes tool description generation, simplifying custom tool authoring. - ›Raises an explicit error when an LLM returns no response, making silent failures visible.
- ›Adds
- 0.76.9
CrewAI 0.76.9 adds
crewai flow add-crewand updates the flow plot command tocrewai flow plot.└──▷ GET THIS VERSION$ git clone --branch 0.76.9 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.76.9
└──▷ TRY ITAdd a new crew to an existing flow without manually editing boilerplate — useful when extending a flow with a parallel or sequential crew.$ crewai flow add-crewVisualize your flow's structure to review crew connections and routing logic before deploying.$ crewai flow plot- ›New
crewai flow add-crewCLI command lets you scaffold and add additional crews to an existing flow. - ›Flow visualization command updated to
crewai flow plot. - ›Forwards install command options to
uv syncfor more flexible dependency management. - ›Python 3.10 support added via
tomlidependency.
└──▷ BREAKING ON UPGRADE- !The flow plot command is renamed from its previous form to
crewai flow plot; any scripts or docs referencing the old command will break.
- ›New
- 0.76.0
CrewAI 0.76.0 adds unsafe code execution support with Docker install and runtime checks.
└──▷ GET THIS VERSION$ git clone --branch 0.76.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.76.0
- ›Supports unsafe code execution with Docker install and running checks for sandboxed agent workflows.
- 0.74.0
CrewAI 0.74.0 adds model selection and API key submission via CLI, a new Memory Base, and migrates tooling to UV.
└──▷ GET THIS VERSION$ git clone --branch 0.74.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.74.0
- ›Migrates the project toolchain from Poetry to UV, with CLI adapted for UV workflows.
- ›New CLI capability to select models and submit API keys directly from the command line.
- ›Introduces a new Memory Base foundation for agent memory management.
└──▷ BREAKING ON UPGRADE- !Project toolchain has migrated from Poetry to UV; existing Poetry-based setups will require migration to continue working.
- 0.70.1
CrewAI 0.70.1 adds Flows with a visual debugger, plus new CLI commands for scaffolding flows and tools.
└──▷ GET THIS VERSION$ git clone --branch 0.70.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.70.1
└──▷ TRY ITScaffold a new Flow project to start building multi-step agentic pipelines.$ crewai create flowScaffold a new custom tool ready for implementation and publishing.$ crewai tool create <tool>- ›New Flow feature enables structured, multi-step agentic pipelines.
- ›Flow visualizer lets practitioners inspect and debug Flow execution graphs.
- ›New
crewai create flowcommand scaffolds a Flow project from the CLI. - ›New
crewai tool create <tool>command scaffolds a custom tool from the CLI. - ›Adds Git validations when publishing tools to enforce clean repository state.
- 0.64.0
CrewAI 0.64.0 introduces an initial Tools API and raises the default max iterations to 20.
└──▷ GET THIS VERSION$ git clone --branch 0.64.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout 0.64.0
- ›Adds an initial Tools API for programmatic tool management.
- ›Increases default max iterations from its previous limit to 20, enabling more complex agent reasoning loops out of the box.
- v0.63.0
CrewAI v0.63.0 adds a unified LLM class, custom memory interfaces, and switches the default model to GPT-4o-mini.
└──▷ GET THIS VERSION$ git clone --branch v0.63.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.63.0
└──▷ USE ITInstantiate an agent with the new LLM class to explicitly target a specific model via LiteLLM, decoupling model selection from environment defaults.from crewai import Agent, LLM llm = LLM(model="gpt-4o") agent = Agent( role="Security Analyst", goal="Identify vulnerabilities in the provided code.", backstory="Expert in application security.", llm=llm )- ›New
LLMclass provides a unified interface for interacting with language models via LiteLLM. - ›Supports custom memory interfaces, enabling practitioners to plug in their own memory backends.
- ›Changes the default model to GPT-4o-mini.
└──▷ BREAKING ON UPGRADE- !The default model is now GPT-4o-mini; crews that relied on the previous default model will use GPT-4o-mini after upgrading unless an explicit model is set.
- ›New
- v0.60.0
CrewAI v0.60.0 drops LangChain, rebuilds the executor, and adds o1-model support with new agent controls.
└──▷ GET THIS VERSION$ git clone --branch v0.60.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.60.0
└──▷ USE ITUse CrewAI with an o1-series model that doesn't support system prompts or stop words.from crewai import Agent agent = Agent( role="Analyst", goal="Analyze the dataset", backstory="You are a data expert.", llm="o1-preview", use_system_prompt=False, use_stop_words=False )Cap API usage and prevent runaway agent loops by setting rate limits and a max iteration count.from crewai import Agent agent = Agent( role="Researcher", goal="Find key insights", backstory="You are a senior researcher.", max_rpm=10, max_iter=5 )- ›Removes LangChain dependency with a fully rebuilt internal executor for improved reliability.
- ›New
use_system_promptflag on Agent lets you disable system prompts for models that don't support them. - ›New
use_stop_wordsflag on Agent allows disabling stop words to support o1-series models. - ›Adds configurable max requests per minute at the crew/agent level.
- ›Adds a configurable maximum number of iterations before an agent is forced to produce a final answer.
+3 moreshow less
- ›New token calculation flow for accurate usage tracking across agent runs.
- ›New logging of crew and agent execution for improved observability.
- ›
sliding_context_windowis renamed torespect_context_windowand is now enabled by default.
└──▷ BREAKING ON UPGRADE- !The
sliding_context_windowsetting is renamed torespect_context_window; any existing config or code referencingsliding_context_windowwill break. - !Delegation is now disabled by default; crews that relied on agents delegating tasks without explicit configuration will stop delegating on upgrade.
- v0.55.2
CrewAI v0.55.2 adds auto-complete, enriched TaskOutput fields, new install/deploy CLIs, and Pipeline cleanup.
└──▷ GET THIS VERSION$ git clone --branch v0.55.2 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.55.2
└──▷ TRY ITSet up a new CrewAI project and its dependencies in one step.$ crewai installDeploy a CrewAI project to a hosted environment after building it locally.$ crewai deployInspect the name and expected output of a completed task result for downstream processing or logging.result = crew.kickoff() for task_output in result.tasks_output: print(task_output.name, task_output.expected_output)- ›Adds auto-complete support for CrewAI inputs.
- ›Adds
nameandexpected_outputfields toTaskOutputfor richer task result inspection. - ›New
crewai installCLI command for streamlined project setup. - ›New
crewai deployCLI command to deploy CrewAI projects. - ›Cleans up and stabilizes the Pipeline feature.
- v0.51.0
CrewAI v0.51.0 adds crew testing/evaluation, pipelines, four new tools (Vision, DALL-E, MySQL, NL2SQL), and a sliding context window.
└──▷ GET THIS VERSION$ git clone --branch v0.51.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.51.0
└──▷ USE ITAssign a cheaper or faster LLM specifically to the planning step so your expensive model is reserved for agent execution.from crewai import Crew, Agent, Task, Process from langchain_openai import ChatOpenAI planner_llm = ChatOpenAI(model="gpt-4o-mini") crew = Crew( agents=[...], tasks=[...], process=Process.sequential, planning=True, planning_llm=planner_llm ) crew.kickoff()Give agents the ability to generate images on demand during a workflow using the new DALL-E Tool.from crewai_tools import DallETool from crewai import Agent image_agent = Agent( role="Image Creator", goal="Generate visuals from descriptions", backstory="You create images for marketing campaigns.", tools=[DallETool()] )Enable natural-language database querying so agents can answer data questions without writing SQL manually.from crewai_tools import NL2SQLTool from crewai import Agent db_agent = Agent( role="Data Analyst", goal="Answer business questions from the database", backstory="You query databases using plain English.", tools=[NL2SQLTool(db_uri="mysql+pymysql://user:pass@host/dbname")] )- ›Adds crew testing and evaluation framework for assessing crew performance.
- ›Introduces Pipeline structure for composing multi-crew workflows.
- ›Adds sliding context window to manage long-running agent context automatically.
- ›Supports setting a dedicated LLM for the planning step, separate from agent LLMs.
- ›New
crew runCLI command for executing CrewAI projects.
+8 moreshow less
- ›Allows all agent/task attributes to be defined in YAML project configuration.
- ›New Vision Tool for enabling agents to process and reason about images.
- ›New DALL-E Tool for generating images from within agent workflows.
- ›New MySQL Tool for querying MySQL databases from agents.
- ›New NL2SQL Tool for translating natural language queries into SQL.
- ›File-saving now serializes dict outputs as JSON when writing to disk.
- ›Enables verbose settings for tool outputs to aid in debugging and observability.
- ›Adds new GitHub project templates for bootstrapping CrewAI projects.
- v0.41.0
CrewAI v0.41.0 adds crew planning, task replay, memory reset, LLM retry, and type-safe outputs.
└──▷ GET THIS VERSION$ git clone --branch v0.41.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.41.0
└──▷ USE ITEnable pre-execution planning so your crew deliberates a strategy before assigning tasks — useful for complex, multi-step investigations.from crewai import Crew crew = Crew( agents=[...], tasks=[...], planning=True ) result = crew.kickoff()Replay from a specific failed task after a partial run, without restarting the entire crew from scratch.$ crewai replay <task_id>Clear stale crew memory before re-running to ensure the crew starts fresh without prior context contaminating results.$ crewai reset-memory- ›Adds
planning=Trueto Crew instances so crews reason through a plan before executing tasks. - ›Introduces a CLI replay feature to list tasks from the last run and re-execute from a specific task.
- ›Enables resetting crew memory before a run via a new reset-memory capability.
- ›Adds LLM call retry support so a failed LLM call no longer halts crew execution.
- ›All crews and tasks now return typed
CrewOutputandTaskOutputobjects instead of raw strings.
+3 moreshow less
- ›Adds ability to customize the output converter on agents/tasks.
- ›Enhances tools with type hinting and new attributes.
- ›Adds MultiON Tool integration.
└──▷ BREAKING ON UPGRADE- !All crews and tasks now return
TaskOutputandCrewOutputobjects instead of plain strings — code that treats crew/task return values as strings will break.
- ›Adds
- v0.36.0
CrewAI v0.36.0 adds AgentOps native support, Firecrawl Tools, and tool-result-as-agent-result capability
└──▷ GET THIS VERSION$ git clone --branch v0.36.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.36.0
- ›Adds native AgentOps integration for agent observability and monitoring.
- ›Adds Firecrawl Tools for web scraping and crawling within CrewAI agents.
- ›Adds the ability to return a tool's result directly as an agent result.
- ›Improves the coding Interpreter tool.
- ›Adds the ability to create a custom converter class.
- v0.35.0
CrewAI v0.35.0 adds code execution for agents, third-party agent integration, and a new
crewai trainCLI command.└──▷ GET THIS VERSION$ git clone --branch v0.35.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.35.0
└──▷ TRY ITTrain your crew for a fixed number of iterations before a production run to improve output consistency.$ crewai train -n 5
- ›New
crewai train -n <X>CLI command lets you train a crew for a specified number of iterations before execution to produce more consistent results. - ›Agents can now execute code directly as part of a crew workflow.
- ›Supports integrating third-party agents — including LlamaIndex, LangChain, and Autogen agents — as first-class crew members.
- ›New
- v0.32.0
CrewAI v0.32.0 adds async and per-item kickoff methods, LlamaIndex hub support, and usage metrics on crew output.
└──▷ GET THIS VERSION$ git clone --branch v0.32.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.32.0
└──▷ USE ITRun the same crew independently for each item in a list — useful for processing multiple targets in parallel without managing async yourself.results = my_crew.kickoff_for_each(inputs=[{"target": "host1"}, {"target": "host2"}, {"target": "host3"}])Kick off a long-running crew without blocking — lets you launch a crew and continue other work while it runs.import asyncio async def main(): result = await my_crew.kickoff_async(inputs={"target": "host1"}) print(result) asyncio.run(main())Inspect token consumption after a crew run to track LLM costs per execution.result = my_crew.kickoff(inputs={"target": "host1"}) print(result.usage_metrics)- ›Adds
kickoff_for_each,kickoff_async, andkickoff_for_each_asyncmethods to the crew kickoff API for parallel and per-item execution control. - ›Adds
usage_metricsfield to full crew output, exposing token and resource consumption data. - ›Adds support for all LlamaIndex hub integrations as crew tools.
- ›Adds support for multiple crews in the new YAML format.
- ›Changes the default LLM model to
gpt-4o.
+1 moreshow less
- ›Adds timestamps to log output.
└──▷ BREAKING ON UPGRADE- !The default model is now
gpt-4o; crews that relied on the previous default model will switch automatically on upgrade.
- ›Adds
- v0.30.4
CrewAI v0.30.4 adds manager agent override, prompt/response templates for OSS models, and Browserbase and Exa Search tools.
└──▷ GET THIS VERSION$ git clone --branch v0.30.4 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.30.4
- ›Adds ability to designate a specific agent as crew manager instead of having the crew auto-generate one.
- ›Adds
system,prompt, andresponsetemplates so practitioners can tune LLM interaction for open-source and smaller models. - ›Adds initial support for bringing your own prompts to override built-in crew prompts.
- ›Adds two new built-in tools: Browserbase and Exa Search.
- ›Improves JSON and Pydantic output handling for better compatibility with smaller models.
+2 moreshow less
- ›Improves tool name recognition for better compatibility with smaller models.
- ›Adds ability to automatically create a directory when saving output as a file.
└──▷ BREAKING ON UPGRADE- !Dependencies have been updated — verify your tool integrations after upgrading.
- v0.27.0
CrewAI v0.27.0 adds shared crew memory, native human input, universal RAG tool support, and custom cache control.
└──▷ GET THIS VERSION$ git clone --branch v0.27.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.27.0
└──▷ USE ITEnable shared crew memory so agents retain context across tasks, improving consistency in multi-step workflows.crew = Crew( agents=[researcher, writer], tasks=[research_task, write_task], memory=True )Use a custom cache function on a tool to control exactly when results are cached, e.g. skipping cache for volatile data.from crewai_tools import tool @tool def my_tool(query: str) -> str: ... my_tool.cache_function = lambda args, result: 'volatile' not in args['query']- ›Adds
memory=Trueparameter to crew configuration to enable shared crew memory, improving outcome reliability (disabled by default). - ›Adds
cache_functionattribute to tools for custom caching logic per tool invocation. - ›Adds native human input support, allowing agents to pause and request input from a human during execution.
- ›Extends RAG tools support to any embedding model and provider, no longer limited to OpenAI.
- ›Adds cross-agent delegation, enabling smoother cooperation and task handoff between agents.
- ›Adds
- v0.22.0
CrewAI v0.22.0 adds a
crewai createCLI command and dictionary-based agent/task definitions.└──▷ GET THIS VERSION$ git clone --branch v0.22.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.22.0
└──▷ TRY ITBootstrap a new CrewAI project scaffold from the command line.$ crewai createDefine an agent using a dictionary instead of a class instance, useful for dynamic or config-driven crew setups.from crewai import Agent, Task, Crew agent = Agent(**{ "role": "Researcher", "goal": "Find the latest AI news", "backstory": "You are an expert at finding information." }) task = Task(**{ "description": "Search for the top 5 AI news stories today", "agent": agent })- ›Adds
crewai createCLI command for bootstrapping new CrewAI projects from the command line. - ›Enables agents and tasks to be defined using Python dictionaries as an alternative to class-based definitions.
- ›Adds clearer agent logging output to improve observability during crew execution.
- ›Adds
- v0.19.0
CrewAI v0.19.0 adds execution metrics, input passing at kickoff, and function-calling LLM fallback for agents and crews.
└──▷ GET THIS VERSION$ git clone --branch v0.19.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.19.0
└──▷ USE ITAfter a crew run, inspect tool usage metrics to audit how many tools were called and where errors occurred.result = crew.kickoff(inputs={'domain': 'example.com'}) print(crew.usage_metrics)Fall back to function-calling mode on an agent when the default tool-use strategy is unreliable with your LLM.agent = Agent( role='Analyst', llm=my_llm, function_calling_llm=my_function_llm, tools=[my_tool] )- ›Adds
function_calling_llmparameter on Agent or Crew to fall back to function calling when standard tool usage fails. - ›Adds
crew.usage_metricsto retrieve execution metrics after akickoffcall, exposing tool usage statistics. - ›Adds
inputsparameter to crew.kickoff(inputs={'key': 'value'}) so runtime values can be injected at execution time. - ›Enhances delegation capabilities for agents within a crew.
- ›Adds
- v0.16.0
CrewAI v0.16.0 adds inputs interpolation and telemetry for tools usage, errors, and token tracking.
└──▷ GET THIS VERSION$ git clone --branch v0.16.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.16.0
- ›Adds initial support for inputs interpolation, enabling dynamic input substitution in crew workflows.
- ›Adds ability to track tools usage, tools errors, formatting errors, and token usage within crew runs.
└──▷ BREAKING ON UPGRADE- !The
crewai_toolsdependency has been removed; any setup relying on it will break on upgrade.
- v0.14.0rc0
CrewAI v0.14.0rc0 adds crewai-tools integration, Pydantic/JSON task output formatting, and file output support.
└──▷ GET THIS VERSION$ git clone --branch v0.14.0rc0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.14.0rc0
- ›Adds support for
crewai-toolsintegration. - ›Adds support for formatting task output as Pydantic objects or JSON.
- ›Adds support for saving task output to a file.
- ›Supports tools with no arguments.
- ›Revamps tools usage logic to properly use function calling.
+1 moreshow less
- ›Improves reliability for inter-agent delegation.
- ›Adds support for
- v0.10.0
CrewAI v0.10.0 adds full task output capture, step callbacks, multi-argument tool support via JSON, and shared caching across agents.
└──▷ GET THIS VERSION$ git clone --branch v0.10.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.10.0
└──▷ USE ITStream every agent reasoning step in real time — useful for debugging long-running autonomous crews.def my_callback(step): print(step) agent = Agent(..., step_callback=my_callback) crew = Crew(agents=[agent], ..., step_callback=my_callback)- ›Adds
full_outputreturn from crew kickoff, exposing all individual task outputs in a single result. - ›Adds
step_callbackparameter for both Agents and Crews to receive all intermediate reasoning steps during execution. - ›New tool usage internals now use JSON, unlocking support for tools that require multiple arguments.
- ›Rebuilt caching structure so multiple agents can share the same cache across a crew run.
- ›Adds opt-in sharing of complete crew run data with the crewAI team.
└──▷ BREAKING ON UPGRADE- !Removes
CrewAgentOutputParser— any code that imports or references it directly will break on upgrade.
- ›Adds
- v0.5.0
CrewAI v0.5.0 adds task callbacks, hierarchical process support, task references, and parallel task execution.
└──▷ GET THIS VERSION$ git clone --branch v0.5.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.5.0
- ›Adds task callbacks, enabling post-execution hooks on individual tasks.
- ›Adds support for a hierarchical process model for structuring agent workflows.
- ›Adds the ability to reference specific tasks from within another task.
- ›Adds parallel task execution, allowing multiple tasks to run concurrently.
- v0.1.32
CrewAI v0.1.32 adds per-agent iteration limits, RPM throttling, and initial i18n support
└──▷ GET THIS VERSION$ git clone --branch v0.1.32 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.1.32
- ›Adds ability to limit the maximum number of iterations for an agent, preventing runaway agent loops.
- ›Adds Request Per Minute (RPM) throttling configurable for both individual Agents and Crews.
- ›Adds initial internationalization (i18n) support with a Greek translation included.
- v0.1.14
CrewAI v0.1.14 adds tool caching, loop execution prevention, verbose logging levels, and pydantic v2 support.
└──▷ GET THIS VERSION$ git clone --branch v0.1.14 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.1.14
- ›Adds verbose levels to the logger for finer-grained output control.
- ›Adds tool caching to avoid redundant tool calls during agent execution.
- ›Adds loop execution prevention to stop agents from cycling indefinitely.
- ›Expands delegation guidelines to give agents more precise rules for task hand-off.
- ›Updates support to pydantic v2.
└──▷ BREAKING ON UPGRADE- !Upgrades to pydantic v2, which may break existing model definitions that rely on pydantic v1 behaviour.
- v0.1.1
CrewAI v0.1.1 adds verbose mode for inspecting task execution in real time.
└──▷ GET THIS VERSION$ git clone --branch v0.1.1 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.1.1
- ›Adds Crew verbose mode to inspect tasks as they are being executed.
- v0.1.0
CrewAI v0.1.0 debuts a Python framework for orchestrating collaborative, role-based autonomous AI agents.
└──▷ GET THIS VERSION$ git clone --branch v0.1.0 https://github.com/crewAIInc/crewAI.git # already have the repo? check out this version: $ git checkout v0.1.0
└──▷ USE ITStand up a minimal crew where two specialized agents tackle a research-then-write task sequentially.from crewai import Agent, Task, Crew, Process researcher = Agent( role='Researcher', goal='Find key facts about quantum computing', tools=[search_tool] ) writer = Agent( role='Writer', goal='Summarize research into a short briefing', tools=[] ) research_task = Task(description='Research recent quantum computing breakthroughs', tools=[search_tool]) write_task = Task(description='Write a 200-word executive summary', tools=[]) crew = Crew( agents=[researcher, writer], tasks=[research_task, write_task], process=Process.sequential ) result = crew.kickoff() print(result)- ›Introduces the Agent class for defining autonomous agents with specific roles, goals, and assigned tools.
- ›Introduces the Task class for dynamically creating and assigning tasks with per-task tool specifications.
- ›Introduces the Crew class for grouping agents and coordinating collaborative workflows.
- ›Introduces the Process class supporting sequential task execution for organized, predictable agent pipelines.
- ›Enables inter-agent delegation, allowing agents to autonomously redistribute subtasks among team members at runtime.