Skip to main content
The tenderly.yaml file is the project-level configuration file that connects your local project to Tenderly. It’s created in your project directory when you run tenderly init.

File Location

The file is located at the root of your project directory:
your-project/
├── tenderly.yaml
├── contracts/
└── ...

Basic Configuration

A basic tenderly.yaml file contains your account ID, project slug, and provider information:
account_id: "your-account-id"
project_slug: "your-project-slug"
provider: "hardhat"

Configuration Fields

account_id
string
required
Your Tenderly account ID. Set automatically when you run tenderly init.
project_slug
string
required
The slug of your Tenderly project. For shared/organization projects, use the format organization-name/project-slug.
provider
string
The development framework provider. Supported values:
  • hardhat
  • truffle
  • buidler
  • brownie
  • openzeppelin
projects
object
Configuration for pushing contracts to multiple projects. See Multiple Projects for details.

Multi-Project Configuration

You can configure multiple projects in a single tenderly.yaml file. This is useful when you want to push the same contracts to different projects or networks:
projects:
  my-cool-project:
    networks:
      - "1"    # Ethereum Mainnet
      - "5"    # Goerli
  my-other-project:
    # Empty networks array means push to all migrated networks
  company-account/shared-project:
    networks:
      - "137"  # Polygon
      - "10"   # Optimism
When using the projects field, remove the project_slug field from your configuration.

Network IDs

When specifying networks in your configuration, use the chain ID as a string:
NetworkChain ID
Ethereum Mainnet”1”
Goerli”5”
Sepolia”11155111”
Polygon”137”
Optimism”10”
Arbitrum”42161”
Base”8453”

Example Configurations

account_id: "abc123"
project_slug: "my-defi-project"
provider: "hardhat"
projects:
  mainnet-project:
    networks:
      - "1"    # Only push mainnet contracts
  testnet-project:
    networks:
      - "5"    # Goerli
      - "11155111"  # Sepolia
  all-networks-project:
    # Push to all available networks
account_id: "abc123"
project_slug: "acme-corp/production-contracts"
provider: "hardhat"

File Management

The tenderly.yaml file should be committed to version control so your team can share the same project configuration.

Regenerating Configuration

If you need to reinitialize your project configuration:
tenderly init --re-init
This will prompt you to select a project again and regenerate the tenderly.yaml file.

Custom Configuration Name

You can use a custom name for your project configuration file:
tenderly push --project-config custom-config
This will look for custom-config.yaml instead of tenderly.yaml.
  • Global Config: See ~/.tenderly/config.yaml for authentication tokens and global settings
  • Actions: Use tenderly actions init to add action configurations to tenderly.yaml
  • Extensions: Use tenderly node-extensions init to add node extension configurations

Common Issues

If you see “You need to initiate the project first”, ensure:
  1. The tenderly.yaml file exists in your project directory
  2. The file contains either a project_slug or projects field
  3. You’re running commands from the correct directory
You can also use --project-dir flag to specify a different directory:
tenderly push --project-dir /path/to/project
If the provider isn’t detected automatically:
  1. Ensure your project has the necessary configuration files (hardhat.config.js, truffle-config.js, etc.)
  2. Use the --force flag to skip provider detection
  3. Manually set the provider field in tenderly.yaml

See Also

Build docs developers (and LLMs) love