Writing a Launchfile
A Launchfile is a YAML file called Launchfile (no extension) that lives in your project root. It declares what your application needs — the platform handles the rest.
File structure
Every Launchfile has a name field. Everything else is optional and additive — you pay complexity cost only for the complexity you actually have.
# The simplest valid Launchfile
name: my-app
runtime: node
commands:
start: "node server.js" Declaring resources
Use requires for resources your app cannot run without, and supports for optional enhancements:
requires:
- type: postgres
set_env:
DATABASE_URL: $url
supports:
- type: redis
set_env:
CACHE_URL: $url The $url expression resolves to the resource's connection URL at deploy time. See the expression syntax reference for all available patterns.
Environment variables
The env block declares app-owned environment variables with optional defaults, descriptions, and generators:
env:
PORT:
default: "3000"
API_KEY:
required: true
description: "Third-party API key"
SESSION_SECRET:
generator: secret
sensitive: true Multi-component apps
For apps with multiple services (e.g., a backend API + a frontend), use the components map:
name: my-platform
components:
api:
runtime: node
provides:
- protocol: http
port: 3000
requires: [postgres]
commands:
start: "node api.js"
web:
runtime: node
depends_on:
- component: api
condition: healthy
provides:
- protocol: http
port: 3001
exposed: true Learn more
This guide covers the basics. For the full field reference, see the specification. For real-world patterns, browse the examples.