| icon | sliders |
|---|
The platform.yaml file at the root of your project controls how it builds and deploys. Most fields are optional — sensible defaults are chosen based on framework auto-detection.
Settings that control how your project is built.
| Setting | Type | Default | Description |
|---|---|---|---|
build.command |
string | auto-detected | The shell command that produces your build output |
build.output |
string | auto-detected | The folder containing the built files |
build.install |
string | npm ci |
The command to install dependencies |
build.node |
string | 20 |
The Node.js version to use |
build.env |
object | {} |
Environment variables available during build |
Example:
build:
command: npm run build
output: dist/
node: 20
env:
NODE_OPTIONS: --max-old-space-size=4096Settings that control how your project is deployed and routed.
| Setting | Type | Default | Description |
|---|---|---|---|
deploy.framework |
string | auto |
Framework hint (e.g. next, astro, static) |
deploy.routes |
array | [] |
Custom routing rules |
deploy.headers |
array | [] |
Custom HTTP headers per path |
deploy.redirects |
array | [] |
URL redirects |
deploy.region |
string | auto |
Preferred deploy region |
Example:
deploy:
framework: next
region: eu-west-1
routes:
- source: /api/*
destination: /api/[...path].js
headers:
- path: /*
headers:
- key: X-Frame-Options
value: DENYSettings that control preview deploys for branches and pull requests.
| Setting | Type | Default | Description |
|---|---|---|---|
preview.enabled |
boolean | true |
Whether previews are enabled at all |
preview.branches.include |
array | ["**"] |
Branch patterns to deploy |
preview.branches.exclude |
array | [] |
Branch patterns to skip |
preview.comments |
boolean | true |
Comment on pull requests with preview URLs |
preview.password |
string | none | Password-protect preview URLs |
Where to send build and deploy events.
| Setting | Type | Default | Description |
|---|---|---|---|
notifications.email |
array | [] |
Email addresses to notify |
notifications.slack |
object | none | Slack webhook configuration |
notifications.events |
array | ["deploy.failed"] |
Which events trigger notifications |
Example:
notifications:
events: [deploy.succeeded, deploy.failed]
slack:
webhook: https://hooks.example.com/...
channel: "#deploys"Limits that apply at the workspace level, by plan:
| Limit | Free | Pro | Business | Enterprise |
|---|---|---|---|---|
| Active projects | 3 | 25 | Unlimited | Unlimited |
| Concurrent builds | 1 | 3 | 10 | Custom |
| Build minutes / month | 500 | 6,000 | 24,000 | Custom |
| Bandwidth / month | 100 GB | 1 TB | 5 TB | Custom |
| Team members | 1 | 10 | 50 | Unlimited |
| Custom domains per project | 1 | 10 | Unlimited | Unlimited |
{% hint style="info" %} Need higher limits than Business offers? Contact sales to discuss Enterprise pricing. {% endhint %}