Application Configuration
Application configuration defines a single application's deployment topology. It lives in .greyhound/config.yaml at the root of your repository and tells greyhound what to build, run, expose, and provision for your app.
Configuration File
A greyhound config declares the application name and its component sections:
name: my-app
builds:
- name: api-build
context: .
services:
- name: api
image_from_build: api-build
ports:
- containerPort: 3000
jobs:
- name: migrate
image_from_build: api-build
command: ['node', 'migrate.js']
rules:
- host: api.example.com
service: api
port: 3000
configmaps:
- name: app-config
data:
APP_NAME: my-app
secrets:
- name: api-secrets
type: Opaque
Components
Each section of the config maps to a Kubernetes resource or set of resources that greyhound manages on your behalf:
| Component | Purpose | Docs |
|---|---|---|
| Services | Long-running workloads (API servers, workers, frontends) | Kubernetes Deployments |
| Jobs | Run-to-completion tasks (migrations, seed scripts) | Kubernetes Jobs |
| Builds | Container image builds from source | Depot builds |
| Rules | Ingress routing (host/path to service) | Kubernetes Ingresses |
| ConfigMaps | Non-sensitive key/value configuration | Kubernetes ConfigMaps |
| Secrets | Sensitive values and secret providers | Kubernetes Secrets + CSI |
| Infrastructure | Cloud resources (Aurora databases, IAM roles) | AWS/EKS resources |
| Shared Volumes | Reusable storage across services and jobs | PersistentVolumeClaims |
Component Relationships
Components reference each other by name. greyhound validates these references at parse time:
For example, a service's image_from_build field must match the name of a defined build, and a rule's service field must match the name of a defined service.
Schema Reference
See the App schema for the full configuration reference.