fuel.yml Reference
fuel.yml is the infrastructure configuration file used to generate the /infra folder. Pass it via fuel infra:deploy --config or fuel create:app --config. Once /infra exists, subsequent deploys recover configuration from AWS Secrets Manager and do not require fuel.yml. Generate one interactively with fuel infra:init.
Minimal Example
The smallest valid fuel.yml — single app, no optional features:
name: my-app
deployment: ecs
ssl: arn:aws:acm:us-east-1:123456789012:certificate/abc-123
apps:
- name: my-app-api
technology: nest
dockerfile: Dockerfile
health_check_path: /health
domain: api.example.com
port: 3000Full Example
Two apps (API + web) with Postgres, Redis, workers, and environment variables:
name: my-app
deployment: ecs
ssl: arn:aws:acm:us-east-1:123456789012:certificate/abc-123
slack_webhook_url: https://hooks.slack.com/services/...
apps:
- name: my-app-api
technology: nest
dockerfile: Dockerfile
health_check_path: /health
domain: api.example.com
port: 3000
branch: main
postgres: true
redis: true
cpu_units: 1024
memory_units: 2048
db_instance_type: db.t3.micro
db_allocated_storage: 20
redis_instance_type: cache.t3.micro
variables:
NODE_ENV: production
STRIPE_SECRET_KEY: sk_live_...
build_env:
NEXT_PUBLIC_API_URL: https://api.example.com
workers:
- name: my-app-worker
dockerfile: Dockerfile.worker
- name: my-app-web
technology: react
dockerfile: Dockerfile
health_check_path: /api/health
domain: example.com
port: 3001Field Reference
| Field | Type | Required / Default | Description |
|---|---|---|---|
| name | string | required | Project name. Used as a prefix for all AWS and GitHub resources. |
| deployment | "ecs" | required | Deployment target. Only 'ecs' is currently supported. |
| ssl | string | required | ARN of the ACM SSL certificate (e.g. arn:aws:acm:us-east-1:123:certificate/abc). |
| slack_webhook_url | string | — | Slack incoming webhook URL for deploy failure notifications. Leave empty to disable. |
| apps | App[] | required | List of applications to deploy. |
| apps[].name | string | required | App name. Used as the ECS service and task definition name. |
| apps[].technology | "nest" | "react" | required | Application technology: 'nest' for NestJS API, 'react' for React/Next.js frontend. |
| apps[].dockerfile | string | required | Path to the Dockerfile relative to the project root. |
| apps[].health_check_path | string | required | HTTP path for ALB health checks (e.g. /health). |
| apps[].domain | string | required | Domain name for this app (e.g. api.example.com). |
| apps[].port | integer | required | Container port the app listens on. |
| apps[].branch | string | main | Git branch that triggers deployment for this app. |
| apps[].template_repo_branch | string | main | Branch of the template repository to use for scaffolding. |
| apps[].postgres | boolean | false | Provision an RDS PostgreSQL instance for this app. |
| apps[].redis | boolean | false | Provision an ElastiCache Redis cluster for this app. |
| apps[].variables | Record<string, string> | {} | Runtime environment variables injected into the ECS task. |
| apps[].build_env | Record<string, string> | {} | Build-time arguments passed to Docker build (e.g. NEXT_PUBLIC_API_HOST). |
| apps[].workers | Worker[] | — | Background worker processes for this app. |
| apps[].workers[].name | string | required | Worker name. Used as the ECS service name. |
| apps[].workers[].dockerfile | string | required | Path to the worker's Dockerfile relative to the project root. |
| apps[].cpu_units | integer | 1024 | CPU units for the ECS task (1024 = 1 vCPU). |
| apps[].memory_units | integer | 2048 | Memory in MB for the ECS task. |
| apps[].db_instance_type | string | — | RDS instance type (e.g. db.t3.small). Only used when postgres is true. |
| apps[].db_allocated_storage | integer | — | RDS storage in GB. Only used when postgres is true. |
| apps[].redis_instance_type | string | — | ElastiCache node type (e.g. cache.t3.small). Only used when redis is true. |