crewAIInc/crewAI · error · ValueError
project_name is required to update a ZIP deployment
Error message
project_name is required to update a ZIP deployment
What it means
Raised by CrewAI CLI's deployment command when _update_crew_from_zip is called on a deployment whose project_name attribute is empty or None. The ZIP update flow needs a project directory name to build the archive via create_project_zip, so an empty name cannot proceed. It surfaces as an uncaught ValueError from `crewai deploy update` (ZIP mode).
Source
Thrown at lib/cli/src/crewai_cli/deploy/main.py:484
self._confirm_zip_input(env_vars, confirm)
console.print("Uploading project ZIP...", style="bold blue")
return self.plus_api_client.create_crew_from_zip(
zip_file_path,
name=self.project_name,
env=env_vars,
)
finally:
zip_file_path.unlink(missing_ok=True)
def _update_crew_from_zip(
self,
uuid: str,
repository: git.Repository | None,
env_vars: dict[str, str],
) -> Any:
"""Update an existing deployment by uploading a project ZIP archive."""
if not self.project_name:
raise ValueError("project_name is required to update a ZIP deployment")
console.print("Preparing project ZIP...", style="bold blue")
zip_file_path = create_project_zip(self.project_name, repository=repository)
try:
console.print("Uploading project ZIP...", style="bold blue")
return self.plus_api_client.update_crew_from_zip(
uuid,
zip_file_path,
env=env_vars,
)
finally:
zip_file_path.unlink(missing_ok=True)
def _confirm_input(
self, env_vars: dict[str, str], remote_repo_url: str, confirm: bool
) -> None:
"""
Confirm input parameters with the user.View on GitHub (pinned to 754d7323be)
Solutions
- Verify you are in the project root that contains the pyproject.toml used at creation time and re-run `crewai deploy update <uuid> --zip`
- Check that pyproject.toml still exposes a valid project name; fix or restore it if the file was renamed/edited
- If invoking DeploymentCommand programmatically, pass the project name explicitly (e.g. via the constructor/CrewAI object) so self.project_name is set before calling update
Example fix
# before
crew.update_crew_from_zip(uuid=uuid, repository=repo, env_vars=env)
# after (ensure project name resolves first)
if not crew.project_name:
raise SystemExit("Run this from the project root containing pyproject.toml")
crew.update_crew_from_zip(uuid=uuid, repository=repo, env_vars=env) Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
import tomllib
def project_name_resolves(root: str = ".") -> bool:
py = Path(root) / "pyproject.toml"
if not py.exists():
return False
data = tomllib.loads(py.read_text())
return bool(data.get("project", {}).get("name") or data.get("tool", {}).get("poetry", {}).get("name")) Try / catch
try:
deployment.update_crew_from_zip(uuid=uuid, repository=repo, env_vars=env)
except ValueError as e:
if "project_name is required" in str(e):
raise SystemExit("Run from the crew project root (pyproject.toml required)") from e
raise Prevention
- Always run deploy commands from the directory containing pyproject.toml
- Keep the project name field present and non-empty in pyproject.toml
- In scripts, assert cmd.project_name is truthy before any deploy call
When it happens
Trigger: Running `crewai deploy update <uuid> --zip` (or the plus-api ZIP update path) from a directory where the CLI failed to detect a project name, or calling DeploymentCommand._update_crew_from_zip directly with project_name unset (e.g. the CrewAI object was constructed without a valid pyproject.toml/package name).
Common situations: Running the deploy command outside a crew project root (no pyproject.toml), a pyproject.toml missing the crewai project metadata, or a renamed/moved project directory so name auto-detection returns empty.
Related errors
- project_name is required to create a deployment payload
- {self.path} is not a Git repository.
- The number of iterations must be a positive integer.
- Git is not installed or not found in your PATH.
- Invalid --inputs JSON: {exc}
AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15).
Data as JSON: /api/errors/897a391b82aa6a22.
Report an issue: GitHub.