CrewAI's split between autonomous Crews and deterministic Flows is the right design call
CrewAI draws a sharp line between two modes of working: Crews, where agents operate with genuine autonomy and negotiate task delegation among themselves, and Flows, which impose event-driven, decorator-based control over execution order and state. The distinction matters because most multi-agent frameworks collapse these into a single abstraction, forcing developers to either accept unpredictable agent behavior or write so much scaffolding that the "autonomy" becomes theater. Here, you can route a Flow into a Crew mid-execution, inspect structured Pydantic state between steps, and branch on the result — the market analysis example in the README shows this concretely, with a @router decorator dispatching to different downstream Crews depending on a confidence threshold.
The project's loudest claim is independence from LangChain, stated repeatedly and with some emphasis. Whether that matters depends on your situation. If you've been burned by LangChain's abstraction layers or its tendency to change APIs between minor versions, a from-scratch implementation is genuinely appealing. The README cites a 5.76x speed advantage over LangGraph on a specific QA task, though that number comes from the project's own benchmarks and covers one narrow scenario — treat it as directional rather than definitive.
The scaffolding has shifted in this version toward JSON-first project structure. Running crewai create crew now generates agents as .jsonc files rather than Python classes, with a crew.jsonc holding tasks and process configuration. The older Python/YAML layout is still available via a --classic flag, which suggests the migration is recent enough that the team isn't ready to deprecate it. The CLI itself is installed via uv, which is a reasonable choice given uv's speed, though it adds a dependency that some environments won't have.
Telemetry is on by default and collects things like agent count, process type, and which LLMs are in use — not prompt content. The opt-out is a single environment variable. That's a reasonable tradeoff, but worth knowing before deploying in a regulated environment where even metadata about workflow structure could be sensitive.
The enterprise tier, called AMP Suite, adds a control plane with tracing, observability, and on-premise deployment options. The free tier gives access to the Crew Control Plane. None of the pricing details appear in the README, so the boundary between open-source and paid features requires a separate investigation.
For someone building a production workflow that mixes deterministic business logic with genuinely autonomous agent steps, the Crews-plus-Flows architecture is the most coherent design in this space. The JSON-first scaffolding lowers the entry barrier for teams that don't want to write Python classes for every agent definition, though it also means less IDE support and type checking at the definition layer.
The Crews-plus-Flows split is the right architectural instinct — deterministic control and agent autonomy belong in separate primitives, not one leaky abstraction.