Blueprint YAML Reference
Every Render Blueprint is backed by a YAML file that defines a set of interconnected services, databases, and environment groups.
A Blueprint file must be named render.yaml, and it must be located in the root directory of a Git repository.
This reference page provides an example Blueprint file, along with documentation for supported fields.
Example Blueprint file
The following render.yaml file demonstrates usage for most supported fields. These fields are documented in further detail below.
Show example Blueprint file
IDE validation
The Render Blueprint specification is served from SchemaStore.org, which many popular IDEs use to provide live validation and autocompletion for JSON and YAML files.
For VS Code, install the YAML extension by Red Hat to enable validation of render.yaml files:

If your IDE doesn't integrate with SchemaStore.org, the Blueprint specification is also hosted at https://render.com/schema/render.yaml.json in JSON Schema format. Consult your IDE's documentation to learn how to use this schema for validation.
Root-level fields
The following fields are valid at the root level of a render.yaml file:
| Field | Description |
|---|---|
|
A list of non-Postgres services to manage with the Blueprint. Each entry is an object that represents a single service. See all service fields. Services in this top-level list keep their currently assigned environment (if any) after each sync.
Do not define the same service in more than one location. |
|
A list of Postgres databases to manage with the Blueprint. Each entry is an object that represents a single database. See all database fields. Databases in this top-level list keep their currently assigned environment (if any) after each sync.
Do not define the same database in more than one location. |
|
A list of environment groups to manage with the Blueprint. Each entry is an object that represents a single environment group. See supported fields. Environment groups in this top-level list keep their currently assigned environment (if any) after each sync.
Do not define the same environment group in more than one location. |
|
A list of projects to manage with the Blueprint. A project defines one or more For details, see Projects and environments. |
|
An object for defining resources that should not belong to any environment. Can contain optional fields Moving a resource definition into this object removes it from its current environment, guaranteeing that it is "ungrouped". In contrast, root-level definitions keep their currently assigned environment (if any). Do not define the same resource in more than one location. |
|
The generation mode to use for preview environments. Supported values include:
For details on each, see Manual vs. automatic preview environments. If you omit this field, preview environments are disabled for any linked Blueprints. Setting the deprecated field This field does not affect configuration for individual service previews. |
|
The number of days to retain a preview environment that receives no updates. After this period, Render automatically deprovisions the preview environment to help reduce your compute costs. By default, preview environments are retained indefinitely until their associated pull request is closed. For details, see Automatic expiration. |
Service fields
Each entry in a Blueprint file's services list is an object that represents a single, non-Postgres service. (You define Postgres databases in the databases list.)
See below for supported fields.
Essential fields
These fields pertain to a service's core configuration (name, runtime, region, and so on).
| Field | Description |
|---|---|
|
Required. The service's name. Provide a unique name for each service in your Blueprint file. If you add the name of an existing service to your Blueprint file, Render attempts to apply the Blueprint's configuration to that existing service. |
|
Required. The type of service. One of the following:
You can't modify this value after creation. You define Render Postgres databases separately, in the |
|
Required unless Supported values include: Native language runtimes
Special-case runtimes
You can't modify this value after creation. This field replaces the |
|
The service's instance type (see pricing). One of the following:
The following additional instance types are available for web services, private services, and background workers:
If you omit this field:
|
|
The preview generation mode to use for this service's pull request previews. Supported values include:
For details on each, see Manual vs. automatic PR previews. If you omit this field, pull request previews are disabled for the service. Setting the deprecated field This field does not affect configuration for preview environments. |
|
The number of instances to use for this service in preview environments. If you omit this field, preview instances use the same number of instances as the base service. If the base service uses autoscaling, preview instances use the minimum number of instances for the base service. |
|
The instance type to use for this service in preview environments. If you omit this field, preview instances use the same instance type as the base service. |
|
Required for non-Docker-based services. The command that Render runs to build your service. Basic examples include:
|
|
Required for non-Docker-based services. The command that Render runs to start your service. Basic examples include:
Docker-based services set the optional |
|
Required for cron jobs, omit otherwise. The schedule for running the cron job, as a cron expression. |
|
If specified, this command runs after the service’s Learn more about the pre-deploy command. |
|
The region to deploy the service to. One of the following:
You can't modify this value after creation. This field does not apply to static sites. If omitted, the default value is |
|
For Git-based services, the URL of the GitHub/GitLab repo to use. Your Git provider account must have access to the repo. If omitted, Render uses the repo that contains the For services that pull a prebuilt Docker image, set |
|
For Git-based services, the branch of the linked If omitted, Render uses the repo's default branch. If you're using preview environments, you probably don't want to set this field. If you do set it, Render uses the specified branch in all preview environments, instead of your pull request's associated branch. This prevents you from testing code changes in the preview environment. |
|
Sets the automatic deploy behavior for a Git-based service. This field replaces the deprecated One of the following:
This field has no effect for services that deploy a prebuilt Docker image. If you omit this field:
|
|
Web services and static sites only. A list of custom domains for the service. Internet-accessible services are always reachable at their For each root domain in the list, Render automatically adds a For each |
|
Web services only. The path of the service's health check endpoint for zero-downtime deploys. |
|
Web services, private services, and background workers only. The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a After this delay, Render terminates the process with a Render most commonly shuts down instances as part of redeploying your service or scaling it down. Set this field to give instances more time to finish any existing work before termination. This value must be an integer between If omitted, the default value is |
Docker
The following fields are specific to Docker-based services. This includes both services that build an image with a Dockerfile (runtime: docker) and services that pull a prebuilt image from a registry (runtime: image).
Building from a Dockerfile
| Field | Description |
|---|---|
|
The command to run when starting the Docker-based service. If omitted, Render uses the |
|
The path to the service's If omitted, Render uses |
|
The path to the service's Docker build context, relative to the repo root. Typically used for services in a monorepo. If omitted, Render uses the repo root. |
|
If your This field uses the following format: Add registry credentials in the Render Dashboard from your Workspace Settings page, or via the Render API. |
Pulling a prebuilt image
| Field | Description |
|---|---|
|
Details for the Docker image to pull from a registry. This field uses the following format: Provide For more information, see Deploy a Prebuilt Docker Image. |
Scaling
Note the following about scaling:
- You can't scale a service with an attached persistent disk.
- Autoscaling requires a Professional workspace or higher.
- Manual scaling is available for all workspaces.
- If you add an existing service to a Blueprint, that service retains any existing autoscaling settings unless you add the
scalingfield in your Blueprint. - Autoscaling is disabled in preview environments.
- Instead, autoscaled services always run a number of instances equal to their
minInstances.
- Instead, autoscaled services always run a number of instances equal to their
| Field | Description |
|---|---|
|
For a manually scaled service, the number of instances to scale the service to. If you omit this field:
This value has no effect for services with autoscaling enabled. Configure autoscaling behavior with the |
|
For an autoscaled service, configuration details for the service's autoscaling behavior. Example: |
Build
| Field | Description |
|---|---|
|
File paths in the service's repo to include or ignore when determining whether to trigger an automatic build. Especially useful for monorepos. Build filter paths use glob syntax. They are always relative to the repo's root directory. When synced, this value fully replaces an existing service's build filter settings. If you omit this field for a service with existing build filter settings, Render replaces those settings with empty lists. |
|
The service's root directory within its repo. Changes to files outside the root directory do not trigger a build for the service. Set this when working in a monorepo. If omitted, Render uses the repo's root directory. |
Disks
Attach a persistent disk to a compatible service with the disk field:
You can modify the name and mountPath of an existing disk. You can increase the sizeGB of an existing disk, but you can't reduce it.
Static sites
The following fields are specific to static sites:
| Field | Description |
|---|---|
|
Required. The path to the directory that contains the static files to publish, relative to the repo root. Common examples include |
|
Configuration details for a static site's HTTP response headers. Example: You can modify existing header rules and add new ones. Render preserves any existing header rules that are not included in the Blueprint file. |
|
Configuration details for a static site's redirect and rewrite routes. Example: You can modify existing routing rules and add new ones. Render preserves any existing routing rules that are not included in the Blueprint file. |
Render Key Value
You define Render Key Value instances in the services field of render.yaml alongside your other non-Postgres services. A Key Value instance has the type keyvalue (or its deprecated alias redis).
Example definitions
Show example Key Value definitions
Key-Value-specific fields
| Field | Description |
|---|---|
|
Required. See Data access control. |
|
The Key Value instance's eviction policy for when it reaches its maximum memory limit. One of the following:
For details on these policies, see the Render Key Value documentation. |
Environment variables
See Setting environment variables.
Database fields
Each entry in a Blueprint file's databases list is an object that represents a Render Postgres instance.
See below for supported fields.
Example definitions
Show example database definitions
Essential fields
| Field | Description |
|---|---|
|
Required. The Postgres instance's name. Provide a unique name for each service in your Blueprint file. If you add the name of an existing instance to your Blueprint file, Render attempts to apply the Blueprint's configuration to that existing instance. You can't modify this value after creation. |
|
The database's instance type (see pricing). One of the following: View values for
|
|
The instance type to use for this database in preview environments. If you omit this field, preview instances use the same instance type as the primary database (specified by If your primary database uses a new flexible instance type, you cannot specify a non-flexible instance type for |
|
The database's disk size, in GB. Not valid for legacy instance types, which have a fixed disk size. This value must be either You can increase disk size, but you can't decrease it. If you omit this field:
|
|
The disk size to use for this database in preview environments. If you omit this field, preview instances use the same disk size as the primary database (specified by |
|
The region to deploy the instance to. One of the following:
You can't modify this value after creation. If omitted, the default value is |
|
See Data access control. |
PostgreSQL settings
| Field | Description |
|---|---|
|
The major version number of PostgreSQL to use, as a string (e.g., If omitted, Render uses the most recent version supported by the platform (currently 17). You can't modify this value after creation. |
|
The name of your database in the PostgreSQL instance. This is different from the If omitted, Render automatically generates a name for the database based on You can't modify this value after creation. |
|
The name of the PostgreSQL user to create for your instance. If omitted, Render automatically generates a name for the database based on You can't modify this value after creation. |
Database replicas
You can add two types of replica to a Render Postgres instance:
- Read replicas for increased query throughput
- A high availability standby for rapid recovery from primary instance failures
| Field | Description |
|---|---|
|
Add one or more read replicas to a Render Postgres instance with the following syntax: Note the following:
For more information, see Read Replicas for Render Postgres. |
|
Add a high availability standby to a Render Postgres instance with the following syntax: For your database to support high availability, it must:
For more information, see High Availability for Render Postgres. |
Data access control
To control which IP addresses can access your Render Postgres and Key Value instances from outside Render's network, use the ipAllowList field:
The ipAllowList field is required for Key Value instances. If you omit this field for a Render Postgres database, any source with valid credentials can access the database.
IP address ranges use CIDR notation. The description field is optional.
To block all external connections, provide an empty list:
To allow all external connections, provide the following CIDR block:
Learn more about access control for Render Postgres and Render Key Value.
Projects and environments
Learn more about projects and environments.
Show an example project definition
Project fields
| Field | Description |
|---|---|
|
Required. The project's name. |
|
Required. A list of the project's environments. Each project must have at least one environment. |
Environment fields
| Field | Description |
|---|---|
|
Required. The environment's name. |
|
A list of the services that belong to the environment. Matches the format of the root-level Do not define the same service in more than one location. |
|
A list of the Render Postgres databases that belong to the environment. Matches the format of the root-level Do not define the same database in more than one location. |
|
A list of the environment groups that belong to the environment. Matches the format of the root-level Do not define the same environment group in more than one location. |
|
Controls private network isolation for the environment. Supported values include:
If omitted, the default value is |
|
Controls whether the environment is protected, which prevents destructive actions by non-admin workspace members. Supported values include:
If omitted, the default value is |
Setting environment variables
Set names and values for a service's environment variables in the envVars field:
A Blueprint can create new environment variables or modify the values of existing ones. Render preserves existing environment variables, even if you omit them from the Blueprint file.
Referencing values from other services
When setting an environment variable in a Blueprint file, you can reference certain values from your other Render services.
You can reference a service that isn't in the Blueprint, but that service must exist in your workspace for the Blueprint to be valid.
To reference a value from most service types, use the fromService field. For Render Postgres, instead use fromDatabase:
To reference another service's environment variable, set envVarKey instead of property:
- In all cases, provide the service's
name, along with thepropertyorenvVarKeyto use. - For
fromService, you must also provide the referenced service'stype.
Supported values of property include:
| Property | Description |
|---|---|
|
Web services and private services only. The service's hostname on the private network. |
|
Web services and private services only. The port of the service's HTTP server. |
|
Web services and private services only. The service's host and port, separated by a colon. Use this value to connect to the service over the private network. Example: |
|
Render Postgres and Key Value only. The URL for connecting to the datastore over the private network.
|
|
Render Postgres only. The name of the user for your PostgreSQL database. Included as a component of |
|
Render Postgres only. The password for your PostgreSQL database. Included as a component of |
|
Render Postgres only. The name of your database within the PostgreSQL instance (not the Included as a component of |
Prompting for secret values
Some environment variables contain secret credentials, such an API key or access token. Do not hardcode these values in your render.yaml file!
Instead, you can define these environment variables with sync: false, like so:
During the initial Blueprint creation flow in the Render Dashboard, you're prompted to provide a value for each environment variable with sync: false:

Note the following limitations:
- Render prompts you for these values only during the initial Blueprint creation flow.
- When you update an existing Blueprint, Render ignores any environment variables with
sync: false. - Add any new secret credentials to your existing services manually.
- When you update an existing Blueprint, Render ignores any environment variables with
- Render does not include
sync: falseenvironment variables in preview environments.- As a workaround, you can also manually define the environment variable in an environment group that you apply to the service. For details, see this page.
- You can't apply
sync: falseto environment variables defined in an environment group.- If you do this, Render ignores the environment variable.
Environment groups
You can define environment groups in the root-level envVarGroups field of your render.yaml file:
Each environment group has a name and a list of zero or more envVars. Definitions in the envVars list can use some (but not all) of the same formats as envVars for a service:
- An environment group can't reference values from your services, or from other environment groups.
- You can't define an environment variable with
sync: falsein an environment group.
Variable interpolation
Render does not support variable interpolation in a render.yaml file.
To achieve a similar behavior, pair environment variables with a build or start script that performs the interpolation for you.