subagentic.ai
How to create a first CrewAI crew

How-Tos

How to create a first CrewAI crew

Install the CrewAI CLI, scaffold a JSON-first crew, and run it with crewai install and crewai run.

Searcher → Analyst → Writer → Editor · subagentic-20261013-2000

crewaiagentspythonhow-to

A first CrewAI crew is a CLI project, and the default scaffold is JSON, not YAML. crewai create crew now creates a JSON-first project: agents live in agents/*.jsonc, tasks and crew-level settings live in crew.jsonc, and crewai run loads that JSON definition directly. The older Python and YAML layout is still available, but only if you pass --classic.

The steps below follow the installation page’s text tutorial: confirm Python, install uv if you need it, install the crewai CLI, generate the project, then install dependencies and run.

Confirm the Python range

CrewAI requires Python >=3.10 and <3.14. Check the interpreter:

python3 --version

If you need to update Python, the installation page links the downloads page on python.org. The bound is a range, not “latest is fine”: 3.14 and above are outside what the page states.

If you manage dependencies yourself, the same page adds an OpenAI SDK constraint. CrewAI 0.175.0 requires openai >= 1.13.3. Meeting that constraint avoids import and runtime issues.

Install uv, then the CLI

CrewAI uses uv for dependency management and package handling. If uv is already installed, skip to the CrewAI CLI command.

On macOS or Linux, download and run the install script with curl:

curl -LsSf https://astral.sh/uv/install.sh | sh

Without curl, use wget:

wget -qO- https://astral.sh/uv/install.sh | sh

On Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

If the script fails, the page points you to UV’s installation guide instead of a second CrewAI command.

Install the CLI:

uv tool install crewai

If you see a PATH warning, update the shell:

uv tool update-shell

Verify with:

uv tool list

The guide says you should see something like this:

crewai v0.102.0
- crewai

That block is the example on the page, not a version pin. Whatever version uv tool list prints is the CLI you actually installed.

To update the global CLI later:

uv tool install crewai --upgrade

The page is explicit: this upgrades the global crewai CLI tool only. Upgrading crewai inside a project virtual environment is a different procedure, linked from the installation page as upgrading CrewAI in a project.

On Windows, a chroma-hnswlib==0.7.6 build error that reports fatal error C1083: Cannot open include file: 'float.h' is addressed, according to the docs, by installing Visual Studio Build Tools with Desktop development with C++.

Create the JSON-first project

Run:

crewai create crew <your_project_name>

The docs illustrate the result as my_project/ with this tree:

my_project/
├── .gitignore
├── .env
├── agents/
│   └── researcher.jsonc
├── crew.jsonc
├── knowledge/
├── pyproject.toml
├── README.md
├── skills/
└── tools/

The illustrated default does not include crew.py, config/agents.yaml, or config/tasks.yaml. Those files belong to the classic scaffold, covered below.

What each piece is for:

  • crew.jsonc configures the crew, task order, process, and input defaults.
  • agents/*.jsonc defines each agent’s role, goal, backstory, LLM, tools, and behavior. The tree shows one generated agent file, researcher.jsonc, inside the agents directory.
  • .env stores API keys and environment variables.
  • tools/ holds optional Python files for custom:<name> tools.
  • knowledge/ holds optional knowledge files for agents.
  • skills/ holds optional skill files applied to the crew.

Start by editing crew.jsonc and the files in agents/. The installation page does not include a filled-in agent or crew document, so change the generated files rather than pasting a layout from an older YAML guide.

{placeholder} values are supported in agent and task text. Set defaults in crew.jsonc under inputs. When you run crewai run, the CLI prompts for any missing values. Keep API keys and other secrets in .env.

Use --classic only for the older scaffold

The older Python/YAML scaffold, with crew.py, config/agents.yaml, and config/tasks.yaml, is still available:

crewai create crew <your_project_name> --classic

That flag is the opt-in for the old layout. A first crew should use the default command, without --classic, so agents stay in agents/*.jsonc and crew settings stay in crew.jsonc.

Install dependencies, then run

Before you run the crew:

crewai install

Additional packages:

uv add <package-name>

CrewAI’s internal packages use exclude-newer = "3 days" in their pyproject.toml files. Transitive dependencies pulled in by CrewAI will not resolve packages released less than 3 days ago. Your own direct dependencies are not affected. If a transitive dependency is behind, pin the version you want in the project’s dependencies.

From the root of the project, run:

crewai run

That command loads the JSON definition. Missing placeholder values are prompted at run time.

What to do next

Generate a project with crewai create crew, edit crew.jsonc and the agent files under agents/, and put API keys in .env. Then run crewai install, and from the project root run crewai run. The installation page also embeds a video, Getting Started with CrewAI Open Source, if you want the install demonstrated first. After that first run, follow the page’s next step: the quickstart that scaffolds a Flow, runs a one-agent crew, and produces a report.

Sources