Monorepo Deployments
When to Use This
Section titled “When to Use This”Monorepo deployments are useful when one repository contains multiple automations, shared packages, or other application code:
company-ai/|-- uv.lock|-- packages/| `-- shared_tools/`-- crews/ |-- support_agent/ | |-- pyproject.toml | |-- crew.jsonc | `-- agents/ | `-- support_agent.jsonc `-- research_flow/ |-- pyproject.toml `-- src/ `-- research_flow/ `-- main.pyTo deploy support_agent, set the working directory to:
crews/support_agentAMP still pulls or uploads the whole repository, but it treats the selected folder as the automation project root.
What the Working Directory Controls
Section titled “What the Working Directory Controls”When a working directory is set, AMP uses that folder for:
- Project validation, including
pyproject.toml, JSON crew files, and any classic Crew or Flow entry point - Dependency installation with
uv - The running process working directory
- The
CREW_ROOT_DIRenvironment variable
Leaving the field empty keeps the existing behavior and uses the repository root.
Supported Sources
Section titled “Supported Sources”You can set a working directory when creating a deployment from:
- A connected GitHub repository
- A Git repository configured in AMP
- A ZIP upload
You can also add or change the working directory on an existing deployment from the deployment’s Settings page. The change takes effect on the next deploy.
Configure a New Deployment
Section titled “Configure a New Deployment”- Open Deploy from Code
In CrewAI AMP, create a new deployment and choose your source: GitHub, Git Repository, or ZIP upload.
- Select the repository, branch, or ZIP file
Choose the repository and branch that contain your monorepo, or upload a ZIP file whose root contains the monorepo contents.
- Open Advanced settings
Expand the Advanced section in the deploy form.
- Enter the working directory
Enter the path from the repository root to the Crew or Flow project:
crews/support_agentDo not include a leading slash.
- Deploy
Add any required environment variables, then start the deployment.
Configure an Existing Deployment
Section titled “Configure an Existing Deployment”- Open the deployment settings
Go to your automation in AMP and open Settings.
- Turn off auto-deploy if needed
If auto-deploy is enabled, disable it first. The working directory field is unavailable while auto-deploy is on.
- Set the working directory
In Basic settings, enter the subfolder path, such as:
crews/support_agent - Redeploy
Save the setting and redeploy the automation. The new working directory is used on the next deploy.
Path Rules
Section titled “Path Rules”The working directory must be a relative path inside the repository or ZIP root.
| Rule | Example |
|---|---|
| Use a relative path | crews/support_agent |
Do not start with / | /crews/support_agent is invalid |
Do not use . or .. path segments | crews/../support_agent is invalid |
| Use only letters, numbers, dashes, underscores, dots, and forward slashes | crews/support agent is invalid |
| Keep the path at 255 characters or fewer | Longer paths are rejected |
AMP trims leading and trailing whitespace, collapses repeated slashes, and removes trailing slashes. A blank value uses the repository root.
Lock Files and UV Workspaces
Section titled “Lock Files and UV Workspaces”The selected folder must contain the automation’s pyproject.toml and the
project files for its type:
- JSON-first crew:
crew.jsoncorcrew.json, plusagents/ - Classic crew or Flow:
src/with the expected Python entry point
A uv.lock or poetry.lock file can live either in the selected folder or at
the repository root.
This supports both common lock-file layouts:
company-ai/`-- crews/ `-- support_agent/ |-- pyproject.toml |-- uv.lock |-- crew.jsonc `-- agents/ `-- support_agent.jsonccompany-ai/|-- uv.lock|-- packages/| `-- shared_tools/`-- crews/ `-- support_agent/ |-- pyproject.toml |-- crew.jsonc `-- agents/ `-- support_agent.jsoncTroubleshooting
Section titled “Troubleshooting”Working Directory Not Found
Section titled “Working Directory Not Found”Check that the path is relative to the repository or ZIP root. For ZIP uploads, the ZIP contents must include the working directory path exactly as entered.
Missing pyproject.toml
Section titled “Missing pyproject.toml”The working directory should point to the Crew or Flow project folder, not just to a parent folder that contains several projects.
Missing uv.lock or poetry.lock
Section titled “Missing uv.lock or poetry.lock”Commit a lock file either in the selected project folder or in the repository
root. For UV workspaces, keeping uv.lock at the workspace root is supported.
Auto-Deploy Is Unavailable
Section titled “Auto-Deploy Is Unavailable”Auto-deploy is disabled while a working directory is set. Use manual redeploys or trigger redeployments from CI/CD with the AMP API instead.
Deploy to AMP
Continue with the deployment guide after choosing your monorepo working directory.