Overview
Instead of specifying a singleproject_slug, you can define multiple projects in your tenderly.yaml file with individual network configurations for each project.
Basic Multi-Project Setup
To configure multiple projects, replace theproject_slug field with a projects field:
When using the
projects field, remove the project_slug field. You cannot use both simultaneously.Project Configuration Structure
A map of project slugs to their configurations.
Configuration for a specific project.
Array of network IDs (as strings) to push to this project. If omitted or empty, contracts will be pushed to all migrated networks.
Network Filtering
You can control which networks are pushed to each project:Push to Specific Networks
Push to All Networks
If you don’t specify networks, contracts will be pushed to all networks where they’re deployed:Organization and Shared Projects
For projects owned by an organization or shared with you, use the full project identifier:organization-username/project-slug
You can find the full project identifier in your Tenderly Dashboard under the project name.
Pushing to Multiple Projects
When you runtenderly push with multiple projects configured, the CLI will:
- Analyze your smart contracts
- Push to each project sequentially
- Report success or failure for each project individually
Pushing to a Single Project
Even with multiple projects configured, you can push to just one using the--project-slug flag:
- Test a specific project configuration
- Deploy to one environment at a time
- Handle different deployment schedules
Network Specification
You can also filter networks using the--networks flag:
--networks flag works alongside the project-specific network configuration:
- CLI flag networks are added to project-specific networks
- Duplicates are automatically handled
Common Network IDs
| Network | Chain ID |
|---|---|
| Ethereum Mainnet | ”1” |
| Goerli | ”5” |
| Sepolia | ”11155111” |
| Polygon | ”137” |
| Polygon Mumbai | ”80001” |
| Optimism | ”10” |
| Optimism Goerli | ”420” |
| Arbitrum One | ”42161” |
| Arbitrum Goerli | ”421613” |
| Base | ”8453” |
| Base Goerli | ”84531” |
| Avalanche | ”43114” |
| Avalanche Fuji | ”43113” |
| BNB Smart Chain | ”56” |
| BNB Testnet | ”97” |
Complete Examples
Multi-Environment Setup
Multi-Environment Setup
Team-Based Configuration
Team-Based Configuration
Multi-Chain DApp
Multi-Chain DApp
Error Handling
When pushing to multiple projects, the CLI handles errors gracefully:- The CLI will attempt to push to all projects, even if one fails
- Each project’s result is reported individually
- The command exits with an error code if any push fails
Migration from Single Project
To migrate from a single project configuration to multiple projects:- Back up your current configuration:
- Update your
tenderly.yaml:
- Test the configuration:
Automation and CI/CD
Push to Different Projects per Branch
GitHub Actions Example
Best Practices
Organize by Environment
Organize by Environment
Do:This makes it clear which project corresponds to which environment.
Use Descriptive Project Names
Use Descriptive Project Names
Do:Don’t:
Document Network Choices
Document Network Choices
Add comments to explain why certain networks are grouped together:
Troubleshooting
Project not found error
Project not found error
Error:
Failed reading project configuration. Couldn't find project with slug: project-nameSolution:- Verify the project exists in your Tenderly Dashboard
- Check for typos in the project slug
- For shared projects, ensure you use the full identifier:
organization/project - Verify you have access to the project
No contracts pushed to specific project
No contracts pushed to specific project
Problem: Some projects receive no contractsSolution:
- Check that contracts are deployed to the networks specified for that project
- Verify network IDs are correct and in string format
- Use
--debugflag to see detailed information:
Conflicting configurations
Conflicting configurations
Error: Using both
project_slug and projects fieldsSolution:See Also
- tenderly.yaml Configuration - Complete configuration reference
- Global Flags - Command-line flags
- tenderly push - Push command reference
- Tenderly Dashboard - Manage your projects