Build a Research Crew
In this guide, you will create a two-agent research crew that gathers information about a topic and writes a markdown report. New crew projects are JSON-first: agents are defined inagents/*.jsonc, tasks and crew settings are defined in crew.jsonc, and crewai run loads the JSON definition directly.
Prerequisites
Before starting, make sure you have:- Installed CrewAI following the installation guide
- Set up your LLM API key following the LLM setup guide
- A Serper.dev API key if you want the researcher to use web search
Step 1: Create a New Crew
Step 2: Define Your Agents
Replace the generatedagents/researcher.jsonc file and add agents/analyst.jsonc. The file names are the names you reference from crew.jsonc.
agents/researcher.jsonc
agents/analyst.jsonc
provider/model-id with the model you use, for example openai/gpt-4o, anthropic/claude-sonnet-4-6, or gemini/gemini-2.0-flash-001.
Step 3: Define Tasks and Crew Settings
Replacecrew.jsonc with:
crew.jsonc
context points to prior task names, so the analyst receives the research task output. The inputs object provides default values for {topic}. If you remove a default, crewai run prompts for it.
Step 4: Set Environment Variables
Open.env and add the keys your model and tools need:
Step 5: Install and Run
crewai run detects crew.jsonc, loads the agents from agents/, prompts for missing placeholders, and runs the crew. When the run finishes, open output/report.md.
How It Works
crew.jsoncdefines the crew, task order, process, memory, and runtime inputs.agents/researcher.jsoncandagents/analyst.jsoncdefine the agents.- The researcher runs first.
- The analyst runs second with
context: ["research_task"]. - The final task writes
output/report.md.
Extending Your Crew
You can add:- More agents by creating new
agents/<name>.jsoncfiles and listing them increw.jsonc - More tasks by appending objects to the
tasksarray - Built-in tools by adding tool class names such as
"FileReadTool"or"SerperDevTool" - Custom tools with
"custom:<name>", which loadstools/<name>.py - Hierarchical execution with
"process": "hierarchical"and amanager_llmormanager_agent
You now have a working JSON-first crew that researches a topic and writes a report.
