Skip to main content
Before deploying to CrewAI AMP, it’s crucial to verify your project is correctly structured. Both Crews and Flows can be deployed as “automations,” but they have different project structures and requirements that must be met for successful deployment.

Understanding Automations

In CrewAI AMP, automations is the umbrella term for deployable Agentic AI projects. An automation can be either:
  • A Crew: A standalone team of AI agents working together on tasks
  • A Flow: An orchestrated workflow that can combine multiple crews, direct LLM calls, and procedural logic
Understanding which type you’re deploying is essential because they have different project structures and entry points.

Crews vs Flows: Key Differences

Crew Projects

Standalone AI agent teams. New crews are JSON-first with crew.jsonc and agents/; classic crews can still use crew.py.

Flow Projects

Orchestrated workflows with embedded crews in a crews/ folder. Best for complex, multi-stage processes.

Project Structure Reference

Crew Project Structure

When you run crewai create crew my_crew, you get the JSON-first structure:
For JSON-first crews, keep crew.jsonc, agents/, tools/, knowledge/, and skills/ at the project root. Placing them under src/ will prevent crewai run and deployment validation from finding the crew definition.
Classic projects created with crewai create crew my_crew --classic use the older src/project_name/crew.py, src/project_name/config/agents.yaml, and src/project_name/config/tasks.yaml layout. That layout remains supported for decorator-based Python crews.

Flow Project Structure

When you run crewai create flow my_flow, you get this structure:
JSON-first standalone crews use project-root JSON files. Flows still use src/project_name/ and can contain either classic embedded crews or embedded JSON crew folders loaded with crewai.project.load_crew.

Pre-Deployment Checklist

Use this checklist to verify your project is ready for deployment.

1. Verify pyproject.toml Configuration

Your pyproject.toml must include the correct [tool.crewai] section:
If the type doesn’t match your project structure, the build will fail or the automation won’t run correctly.

2. Ensure uv.lock File Exists

CrewAI uses uv for dependency management. The uv.lock file ensures reproducible builds and is required for deployment.
If the file doesn’t exist, run uv lock and commit it to your repository:

3. Validate the Crew Definition

JSON-first crews must have a crew.jsonc or crew.json file at the project root. The agents array must reference files in agents/, and each task should reference a valid agent name.
crew.jsonc
Custom tools are referenced as "custom:<name>" and must be implemented in tools/<name>.py with a BaseTool subclass.

4. Check Project Entry Points

JSON-first standalone crews do not need a hand-written src/project_name/main.py; crewai run and deployment packaging load crew.jsonc directly. Classic crews and Flows use Python entry points:
Run locally from the project root:

5. Prepare Environment Variables

Before deployment, ensure you have:
  1. LLM API keys ready (OpenAI, Anthropic, Google, etc.)
  2. Tool API keys if using external tools (Serper, etc.)
If your project depends on packages from a private PyPI registry, you’ll also need to configure registry authentication credentials as environment variables. See the Private Package Registries guide for details.
Test your project locally with the same environment variables before deploying to catch configuration issues early.

Quick Validation Commands

Run these commands from your project root to quickly verify your setup:

Common Setup Mistakes

Next Steps

Once your project passes all checklist items, you’re ready to deploy:

Deploy to AMP

Follow the deployment guide to deploy your Crew or Flow to CrewAI AMP using the CLI, web interface, or CI/CD integration.